这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
ideas:kinect_arduino [2015/12/24 15:22] gdw |
ideas:kinect_arduino [2015/12/24 22:34] (当前版本) gdw |
||
---|---|---|---|
行 8: | 行 8: | ||
结束 | 结束 | ||
+ | |||
{{:ideas:k6.jpg?200|}} | {{:ideas:k6.jpg?200|}} | ||
+ | |||
电源,arduino uno,机械臂 | 电源,arduino uno,机械臂 | ||
+ | |||
+ | |||
{{:ideas:k7.jpg?200|}} | {{:ideas:k7.jpg?200|}} | ||
+ | |||
kinect for windows | kinect for windows | ||
- | {{:ideas:k8.jpg?200 |}} | + | |
+ | {{:ideas:k8.jpg|}} | ||
kinect演示界面 | kinect演示界面 | ||
行 50: | 行 57: | ||
1.Arduino端 | 1.Arduino端 | ||
Arduino的主要目的是接收来自Kinect(通过串口通信实现,在后面说明)的数据,并向舵机发出信号旋转相应的角度。这个程序需要对接收到的数据进行分类判断,哪一条是控制大臂舵机的,哪一条是控制小臂舵机的。至于如何实现,Arduino的IDE提供了很多String的例子。我们要把接收到的每一条指令先进行预处理,在根据情况进行操作,下面是个简单的例子: | Arduino的主要目的是接收来自Kinect(通过串口通信实现,在后面说明)的数据,并向舵机发出信号旋转相应的角度。这个程序需要对接收到的数据进行分类判断,哪一条是控制大臂舵机的,哪一条是控制小臂舵机的。至于如何实现,Arduino的IDE提供了很多String的例子。我们要把接收到的每一条指令先进行预处理,在根据情况进行操作,下面是个简单的例子: | ||
+ | <code c> | ||
Servo servoA; //舵机对象 | Servo servoA; //舵机对象 | ||
boolean readCompleted = false;//是否完成读取串口数据 | boolean readCompleted = false;//是否完成读取串口数据 | ||
行 88: | 行 95: | ||
} | } | ||
} | } | ||
+ | </code> | ||
这个例子演示了如何从串口接收数据并且控制舵机。当然还有很多因素需要考虑,比如舵机的旋转限制,数据与舵机编号的对应等等。对String进行预处理的方法可以参考IDE给出的例子,里面写的很详细,而且功能也完全够用。 | 这个例子演示了如何从串口接收数据并且控制舵机。当然还有很多因素需要考虑,比如舵机的旋转限制,数据与舵机编号的对应等等。对String进行预处理的方法可以参考IDE给出的例子,里面写的很详细,而且功能也完全够用。 | ||
在上面那层有一些错误,应该是这样的 | 在上面那层有一些错误,应该是这样的 | ||
+ | <code c> | ||
if(readCompleted)//判断串口是否接收到数据并完成读取 | if(readCompleted)//判断串口是否接收到数据并完成读取 | ||
{ | { | ||
行 99: | 行 107: | ||
readCompleted = false;//标示读取未完成,以进行下一次读取 | readCompleted = false;//标示读取未完成,以进行下一次读取 | ||
} | } | ||
+ | </code> | ||
2.Kinect端 | 2.Kinect端 | ||
Kinect端的程序用Kinect SDK for Windows的例子上加以修改的,其主要功能是取得骨骼关键点(也就是关节)的数据,并进行一系列计算,计算出每一个舵机需要旋转的角度,并通过串口发送给Arduino。 | Kinect端的程序用Kinect SDK for Windows的例子上加以修改的,其主要功能是取得骨骼关键点(也就是关节)的数据,并进行一系列计算,计算出每一个舵机需要旋转的角度,并通过串口发送给Arduino。 |