|
作者: 申純太 譚福生 楊軍 上海電氣集團股份有限公司中央研究院
挑戰: 需要 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 多(duo)機(ji)器(qi)人(ren)係(xi)統(tong)控(kong)製(zhi)項(xiang)目(mu)的(de)一(yi)個(ge)主(zhu)角(jiao),家(jia)居(ju)監(jian)控(kong)機(ji)器(qi)人(ren),它(ta)的(de)設(she)計(ji)概(gai)念(nian)主(zhu)要(yao)是(shi)麵(mian)向(xiang)未(wei)來(lai)老(lao)年(nian)家(jia)庭(ting),負(fu)責(ze)通(tong)過(guo)網(wang)絡(luo)監(jian)控(kong)家(jia)居(ju)環(huan)境(jing)中(zhong)的(de)各(ge)種(zhong)家(jia)電(dian),具(ju)有(you)語(yu)音(yin)和(he)人(ren)臉(lian)識(shi)別(bie)等(deng)人(ren)機(ji)交(jiao)互(hu)功(gong)能(neng),具(ju)有(you)雙(shuang)機(ji)械(xie)臂(bi)完(wan)成(cheng)一(yi)些(xie)取(qu)物(wu)、遞送等任務,並且可以作為智能輪椅載人移動。在 2010 世博會滬上生態家案例館中展出。 正文: 選用 NI CompactRIO作為機器人的“小腦”。NI CompactRIO是美國 NI公司的工業級嵌入式控製器,集成以太網接口和 RS232串行接口,具有體積小,高可靠性,高性能,低功耗等優點。

圖 1主控製器Compact RIO 的安裝位置
將各種設備的控製算法例如機械臂運動控製,頭部運動控製,導航算法,基於以太網的光雷達數據采集,與大腦通訊等程序部署在 RT 中;將數字信號采集,例如限位開關和緊急停止邏輯還有編碼器數據采集和處理,地盤運動伺服控製等算法部署在 FPGA中。 選用工業嵌入式觸摸平板電腦 IPC 作為機器人的“大腦”。部署 WinCE,具有人機界麵功能以及觸摸屏交互功能,部署控製人臉識別模塊以及語音識別算法,智能家居監控管理算法等。 用 FSM來封裝每個設備對象: Finite-state machine (FSM)稱為有限狀態機廣泛用於數字電路和計算機程序。我們使用了兩種狀態機來封裝設備。String Based Queued State Machine基ji於yu字zi符fu串chuan隊dui列lie狀zhuang態tai機ji和he普pu通tong基ji於yu枚mei舉ju的de狀zhuang態tai機ji。使shi用yong狀zhuang態tai機ji作zuo為wei一yi種zhong機ji製zhi來lai處chu理li單dan個ge設she備bei的de狀zhuang態tai轉zhuan換huan,或huo者zhe說shuo,用yong狀zhuang態tai機ji這zhe種zhong行xing為wei模mo型xing來lai用yong於yu單dan個ge設she備bei的de事shi件jian處chu理li。

圖 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)算(suan)法(fa)得(de)到(dao)環(huan)境(jing)線(xian)段(duan)及(ji)最(zui)小(xiao)二(er)乘(cheng)法(fa)得(de)到(dao)線(xian)段(duan)參(can)數(shu)。在(zai)基(ji)於(yu)線(xian)段(duan)基(ji)礎(chu)上(shang),得(de)到(dao)局(ju)部(bu)的(de)平(ping)直(zhi)線(xian)段(duan)和(he)角(jiao)特(te)征(zheng),再(zai)與(yu)已(yi)知(zhi)平(ping)直(zhi)線(xian)段(duan)和(he)角(jiao)特(te)征(zheng)做(zuo)匹(pi)配(pei),通(tong)過(guo)平(ping)直(zhi)線(xian)段(duan)和(he)角(jiao)匹(pi)配(pei)算(suan)法(fa)實(shi)時(shi)更(geng)新(xin)機(ji)器(qi)人(ren)位(wei)置(zhi)和(he)姿(zi)態(tai)。分(fen)析(xi)裏(li)程(cheng)計(ji)定(ding)位(wei)、平直線段匹配定位和角匹配定位的誤差,分配不同的權重得到優化的組合定位算法。 軟件控製框圖 基於以上的設計,定位導航的軟件控製模塊設計如圖 7所示。中心模塊為定位導航模塊,該模塊讀取起點、目標點、運動模式數據及編碼器數據,同時讀取激光測距儀數據提取角、平直線段特征和已知特征做匹配,其匹配算法輸出機器人位姿 。對於給定的目標位姿,該模塊將計算出驅動指令 (Forward Speed、Delta angle、Turnspd Right、Turnspd Left對應前進速度、方向轉角、左轉、右轉)和狀態信息如(bPos, bAngle)來判斷機器人是否到達目標位置和姿態。

圖 10 家居監控機器人定位導航的輸入輸出信息部分
圖 10 為wei定ding位wei導dao航hang模mo塊kuai部bu分fen的de輸shu入ru輸shu出chu部bu分fen,上shang半ban部bu分fen的de輸shu入ru信xin息xi中zhong的de已yi知zhi角jiao特te征zheng和he全quan局ju線xian段duan為wei為wei已yi知zhi地di圖tu信xin息xi,下xia半ban部bu分fen的de部bu分fen輸shu出chu信xin息xi包bao括kuo直zhi線xian段duan提ti取qu示shi意yi圖tu,路lu徑jing任ren務wu數shu組zu信xin息xi圖tu,實shi時shi顯xian示shi的de機ji器qi人ren當dang前qian位wei置zhi信xin息xi、速度信息等。 線段特征提取 為得到環境的幾何線段信息,需要對激光測距儀的點集進行分割,其分割算法可分為下列步驟:坐標變換、區域分割、IEPF 線段提取和最小二乘法計算線段參數。其中區域分割:從初始點 i=0 開始檢測兩相鄰點 的距離,如距離值小於閾值 D,則認為屬於同一區域點集,否則開始一個新的區域。該過程遍曆所有點集。如果某區域點數目小於 4 個,則認為噪聲區域,舍棄這些噪聲點。

圖 11 IEPF 線段提取
IEPF提取線段:對於上述得到區域可能含有多條線段,IEPF線段提取算法是一種有效的線段提取 方法。如圖 11所示, Pm點到線段 PsPe的距離大於閾值 T,該方法把點集
 IEPF為迭代算法,對於 重複上述的算法知道 小於閾值T。該算法也有分割過細的時候,如圖 9youbanbuzhongjianliangtiaoxianduanketongguojianzhaxianduancanshudebanfa,duiyuxielvqingjiaowuchaxiaoyuyidingyuzhidexianduanjiayihebingchuli。xianduancanshuketongguozuixiaoerchengfajisuanqiude。
如圖 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仍舊可以運用很多軟件工程方法,使得它具有自己獨特的優勢。
|