譚福生, 楊 軍, 申純太
(上海電氣集團股份有限公司中央研究院,上海200070)
近年來隨著傳感器等領域的技術進步,移動機器人的外形和智能行為變得更為擬人,其定位導航功能的實現大多依靠激光測距雷達,其性價比也越來越高,擬人化也對激光測距傳感器外形要求小型化。
激光測距儀根據掃描機構的不同可分為2D和3D兩種,分別進行二維和三維環境的測距。3D激光測距儀除了提供障礙物的距離信息,還提供激光的反射強度信息,可以利用激光強度圖進行障礙物的檢測。但3D激光測距儀價格昂貴、笨重,且成像速度較慢,限制了它的進一步應用。相比而言,2D激光測距儀只在二維平面內掃描,結構簡單,掃描速度快且數據點密集精確,在室內移動機器人導航的研究中得到了廣泛的應用,很多的研究如環境地圖構建、自主定位、避障、軌跡跟蹤和導航等都是基于激光測距儀的[1-3]。
國內外激光測距雷達產品在室內導航應用方面,可以用于自主移動機器人上。主要廠商有日本的URG-04LX是北洋電機(Hokuyo)掃描探測傳感器較新的產品,具有質量輕(僅160 g),耗能小,外觀尺寸為50mm×50 mm×70 mm,但其性能還主要處于實驗室應用方面,沒有展開大規模的工業應用。
而另外一家公司德國SICK公司生產的激光測距雷達,無論在工業上的應用,還是在實驗室研究方面都有很高的聲譽,作為主要環境感知傳感器,在小型化方面也進行了大量的技術攻關,于2008年推出型號為LMS100的激光測距雷達,如圖1所示。此LMS100的尺寸(W×H×D)為102 mm×152mm×105mm,掃描角度為270°,角度分辨率為0.5°/0.25°,掃描周期為 20m s/40m s。根據技術手冊,在最大測距18m的情況下,LMS100測距的系統誤差為±30mm,統計誤差12mm,角度分辨率為0.5°/0.25°。
圖1 LMS100激光測距儀
LMS100除了提供RS232/485串口以外,還提供了RJ45接口,其傳輸相對于RS232優勢是,通過網關設定只要設定同一網段的IP地址,即可對傳感器設備進行訪問,連接方便,且傳輸數據速度可達到10/100MBit。
Labview (Laboratory Virtual Instrument Engineering Workbench)語言是美國 NI(National Instruments)公司推出的面向虛擬儀器開發的一種圖形化的編程語言,它廣泛地被工業界、學術界和研究實驗室所接受,視為一個標準的數據采集和儀器控制軟件[4]。Labview集成了與滿足 GPIB、VXI、RS-232和RS-485協議的硬件及數據采集卡通訊的全部功能。它還內置了便于應用TCP/IP、ActiveX等軟件標準的庫函數。這是一個功能強大且靈活的軟件,利用它可以方便地建立自己的vi模塊,實現對硬件的讀取和控制。近年來其推出的Com pactRIO平臺在嵌入式控制和采集平臺獲得廣泛應用。
LMS100防護等級為IP65,適用于室內環境,直流24 V供電需要手動連接(而 LMS111防護IP67用于室外環境),需要打開后蓋,把24 V外接直流外接電源端子引入,其中+24 V接入19口,地線接入18口。接入電源后,指示燈亮就可以對數據進行讀取了,如圖2所示。
圖2 LMS100激光測距儀電源接線
上電后,可通過LMS100自帶工具SOPAS ET對硬件進行配置,默認的IP地址為192.168.0.1,端口為2111。根據實驗用計算機的子網段,通過配置工具可以將IP地址修改為192.168.168.7,修改角度分辨率為0.5°。
激光數據的讀取有2種方式,分別是單次測量值輸出和連續測量值輸出:對于單次測量值輸出輸入一次請求指令便得到一次當前值的返回值,對數據的讀取可以進行周期性干預;而對于連續測量值的輸出,只需輸入一次,數據實時的返回,無法進行干預。
下面是單次測量值輸出時的請求指令:
其中STX為數據幀起始字符,對應十六進制表示為(02H),而ETX為數據幀結束字符,對應十六進制表示為(03H)。中間字符用ASCII碼十六進制表示,字符間空格表示,最后映射的十六進制請求指令為:
02 73 52 4E 20 4C 4D 44 73 63 61 6E 64 61 74 61 03
借助于調試軟件 HerculesSetup,打開 TCP Client配置功能界面,輸入IP地址和端口號,Send輸入欄填寫十六進制請求指令,點擊Send按鈕得到返回值如圖3所示,其詳細數據如下:
sRA LMDscandata 1 1 7EF40D 0 0 9C87 5F8 41191 4135D 0 0 5 0 0 1388 168 0 1 DIST1 3F800000 00000000 FFF92230 1388 21D 2B8 2C5 2BD 2BD…1ED6 C90 C6E C7C 0 0 0 0 0 0
對于當前設置,LMS100的掃描角度為270°,角度分辨率為0.5°,因此得到541(21D)組數據,2B8 2C5 2BD…C90 C6E C7C為逆時針排列的541個數據,數據單位為mm,十六進制表示,為使用這組值,需要通過進制轉換算法把十六進制轉換為十進制。
所得到數據按照逆時針排列對應的角度分別為-45,-44.5,-44,…,224,224.5,225,將數據變換為十進制為 686,709,709,…,3216,3182,3196,對應的一共有541個數據值。
Labview 8.6包含了基于TCP/IP協議的讀取范例,具體路徑為瀏覽/任務方式,范例列表中打開網絡/TCP&UDP,其中可以在 TCP Communicator-Active.vi基礎上進行修改,其流程圖如圖4所示,其對應的前面板如圖5所示。按照圖5的前面板的輸入,執行這個程序,在 Their Response中就能得到當前時刻激光測距儀的數據,其表示為十六進制,如圖3。
圖3 基于TCP/IP協議的LMS100激光測距儀數據讀取
但上述方法的數據采集只能單次運行,在機器人導航中需要對激光測距儀進行連續的讀取,因此對上述Labview程序進行改進,改進的要點如下:
(1)可實時讀取激光測距儀;
(2)通過加權平均的方法,考慮到周期因素,取3次加權取平均的方法;
(3)對十六進制轉十進制進行優化,提供轉換效率。
經過對以上3點的改進,得到新的程序流程圖如圖6所示。其中數據輸入對應的是十六進制請求指令,而數據輸出為1幀激光測距儀的數據,其表示十六進制需轉換成十進制,通過對圖7的2個控件進行配置,可以較高效率的轉換成十進制數。其中前面控件把十進制字符串提取為數組,后控件把十六進制數值轉換為十進制數值。通過外面While循環,對3次數值進行了加權取平均,對激光測距儀的數據漂移問題進行了改進。
圖6 改進的激光測距儀程序的程序流程圖
圖7 十六進制轉換十進制控件
通過上述的改進,經過測算,激光測距儀1個周期數據讀取只需要20m s,而串口讀取需要100 ms左右。在編程效率上,通過 Labview實現只需要1 d時間。
本文對基于TCP/IP接口的激光測距儀數據讀取原理和方法進行了介紹,并在Labview平臺上進行了實現,并就實時性傳輸進行了改進,實踐表明通過Labview平臺,提高了編程效率,節省了開發的時間。
[1] 董再勵,王光輝,田彥濤,等.自主移動機器人激光全局定位系統研究[J].機器人,2000,22(5):207-210.
[2] 鄭 宏,王景川,陳衛東.基于地圖的移動機器人自定位與導航系統[J].機器人,2007,29(4):397-402.
[3] 慕延華,尹怡欣,涂序彥,等.新的室內移動機器人的實時定位和運動規劃方法[J].計算機應用研究,2007,24(8):106-108.
[4] 楊樂平,李海濤,楊 磊.Labview程序設計與應用[M].第 2版.北京:電子工業出版社,2005.