基于CompactRIO的家居监控机器人

人工智能

629人已加入

描述

选用NI CompactRIO作为机器人的“小脑”。NI CompactRIO是美国NI公司的工业级嵌入式控制器,集成以太网接口和RS232串行接口,具有体积小,高可靠性,高性能,低功耗等优点。

将各种设备的控制算法例如机械臂运动控制,头部运动控制,导航算法,基于以太网的光雷达数据采集,与大脑通讯等程序部署在RT中;将数字信号采集,例如限位开关和紧急停止逻辑还有编码器数据采集和处理,地盘运动伺服控制等算法部署在FPGA中。

选用工业嵌入式触摸平板电脑IPC作为机器人的“大脑”。部署WinCE,具有人机界面功能以及触摸屏交互功能,部署控制人脸识别模块以及语音识别算法,智能家居监控管理算法等。

用FSM来封装每个设备对象:

Finite-state machine (FSM)称为有限状态机广泛用于数字电路和计算机程序。我们使用了两种状态机来封装设备。String Based Queued State Machine基于字符串队列状态机和普通基于枚举的状态机。使用状态机作为一种机制来处理单个设备的状态转换,或者说,用状态机这种行为模型来用于单个设备的事件处理。

FPGA

 

图 2 LIDAR 状态机

例如光雷达的状态机框图,它具有4个状态,Idle,Start,Running,Stop。在Running状态中,程序不断向光雷达发送指令读取数据,然后由一个Shared Variable来传出数据。使用一个LIRAR.vi来封装这个状态机。

FPGA

 

图 3 Remote Control Reaction 状态机

图3是一个远程控制指令解析状态机,它使用String Based Queued State Machine来实现。这样的好处是,可以使用队列来组织动作,较为灵活地实现各种不同组合以及复杂度。

每一个设备的状态机都用一个独立的vi来封装,并且单独进行测试,这样也有利于工程化。

多状态机的协作:

单个状态机只能完成部分功能,我们需要把所有设备状态机集成起来,按照一定的通讯机制拼装成一个完整的机器人。

由于所有的设备状态机都由一个VI来封装,只需要把他们拖入一个主vi中,就能调用他们。如图所示:

FPGA

 

图 4状态机集成

状态机之间是通过Shared Variable来实现接受外部指令输入以及自身状态输出的。同样,这些Shared Variable都用一个VI进行封装以便进行管理。

这样,一个状态机便可视为一个子系统。既然是系统,自然有系统的输入和输出,通过get,set等方法的vi,外部系统便可对这些子系统进行操作或者交互。如图所示,底盘状态机使用getCommand.vi方法获取外部命令。

FPGA

 

图 5 getCommand.vi

使用setCommand.vi方法让外部系统传输命令给地盘状态机。

FPGA

图6 MobileBase.lvlib:setCommand.vi

底盘使用sendState.vi发送底盘状态机状态信息。如图所示:

FPGA

图 7 MobileBase.lvlib.sendState.vi

使用getState.vi方法获取地盘状态机信息。

FPGA

图 8 getState.vi

导航算法:

FPGA

图 9家居监控机器人定位导航软件控制框图

总体设计

针对移动机器人家居环境下的定位问题,提出了一种结合平直线段匹配、角匹配和里程计的组合定位方法。该系统采用了Labview开发平台和CompactRIO控制器,得到了很好的实时性效果。机器人首先通过二维激光测距仪通过TCP/IP得到环境点信息,然后通过迭代适应点(IEPF)算法得到环境线段及最小二乘法得到线段参数。在基于线段基础上,得到局部的平直线段和角特征,再与已知平直线段和角特征做匹配,通过平直线段和角匹配算法实时更新机器人位置和姿态。分析里程计定位、平直线段匹配定位和角匹配定位的误差,分配不同的权重得到优化的组合定位算法。

软件控制框图

基于以上的设计,定位导航的软件控制模块设计如图7所示。中心模块为定位导航模块,该模块读取起点、目标点、运动模式数据及编码器数据,同时读取激光测距仪数据提取角、平直线段特征和已知特征做匹配,其匹配算法输出机器人位姿 。对于给定的目标位姿,该模块将计算出驱动指令(Forward Speed、Delta angle、Turnspd Right、Turnspd Left对应前进速度、方向转角、左转、右转)和状态信息如(bPos, bAngle)来判断机器人是否到达目标位置和姿态。

FPGA

图 10家居监控机器人定位导航的输入输出信息部分

图10为定位导航模块部分的输入输出部分,上半部分的输入信息中的已知角特征和全局线段为为已知地图信息,下半部分的部分输出信息包括直线段提取示意图,路径任务数组信息图,实时显示的机器人当前位置信息、速度信息等。

线段特征提取

为得到环境的几何线段信息,需要对激光测距仪的点集进行分割,其分割算法可分为下列步骤:坐标变换、区域分割、IEPF线段提取和最小二乘法计算线段参数。其中区域分割:从初始点i=0开始检测两相邻点

的距离,如距离值小于阈值D,则认为属于同一区域点集,否则开始一个新的区域。该过程遍历所有点集。如果某区域点数目小于4个,则认为噪声区域,舍弃这些噪声点。

FPGA

图 11 IEPF线段提取

FPGA

 

FPGA

图 12 包含IEPF算法的区域分割算法

具体组合定位算法可参考作者的另一篇发表在IEEE ICIA2010题为《A Corner and Straight line Matching Localization Method for Family Indoor Monitor Mobile Robot》的论文。

原型机照片:

图 13家居监控机器人在世博沪上生态家

总结:

使用CompactRIO作为机器人主控制器配有集成的FPGA的支持,具有性能优越,体积小,安全可靠,低功耗等特点,并且,数据采集能力和通讯能力强大,非常适合移动机器人的原型开发。

可以基于LabVIEW来开发机器人程序,相比字符代码程序,图形G语言程序可以用图形来阅读,有利于理解和调试,再者LabVIEW仍旧可以运用很多软件工程方法,使得它具有自己独特的优势。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分