"本方案的背景是国家863多机器人系统控制项目的一个主角,家居监控机器人,它的设计概念主要是面向未来老年家庭,负责通过网络监控家居环境中的各种家电,具有语音和人脸识别等人机交互功能,具有双机械臂完成一些取物、递送等任务,并且可以作为智能轮椅载人移动。在2010世博会沪上生态家案例馆中展出。"
申纯太, 上海电气集团股份有限公司中央研究院
图-1 主控制器Compact RIO的安装位置
挑战:
需要CompactRIO同时控制多个设备运动。2根5自由度机械臂运动,头部1自由度旋转运动,双主动轮底盘运动控制。CompactRIO内要部署机械臂运动控制算法,LIDAR数据采集和导航避障算法,基于编码器和光雷达数据以及FPGA的移动位置控制算法等。
解决方案:
将机器人的功能进行划分为两部分。将双5自由度机械臂运动,头部1自由度的旋转运动,双主动轮底盘的运动,光雷达数据采集处理和编码器数据采集,自主导航,轮椅模式切换判断,机器人体表LED状态情感或信息显示,电池电源管理等基本行为和设备层控制归为一部分,由“小脑”控制;将家庭智能家居网络交互,其他智能机器人监控,语音识别对话和人脸识别的人机交互功能等归为一部分,由“大脑”控制。
选用NI CompactRIO作为机器人的“小脑”。NI CompactRIO是美国NI公司的工业级嵌入式控制器,集成以太网接口和RS232串行接口,具有体积小,高可靠性,高性能,低功耗等优点。
将各种设备的控制算法例如机械臂运动控制,头部运动控制,导航算法,基于以太网的光雷达数据采集,与大脑通讯等程序部署在RT中;将数字信号采集,例如限位开关和紧急停止逻辑还有编码器数据采集和处理,地盘运动伺服控制等算法部署在FPGA中。
选用工业嵌入式触摸平板电脑IPC作为机器人的“大脑”。部署WinCE,具有人机界面功能以及触摸屏交互功能,部署控制人脸识别模块以及语音识别算法,智能家居监控管理算法等。
用FSM来封装每个设备对象:
Finite-state machine (FSM)称为有限状态机广泛用于数字电路和计算机程序。我们使用了两种状态机来封装设备。String Based Queued State Machine基于字符串队列状态机和普通基于枚举的状态机。使用状态机作为一种机制来处理单个设备的状态转换,或者说,用状态机这种行为模型来用于单个设备的事件处理。
图 2 LIDAR 状态机
例如光雷达的状态机框图,它具有4个状态,Idle,Start,Running,Stop。在Running状态中,程序不断向光雷达发送指令读取数据,然后由一个Shared Variable来传出数据。使用一个LIRAR.vi来封装这个状态机。
图 3 Remote Control Reaction 状态机
图3是一个远程控制指令解析状态机,它使用String Based Queued State Machine来实现。这样的好处是,可以使用队列来组织动作,较为灵活地实现各种不同组合以及复杂度。
每一个设备的状态机都用一个独立的vi来封装,并且单独进行测试,这样也有利于工程化。
[DividePage:NextPage]
多状态机的协作:
单个状态机只能完成部分功能,我们需要把所有设备状态机集成起来,按照一定的通讯机制拼装成一个完整的机器人。
由于所有的设备状态机都由一个VI来封装,只需要把他们拖入一个主vi中,就能调用他们。如图所示:
图 4 状态机集成
状态机之间是通过Shared Variable来实现接受外部指令输入以及自身状态输出的。同样,这些Shared Variable都用一个VI进行封装以便进行管理。
这样,一个状态机便可视为一个子系统。既然是系统,自然有系统的输入和输出,通过get,set等方法的vi,外部系统便可对这些子系统进行操作或者交互。如图所示,底盘状态机使用getCommand.vi方法获取外部命令。
图 5 getCommand.vi
使用setCommand.vi方法让外部系统传输命令给地盘状态机。
图6 MobileBase.lvlib:setCommand.vi
底盘使用sendState.vi发送底盘状态机状态信息。如图所示:
图 7 MobileBase.lvlib.sendState.vi
使用getState.vi方法获取地盘状态机信息。
图 8 getState.vi
导航算法:
图 9家居监控机器人定位导航软件控制框图
总体设计
针对移动机器人家居环境下的定位问题,提出了一种结合平直线段匹配、角匹配和里程计的组合定位方法。该系统采用了Labview开发平台和CompactRIO控制器,得到了很好的实时性效果。机器人首先通过二维激光测距仪通过TCP/IP得到环境点信息,然后通过迭代适应点(IEPF)算法得到环境线段及最小二乘法得到线段参数。在基于线段基础上,得到局部的平直线段和角特征,再与已知平直线段和角特征做匹配,通过平直线段和角匹配算法实时更新机器人位置和姿态。分析里程计定位、平直线段匹配定位和角匹配定位的误差,分配不同的权重得到优化的组合定位算法。
[DividePage:NextPage]
软件控制框图
基于以上的设计,定位导航的软件控制模块设计如图7所示。中心模块为定位导航模块,该模块读取起点、目标点、运动模式数据及编码器数据,同时读取激光测距仪数据提取角、平直线段特征和已知特征做匹配,其匹配算法输出机器人位姿 。对于给定的目标位姿,该模块将计算出驱动指令(Forward Speed、Delta angle、Turnspd Right、Turnspd Left对应前进速度、方向转角、左转、右转)和状态信息如(bPos, bAngle)来判断机器人是否到达目标位置和姿态。
图 10家居监控机器人定位导航的输入输出信息部分
图10为定位导航模块部分的输入输出部分,上半部分的输入信息中的已知角特征和全局线段为为已知地图信息,下半部分的部分输出信息包括直线段提取示意图,路径任务数组信息图,实时显示的机器人当前位置信息、速度信息等。
线段特征提取
为得到环境的几何线段信息,需要对激光测距仪的点集进行分割,其分割算法可分为下列步骤:坐标变换、区域分割、IEPF线段提取和最小二乘法计算线段参数。其中区域分割:从初始点i=0开始检测两相邻点 和 的距离,如距离值小于阈值D,则认为属于同一区域点集,否则开始一个新的区域。该过程遍历所有点集。如果某区域点数目小于4个,则认为噪声区域,舍弃这些噪声点。
图 11 IEPF线段提取
IEPF提取线段:对于上述得到区域可能含有多条线段,IEPF线段提取算法是一种有效的线段提取方法。如图11所示, Pm点到线段PsPe的距离大于阈值T,该方法把点集
分为和
IEPF为迭代算法,对于 和 重复上述的算法知道 小于阈值 。该算法也有分割过细的时候,如图9右半部中间两条线段可通过检查线段参数的办法,对于斜率倾角误差小于一定阈值的线段加以合并处理。线段参数可通过最小二乘法计算求得。
如图12所示为通过Labview实现的IEPF算法的区域分割算法,其中子VI 为IEPF算法分割出的子区域。
图 12 包含IEPF算法的区域分割算法
具体组合定位算法可参考作者的另一篇发表在IEEE ICIA2010题为《A Corner and Straight line Matching Localization Method for Family Indoor Monitor Mobile Robot》的论文。
原型机照片:
图 13家居监控机器人在世博沪上生态家
总结:
使用CompactRIO作为机器人主控制器配有集成的FPGA的支持,具有性能优越,体积小,安全可靠,低功耗等特点,并且,数据采集能力和通讯能力强大,非常适合移动机器人的原型开发。
可以基于LabVIEW来开发机器人程序,相比字符代码程序,图形G语言程序可以用图形来阅读,有利于理解和调试,再者LabVIEW仍旧可以运用很多软件工程方法,使得它具有自己独特的优势。
作者:
申 纯太 - 上海电气集团股份有限公司中央研究院
谭 福生 - 上海电气集团股份有限公司中央研究院
杨 军 - 上海电气集团股份有限公司中央研究院
Yang Jun - Shanghai Electric Group Co., Ltd. Central Academe
Shen Chuntai - Shanghai Electric Group Co., Ltd. Central Academe
Tan Fusheng - Shanghai Electric Group Co., Ltd. Central Academe
声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。本站部分作品是由网友自主投稿和发布、编辑整理上传,对此类作品本站仅提供交流平台,不为其版权负责。如果您发现网站上所用视频、图片、文字如涉及作品版权问题,请第一时间告知,我们将根据您提供的证明材料确认版权并按国家标准支付稿酬或立即删除内容,以保证您的权益!联系电话:010-58612588 或 Email:editor@mmsonline.com.cn。
- 暂无反馈