LabVIEW開發(fā)家居監(jiān)控機(jī)器人LabVIEW開發(fā)家居監(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)行測(cè)試,這樣也有利于工程化。
多狀態(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 Base.lvlib:setCommand.vi
底盤使用sendState.vi發(fā)送底盤狀態(tài)機(jī)狀態(tài)信息。如圖所示:
圖 7 Base.lvlib.sendState.vi
使用getState.vi方法獲取地盤狀態(tài)機(jī)信息。
圖 8 getState.vi
導(dǎo)航算法:
圖 9家居監(jiān)控機(jī)器人定位導(dǎo)航軟件控制框圖
總體設(shè)計(jì)
針對(duì)移動(dòng)機(jī)器人家居環(huán)境下的定位問題,提出了一種結(jié)合平直線段匹配、角匹配和里程計(jì)的組合定位方法。該系統(tǒng)采用了Labview開發(fā)平臺(tái)和CompactRIO控制器,得到了很好的實(shí)時(shí)性效果。機(jī)器人首先通過二維激光測(cè)距儀通過TCP/IP得到環(huán)境點(diǎn)信息,然后通過迭代適應(yīng)點(diǎn)(IEPF)算法得到環(huán)境線段及zui小二乘法得到線段參數(shù)。在基于線段基礎(chǔ)上,得到局部的平直線段和角特征,再與已知平直線段和角特征做匹配,通過平直線段和角匹配算法實(shí)時(shí)更新機(jī)器人位置和姿態(tài)。分析里程計(jì)定位、平直線段匹配定位和角匹配定位的誤差,分配不同的權(quán)重得到優(yōu)化的組合定位算法。
軟件控制框圖
基于以上的設(shè)計(jì),定位導(dǎo)航的軟件控制模塊設(shè)計(jì)如圖7所示。中心模塊為定位導(dǎo)航模塊,該模塊讀取起點(diǎn)、目標(biāo)點(diǎn)、運(yùn)動(dòng)模式數(shù)據(jù)及編碼器數(shù)據(jù),同時(shí)讀取激光測(cè)距儀數(shù)據(jù)提取角、平直線段特征和已知特征做匹配,其匹配算法輸出機(jī)器人位姿 。對(duì)于給定的目標(biāo)位姿,該模塊將計(jì)算出驅(qū)動(dòng)指令(Forward Speed、Delta angle、Turnspd Right、Turnspd Left對(duì)應(yīng)前進(jìn)速度、方向轉(zhuǎn)角、左轉(zhuǎn)、右轉(zhuǎn))和狀態(tài)信息如(bPos, bAngle)來判斷機(jī)器人是否到達(dá)目標(biāo)位置和姿態(tài)。
圖 10家居監(jiān)控機(jī)器人定位導(dǎo)航的輸入輸出信息部分
圖10為定位導(dǎo)航模塊部分的輸入輸出部分,上半部分的輸入信息中的已知角特征和全局線段為為已知地圖信息,下半部分的部分輸出信息包括直線段提取示意圖,路徑任務(wù)數(shù)組信息圖,實(shí)時(shí)顯示的機(jī)器人當(dāng)前位置信息、速度信息等。
線段特征提取
為得到環(huán)境的幾何線段信息,需要對(duì)激光測(cè)距儀的點(diǎn)集進(jìn)行分割,其分割算法可分為下列步驟:坐標(biāo)變換、區(qū)域分割、IEPF線段提取和zui小二乘法計(jì)算線段參數(shù)。其中區(qū)域分割:從初始點(diǎn)i=0開始檢測(cè)兩相鄰點(diǎn) 和
的距離,如距離值小于閾值D,則認(rèn)為屬于同一區(qū)域點(diǎn)集,否則開始一個(gè)新的區(qū)域。該過程遍歷所有點(diǎn)集。如果某區(qū)域點(diǎn)數(shù)目小于4個(gè),則認(rèn)為噪聲區(qū)域,舍棄這些噪聲點(diǎn)。
圖 11 IEPF線段提取
IEPF提取線段:對(duì)于上述得到區(qū)域可能含有多條線段,IEPF線段提取算法是一種有效的線段提取方法。如圖11所示, Pm點(diǎn)到線段PsPe的距離大于閾值T,該方法把點(diǎn)集
分為
和
IEPF為迭代算法,對(duì)于 和
重復(fù)上述的算法知道
小于閾值
。該算法也有分割過細(xì)的時(shí)候,如圖9右半部中間兩條線段可通過檢查線段參數(shù)的辦法,對(duì)于斜率傾角誤差小于一定閾值的線段加以合并處理。線段參數(shù)可通過zui小二乘法計(jì)算求得。
如圖12所示為通過Labview實(shí)現(xiàn)的IEPF算法的區(qū)域分割算法,其中子VI 為IEPF算法分割出的子區(qū)域。
圖 12 包含IEPF算法的區(qū)域分割算法
具體組合定位算法可參考作者的另一篇發(fā)表在IEEE ICIA2010題為《A Corner and Straight line Matching Localization Method for Family Indoor Monitor Robot》的論文。
原型機(jī)照片:
圖 13家居監(jiān)控機(jī)器人在世博滬上生態(tài)家
總結(jié):
使用CompactRIO作為機(jī)器人主控制器配有集成的FPGA的支持,具有性能*,體積小,安全可靠,低功耗等特點(diǎn),并且,數(shù)據(jù)采集能力和通訊能力強(qiáng)大,非常適合移動(dòng)機(jī)器人的原型開發(fā)。
我們開業(yè)語言以LabVIEW為主,在硬件選型方面也積累了豐富的經(jīng)驗(yàn),同時(shí)我們也具備獨(dú)立的硬件開發(fā)及機(jī)械設(shè)計(jì)與加工能力,可以制作、加工非標(biāo)設(shè)備,滿足個(gè)性化的需求。"術(shù)業(yè)有專攻",每個(gè)人都有自己zui擅長(zhǎng)的領(lǐng)域。把這些工作交給我們,使您有精力做科研,這應(yīng)該是一個(gè)雙贏的局面。
服務(wù)領(lǐng)域涵蓋:
LabVIEW 編程 開發(fā)
LabVIEW作為圖形化編程語言,近幾年發(fā)展迅速,它具備開發(fā)快、可靠性高等特點(diǎn),非常適合測(cè)控領(lǐng)域的應(yīng)用。在該領(lǐng)域我們已經(jīng)有十年的開發(fā)經(jīng)驗(yàn),合作用戶涉及科研、國防、外企、大中小型各類企業(yè)。服務(wù)領(lǐng)域遍布自動(dòng)測(cè)控系統(tǒng)眾多領(lǐng)域,包括航空航天、汽車產(chǎn)品測(cè)試、工業(yè)自動(dòng)化、故障診斷、圖像處理等。
非標(biāo)設(shè)備研制
在系統(tǒng)開發(fā)過程中,購買不到的配件、電路板等產(chǎn)品,我們也可以進(jìn)行研制開發(fā),為您提供一站式的服務(wù)。
系統(tǒng)集成
為自動(dòng)化測(cè)試提供完整的解決方案。我們從設(shè)備選擇、采購、安裝、調(diào)試、控制、到配套產(chǎn)品的研制,涵蓋您科研生產(chǎn)的全過程。讓您全身心的投入到核心工作中來,減輕您的工作壓力,提升工作效率。
產(chǎn)品合作開發(fā)
如果您那有具有市場(chǎng)潛力的好產(chǎn)品、好創(chuàng)意,我們也愿意與您一起合作開發(fā)。在這方面我們也具備了一定的基礎(chǔ),例如工業(yè)*/呼吸模擬器/人工肺,勞保測(cè)試產(chǎn)品"防塵測(cè)試儀"已經(jīng)成功推向了市場(chǎng)。成熟的技術(shù)+有潛力的市場(chǎng),一直是我們追求的目標(biāo)。如果您有好的創(chuàng)意,或者現(xiàn)有的產(chǎn)品需要升級(jí)推廣,也歡迎與我們。
王