当前位置:首页 > 智能硬件 > 人工智能AI
[导读] 选用NI CompactRIO作为机器人的“小脑”。NI CompactRIO是美国NI公司的工业级嵌入式控制器,集成以太网接口和RS232串行接口,具有体积小,高可靠性

选用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来封装,并且单独进行测试,这样也有利于工程化。

多状态机的协作:

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

由于所有的设备状态机都由一个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家居监控机器人定位导航软件控制框图

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭