美章网 资料文库 简单手势控制的机器人设计范文

简单手势控制的机器人设计范文

本站小编为你精心准备了简单手势控制的机器人设计参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。

简单手势控制的机器人设计

《黑龙江科技信息杂志》2014年第二十期

1设计方法

首先获得Wiimote控制器中加速度计的数据。收到这些数据后,采用三次样条插值理论将它转换成我们在程序中使用的姿态数据。然后,判断程序的当前模式是训练模式还是控制模式,为训练模式时,该数据被存储在存储器中作为训练数据;为控制模式时,数据发送给识别器,通过以前训练的姿态数据来识别它代表的当前姿态。如果用户认为训练数据不够,还可以在任何时候切换为训练模式。手势被识别后,其关联命令即会发送给机器人执行。

1.1加速度数据。正如上面的讨论,收集的Wiimote的数据通过蓝牙传输。为此使用CWiid帮助连接到遥控器手柄从而得到按钮和加速度传感器的状态。该加速度计给出一个包含三个值的数据点。这些值的范围从0到255,三个数值分别代表图1中所示不同的轴。得到的Wiimote数据会随着姿势的变化不断改变。

1.2数据归一化。当从Wiimote获得数据后,对其进行处理并加入到训练集或进行手势识别。因为不同手势所持续的时间不同,必须统一他们,使其持续时间大小固定且独立。为次,数据进行时间归一化处理,用三个长度为250的数组存储加速度传感器的数据。

1.3训练。首先应该按下Wiimote的按钮1选择进入训练模式。然后,通过四个方向键中的其中一个下达移动命令。最后按下的方向按钮为想要训练的移动方向。为了记录手势,应该在按下按钮A的同时完成手势,然后松开按钮A。这样一来,发送的数据点将被存储为一个手势。

1.4控制。控制机器人时数据的获取与训练时一样,唯一不同的是应该先按下按钮2切换到控制模式。接收到数据后,识别器会识别出当前动作。

1.4.1识别器。对于识别器,采用K最邻近节点算法(KNN)。首先根据数据的时间将数据划分为250个阶段,编号从0到249,在每一个时间段中,都需要判断数值所代表的动作并将其分组,总共为四组,分为上,下,左,右。识别手势时,对于250个时间段,都使用KNN算法将其中数据分组。最终,选择其中最常见的组点作为识别出的姿态。

1.4.2机器人控制。识别阶段完成后,与手势相关联的命令被发送到机器人。机器人控制器是使用libplayerc++库实现的。运动方向控制是通过调用SetSpeed(XSpeed,YSpeed)函数。将与手势的关联定义如下:向上-前进(y方向速度为0)向下-后退(y方向速度为0)向右-右转(x方向速度为0)向左-左转(x方向速度为0)在此控制模型中,每当用户做出可被识别的手势,机器人就会做相关联的动作。按下B键,用户暂停机器人,按下Home键可以结束控制,并停止机器人。

2结论

在这个项目中,我们发现,使用Wiimote实现机器人体感控制是可行的,其中我们使用的是简单算法KNN。廉价的硬件和简单的算法可以帮助改善人与机器人之间的沟通。使用手势控制机器人是非常直观的,在今后的工作中,研究重点应该在使用其他分类算法来实现更复杂的手势控制。

作者:倪欣高昌单位:东北林业大学