主营:欧姆龙,三菱,安川,Pro-face
作者:
申纯太 谭福生 杨军
上海电气集团股份有限公司中央研究院
挑战:
需要 CompactRIO 同时控制多个设备运动。2 根 5 自由度机械臂运动,头部 1 自由度旋转运动,双主动轮底盘运动控制。CompactRIO 内要部署机械臂运动控制算法,LIDAR 数据采集和导航避障算法,基于编码器和光雷达数据以及 FPGA的移动位置控制算法等。
应用方案:
将机器人的功能进行划分为两部分。将双 5 自由度机械臂运动,头部 1 自由度的旋转运动,双主动轮底盘的运动,光雷达数据采集处理和编码器数据采集,自主导航,轮椅模式切换判断,机器人体表 LED 状态情感或信息显示,电池电源管理等基本行为和设备层控制归为一部分,由“小脑”控制;将家庭智能家居网络交互,其他智能机器人监控,语音识别对话和人脸识别的人机交互功能等归为一部分,由“大脑”控制。
使用的产品:
NI-cRIO9024
cRIO-9113
NI 9403
NI 9205
NI 9264
NI 9485
LabVIEW 2009 RT,FPGA
介绍:
本方案的背景是国家 863 多机器人系统控制项目的一个主角,家居监控机器人,它的设计概念主要是面向未来老年家庭,负责通过网络监控家居环境中的各种家电,具有语音和人脸识别等人机交互功能,具有双机械臂完成一些取物、递送等任务,并且可以作为智能轮椅载人移动。在 2010 世博会沪上生态家案例馆中展出。
正文:
选用 NI CompactRIO作为机器人的“小脑”。NI CompactRIO是美国 NI公司的工业级嵌入式控制器,集成以太网接口和 RS232串行接口,具有体积小,高可靠性,高性能,低功耗等优点。
图 1主控制器Compact RIO 的安装位置
将各种设备的控制算法例如机械臂运动控制,头部运动控制,导航算法,基于以太网的光雷达数据采集,与大脑通讯等程序部署在 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是一个远程控制指令解析状态机,它使用 String Based Queued State Machine 来实现。这样的好处是,可以使用队列来组织动作,较为灵活地实现各种不同组合以及复杂度。
每一个设备的状态机都用一个独立的 vi来封装,并且单独进行测试,这样也有利于工程化。
多状态机的协作:
单个状态机只能完成部分功能,我们需要把所有设备状态机集成起来,按照一定的通讯机制拼装成一个完整的机器人。
由于所有的设备状态机都由一个 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)算法得到环境线段及最小二乘法得到线段参数。在基于线段基础上,得到局部的平直线段和角特征,再与已知平直线段和角特征做匹配,通过平直线段和角匹配算法实时更新机器人位置和姿态。分析里程计定位、平直线段匹配定位和角匹配定位的误差,分配不同的权重得到优化的组合定位算法。
软件控制框图
基于以上的设计,定位导航的软件控制模块设计如图 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为迭代算法,对于 重复上述的算法知道小于阈值T。该算法也有分割过细的时候,如图 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仍旧可以运用很多软件工程方法,使得它具有自己独特的优势。
专注服务于工控领域 7×8小时售后支持
全方位的技术支持 因为专注所以专业