利用Kinect对Nao机器人进行远程控制(一)



Nao机器人远程控制

           由于最近在研究如何利用Kinect对Nao机器人进行远程控制,所以写下这篇博客和大家交流。首先,考虑到微软开发的Kinect能够捕捉人体的深度信息,进而转换成骨骼信息,供给我们去利用相应信息,实现用肢体与其他的设备进行交互,比如体感游戏(切水果等)、三维动画电影的制作(阿凡达等)、广告制作等。这给我们充分的想象空间可以实现很多应用。同时,本人所在的课题组也在做脑电的相关研究,其中实现控制效果所用的机器人是Nao机器人,由于该机器人外形小巧可爱,提供的控制接口丰富,平台语言等兼容效果较好,属于类人型机器人,所以我们考虑可否用Kinect捕获的人体动作数据区远程的操控Nao机器人的动作,进而实现其他的应用(智能家庭、医疗服务系统)。下面是我目前设计以及实现中遇到的问题,希望大家有相关经验或想法的人能够给予一定的批评改正意见。


1. Nao机器人远程控制规划:

       在做相应的具体实现之前提前做了一个粗略的研究草图,这样对进度的可以一目了然的知晓。研究草图如下:



上面的内容就不做特别多的解释了,图上显示了整个系统的大概流程。


2.Nao机器人实验中遇到的问题总结

       在上面流程图的指示下,搭建了初步的仿真系统,VS2010+Kinect+Webots(Nao的仿真软件),然后进行初步的实验,效果目前不是很理想,得到的一幅目前的效果图如下:


这是上周做的实验结果,按照操作步骤进行了简单的尝试,主要控制左臂肩关节和脖子的关节共四个通道(自由度)的动作。从实验结果来看,动作差别是很大的,完全不是想象的结果,说明试验中的一些步骤出现了错误,下面我将本实验的步骤和问题进行详细的总结。

a)        利用Kinect获取人体运动数据,并整合到系统中,本部已经实现,可以提供动作的位置、方向信息。其中方向信息的表示方式是四元数或者旋转矩阵,可以提供针对绝对旋转和相对旋转两种坐标形式。

b)       Kinect获取到的数据进行转换,转换成nao需要的欧拉角数据。本部分提供的方法有两种,一种是从四元数转换成欧拉角或者是从旋转矩阵转换到欧拉角。目前比较常用的是四元数转换成欧拉角方式,所以采用这种方式进行处理。

c)        进行坐标系的转换,由于Kinect的坐标系和Nao的各关节的坐标系不是对应的,所以这部分工作也需要重新梳理。这步暂时未加验证,本人理解并不一定是完全正确的。

d)       骨骼关节通道的映射。由于Kinect关节是20个,60个自由度;而Nao15关节,24个自由度,两者的对应关系是急需解决的问题,这决定运动的真实程度。本实验暂时采取丢弃Nao不含有的Kinect通道数据原则进行处理。这样的处理从目前的效果来看,并不是十分的合理,所以需要尝试新的方法,有大牛给知道一下就好了快哭了

e)        数据范围的约束处理;由于Nao的每个自由度都是有运动范围的,当我们给的动作超过了Nao运动的最大范围时,Nao机器人会出现摔倒或死机的问题。所以针对这方面问题我们目前采取的方法是,当运动范围超出Nao的运动范围,将超过的数据截取到最大范围处。

f)        动作的控制。从上面处理步骤后,我们把得到的数据赋给Nao机器人时,有一个问题是,Nao机器人的控制方案有多种,有目标位置控制,指定行为控制等等,但是我们需要的是用角度去控制动作。Nao提供的接口是setAngles(每帧针对初始动作做动作,控制比较慢)和changeAngles(控制动作比较快,但会出现累计误差)。两者的选取关系到动作处理效果。目前做实验阶段采用的是前一个。

g)       动作延时的控制。由于需要做循环控制,目前时间的控制由sleep(没有这个函数,Nao的控制会失效)函数控制,这个函数设置的时间过短,Nao的控制也会失灵。所以这也是后续要考虑的问题。目前采用的是1s


真心希望有大牛能够看到我的文章,对本渣渣给予指点,我也会不断更新进度,与大家一起交流学习~





评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值