Kinect for Windows培训营:自平衡机器人项目作者访谈

在微软的Kinect for Windows全国培训营上,除了能了解到Kinect关键技术及交互设计特性,还能看到一些互动项目的展示,其中比较引人注目的是一个Kinect控制的机器人,它能根据控制者的身体动作通过光发射模块遥控控制机器人的运行,InfoQ和作者黄涌进行了简单交流。

InfoQ:请首先做下自我介绍并向大家介绍下机器人项目的背景??

黄涌:我叫黄涌,目前就读于中国科学院半导体研究所,是中国电机工程学会会员。在微软开展的“码”上Kinect——Kinect for Windows全国巡回培训及挑战赛活动中担任技术支持一职,主要负责向开发人员介绍Kinect开发基础知识以及全球同步发布的SDK V1.7中的最新技术——Kinect Interactions、Kinect Fusion等,帮助解决开发人员在应用开发中所面临的问题,并提供相关的解决方案。

我的这个项目研究基于景深图像的人体骨骼跟踪算法,并使用微软Kincet for Windows sensor和Kinect for Windows SDK V1.6组件实现了这一算法。由Kinect摄像头负责采样景深及RGB摄像头数据,通过USB2.0传送给PC机,PC机通过深度图像局域梯度特征跟踪人体骨骼节点,根据骨骼节点信息,比对人体姿态库,将体感信息转换为控制命令,给光发射模块。光发射模块调制光信息,光接收模块接收后将光信号转换为电信号,然后通过UART与下位机建立连接,完成数据传递。下位机上MCU解析命令,控制两轮自平衡机器人完成相应的技术动作。整体结构流程图如下:

InfoQ:为什么会想到用Kinect for Windows做开发?

黄涌:原来参加过智能汽车竞赛,我是摄像头组的,所以对机器视觉非常感兴趣,同时自己也想弄个测距的项目,Kinect正好恰和研究之意,所以就用它来开发了,没想到一开发起来,觉得真的非常强大。

InfoQ:简单谈下这个项目的设计思路?

黄涌: 上位机软件设计是本次设计思路的核心,本次设计使用Visual Studio 2010 编译环境、Kinect for Windows SDK V1.6组件,所有程序代码使用C#语言编写。主要包括三个部分:
(1)深度图像局域梯度特征的人体骨骼跟踪算法,主要完成根据Kinect传送到PC机的深度图像,计算出每帧图片的骨骼节点空间坐标,完成对人体骨骼节点的跟踪;
(2)骨骼信息识别,由骨骼节点信息与人体姿态库比对,产生相应的控制命令;
(3)PC与下位机通信,完成通信功能。
程序执行流程如下:
Kinect for Windows培训营:自平衡机器人项目作者访谈_第1张图片
光通信的硬件设计与信息调制,采用LED可见光传输技术发出高速明暗闪烁的讯号,以无线方式来传输数据。通过对频率的调制,发出特定的编码信号,接收方利用光电敏感器件接收调制光,解调后还原成数据信号,然后将命令传输给机器人。上位机与单片机之间以帧为单位完成数据通信,控制命令的帧格式0X0A+控制命令(8位)+0X05。

InfoQ:你觉得这个项目创新在哪些方面?

黄涌:主要在这几个方面:
1. 控制上,应用3D摄像头识别人体骨骼,将身体动作与机器人运行状态联系起来让人机交互更加自然,增强人体行为真实感觉,而且可以便于不同人群使用。
2. 简化人机交互方式,使用更加自然的交互方式,具有替代传统遥控、鼠标、键盘等传统人机交互工具的功能。
3. 通信上,采用可见光通信方式,节约能源,无电磁辐射,不需要采用另外的传输介质,可应用于多种场合。

InfoQ:下一步有哪些后续开发计划?是否会将设计方案开源?

黄涌:下一步想做Kinect控制的类人机器人,能够实时模仿人类动作;其二引入可见光通信,搭配照明平台;其三,设计由Kinect控制的多玩家赛车对抗游戏。设计方案会适时开源的,大家多交流才会更好的进步嘛。

你可能感兴趣的:(Kinect for Windows培训营:自平衡机器人项目作者访谈)