基于CompactRIO的家居監(jiān)控機(jī)器人
選用NI CompactRIO作為機(jī)器人的“小腦”。NI CompactRIO是美國NI公司的工業(yè)級(jí)嵌入式控制器,集成以太網(wǎng)接口和RS232串行接口,具有體積小,高可靠性,高性能,低功耗等優(yōu)點(diǎn)。
將各種設(shè)備的控制算法例如機(jī)械臂運(yùn)動(dòng)控制,頭部運(yùn)動(dòng)控制,導(dǎo)航算法,基于以太網(wǎng)的光雷達(dá)數(shù)據(jù)采集,與大腦通訊等程序部署在RT中;將數(shù)字信號(hào)采集,例如限位開關(guān)和緊急停止邏輯還有編碼器數(shù)據(jù)采集和處理,地盤運(yùn)動(dòng)伺服控制等算法部署在FPGA中。
選用工業(yè)嵌入式觸摸平板電腦IPC作為機(jī)器人的“大腦”。部署WinCE,具有人機(jī)界面功能以及觸摸屏交互功能,部署控制人臉識(shí)別模塊以及語音識(shí)別算法,智能家居監(jiān)控管理算法等。
用FSM來封裝每個(gè)設(shè)備對(duì)象:
Finite-state machine (FSM)稱為有限狀態(tài)機(jī)廣泛用于數(shù)字電路和計(jì)算機(jī)程序。我們使用了兩種狀態(tài)機(jī)來封裝設(shè)備。String Based Queued State Machine基于字符串隊(duì)列狀態(tài)機(jī)和普通基于枚舉的狀態(tài)機(jī)。使用狀態(tài)機(jī)作為一種機(jī)制來處理單個(gè)設(shè)備的狀態(tài)轉(zhuǎn)換,或者說,用狀態(tài)機(jī)這種行為模型來用于單個(gè)設(shè)備的事件處理。
圖 2 LIDAR 狀態(tài)機(jī)
例如光雷達(dá)的狀態(tài)機(jī)框圖,它具有4個(gè)狀態(tài),Idle,Start,Running,Stop。在Running狀態(tài)中,程序不斷向光雷達(dá)發(fā)送指令讀取數(shù)據(jù),然后由一個(gè)Shared Variable來傳出數(shù)據(jù)。使用一個(gè)LIRAR.vi來封裝這個(gè)狀態(tài)機(jī)。
圖 3 Remote Control ReacTIon 狀態(tài)機(jī)
圖3是一個(gè)遠(yuǎn)程控制指令解析狀態(tài)機(jī),它使用String Based Queued State Machine來實(shí)現(xiàn)。這樣的好處是,可以使用隊(duì)列來組織動(dòng)作,較為靈活地實(shí)現(xiàn)各種不同組合以及復(fù)雜度。
每一個(gè)設(shè)備的狀態(tài)機(jī)都用一個(gè)獨(dú)立的vi來封裝,并且單獨(dú)進(jìn)行測試,這樣也有利于工程化。
多狀態(tài)機(jī)的協(xié)作:
單個(gè)狀態(tài)機(jī)只能完成部分功能,我們需要把所有設(shè)備狀態(tài)機(jī)集成起來,按照一定的通訊機(jī)制拼裝成一個(gè)完整的機(jī)器人。
由于所有的設(shè)備狀態(tài)機(jī)都由一個(gè)VI來封裝,只需要把他們拖入一個(gè)主vi中,就能調(diào)用他們。如圖所示:
圖 4狀態(tài)機(jī)集成
狀態(tài)機(jī)之間是通過Shared Variable來實(shí)現(xiàn)接受外部指令輸入以及自身狀態(tài)輸出的。同樣,這些Shared Variable都用一個(gè)VI進(jìn)行封裝以便進(jìn)行管理。
這樣,一個(gè)狀態(tài)機(jī)便可視為一個(gè)子系統(tǒng)。既然是系統(tǒng),自然有系統(tǒng)的輸入和輸出,通過get,set等方法的vi,外部系統(tǒng)便可對(duì)這些子系統(tǒng)進(jìn)行操作或者交互。如圖所示,底盤狀態(tài)機(jī)使用getCommand.vi方法獲取外部命令。
圖 5 getCommand.vi
使用setCommand.vi方法讓外部系統(tǒng)傳輸命令給地盤狀態(tài)機(jī)。
圖6 MobileBase.lvlib:setCommand.vi
底盤使用sendState.vi發(fā)送底盤狀態(tài)機(jī)狀態(tài)信息。如圖所示:
圖 7 MobileBase.lvlib.sendState.vi
使用getState.vi方法獲取地盤狀態(tài)機(jī)信息。
圖 8 getState.vi
導(dǎo)航算法:
圖 9家居監(jiān)控機(jī)器人定位導(dǎo)航軟件控制框圖