張美平,張毅韜,郭旭城,王志宇
1(福建師范大學 數(shù)學與信息學院,福州 350007)
2(福建師范大學 福建省網(wǎng)絡安全與密碼技術重點實驗室,福州 350007)
隨著物聯(lián)網(wǎng)相關技術的飛速發(fā)展,物聯(lián)網(wǎng)的概念逐漸深入人心,相關應用輻射至各行各業(yè).據(jù)統(tǒng)計,國內物聯(lián)網(wǎng)連接數(shù)已達16億個,預計2020年將超過70億個,市場規(guī)模達到2.5萬億元,物聯(lián)網(wǎng)發(fā)展?jié)摿薮?物聯(lián)網(wǎng)是新一輪產業(yè)變革的重要方向和推動力量,對于深化供給側結構性改革、推動產業(yè)轉型升級具有重要意義.現(xiàn)如今,全球各國無不積極推動機器人產業(yè),近期人工智能與深度學習等技術發(fā)展熱度增溫,更是成為推動智能機器人發(fā)展的重要動能.據(jù)工研院IEK研究報告預估,全球智能機器人的市場規(guī)模預計在2021年將成長至336億美元,而亞洲將是成長最多的地區(qū).
通信連接只是物聯(lián)網(wǎng)的第一步,在此基礎之上的應用才是物聯(lián)網(wǎng)重要的核心,智能機器人可作為物聯(lián)網(wǎng)智能終端提供這種作用.機器人在智能家居、家庭安防等物聯(lián)網(wǎng)應用方向上得到了充分的利用,尤其是機器人裝載感知設備而具有的環(huán)境感知能力,為家居生活、倉庫管理、無人區(qū)監(jiān)測等應用場景提供了極大的便捷和助力.
國內外對于物聯(lián)網(wǎng)與智能機器人結合的研究已經展開,國外如IBM公司、日本國際電氣通信先進技術研究所等.Grieco等人[1]提出了物聯(lián)網(wǎng)輔助機器人應用方向,歸納了各行業(yè)領域機器人的模型參數(shù)和具體硬件平臺,以及相關的物聯(lián)網(wǎng)技術,為物聯(lián)網(wǎng)與機器人結合的研究提供了不錯的方案基礎.國內,孔令富等人[2]提出構建物聯(lián)網(wǎng)機器人系統(tǒng)的指導思想,分析該系統(tǒng)的研究現(xiàn)狀,同時剖析了物聯(lián)網(wǎng)機器人系統(tǒng)存在的客觀問題;湯莉莉等人[3]提供了一套較為具體的物聯(lián)網(wǎng)智能機器人設計的解決方案,實現(xiàn)視頻監(jiān)控,機器人狀態(tài)自檢測與監(jiān)控、太陽能充能等功能.
在各類物聯(lián)網(wǎng)應用方向蓬勃發(fā)展的影響下,物聯(lián)網(wǎng)系統(tǒng)下,與感知數(shù)據(jù)交互的智能機器人的作用與地位逐漸變得不可或缺.但市場上智能機器人平臺眾多,設計方案不同,導致大量代碼冗余、移植性通用性較差等問題,造成了其與物聯(lián)網(wǎng)系統(tǒng)數(shù)據(jù)的交互需要更繁雜的數(shù)據(jù)協(xié)議等客觀現(xiàn)實問題,增加了智能機器人融入物聯(lián)網(wǎng)系統(tǒng)的難度.
本文針對以上問題,一方面利用ROS的通訊框架和OpenWrt、Contiki搭建了一款完整的三層結構的物聯(lián)網(wǎng)系統(tǒng);另一方面設計了一套基于ROS的移動機器人平臺,不僅做到物聯(lián)網(wǎng)系統(tǒng)下環(huán)境數(shù)據(jù)的采集上遞與反饋,且提供充足優(yōu)良的機器人開發(fā)接口,為物聯(lián)網(wǎng)下智能機器人的智能化程度不斷提高打下基礎.
本文選擇的整體系統(tǒng)框架類似于物聯(lián)網(wǎng)的三層結構,智能機器人作為應用層的物聯(lián)網(wǎng)終端,與感知數(shù)據(jù)進行交互.如圖1所示.
圖1 整體系統(tǒng)框架
(1)感知層
傳感數(shù)據(jù)通過開源物聯(lián)網(wǎng)操作系統(tǒng)Contiki提供的TCP/IP堆棧,將數(shù)據(jù)打包為UDP數(shù)據(jù)報上傳至ROS-Contiki網(wǎng)關.
(2)接入層
ROS-Contiki網(wǎng)關實現(xiàn)協(xié)議IPv6與IPv4之間的動態(tài)轉換,設置轉換地址池、地址比對、數(shù)據(jù)匯聚處理的功能,并以ROS規(guī)范進行轉換,實現(xiàn)感知層數(shù)據(jù)與ROS網(wǎng)絡的雙向流通.
(3)應用層
提供針對感知層的數(shù)據(jù)監(jiān)控與節(jié)點反向控制、機器人基本控制的Web服務.同時智能機器人可在物聯(lián)網(wǎng)系統(tǒng)環(huán)境下,與感知數(shù)據(jù)實現(xiàn)雙向交互.
在指定區(qū)域部署傳感節(jié)點與執(zhí)行節(jié)點,如圖2所示,通過無線傳感網(wǎng)絡傳遞數(shù)據(jù)實現(xiàn)感知層功能.無線傳感網(wǎng)絡的組建采用了近幾年發(fā)展迅速的基于IPv6的Contiki物聯(lián)網(wǎng)操作系統(tǒng).感知層節(jié)點由STM32W108處理器,各類傳感器或執(zhí)行模塊構成.感知層節(jié)點運行由Contiki協(xié)議棧提供的TCP/IP堆棧,將數(shù)據(jù)打包為UDP數(shù)據(jù)報遞交至ROS-Contiki網(wǎng)關.
感知層部署節(jié)點分為兩類:
(1)傳感節(jié)點.傳感節(jié)點負責上報所采集數(shù)據(jù).
(2)執(zhí)行節(jié)點.執(zhí)行器負責監(jiān)聽執(zhí)行指令,控制相關外設.
圖2 執(zhí)行節(jié)點(左)、傳感節(jié)點(右)
節(jié)點間組網(wǎng)與通訊如圖3.
圖3 節(jié)點間組網(wǎng)通訊
底層數(shù)據(jù)需要約定數(shù)據(jù)上報與反向控制指令的格式協(xié)議(見表1和表2),以便網(wǎng)關接入模塊和應用層應用解析數(shù)據(jù)和生成指令.
接入層主要涉及ROS-Conitki網(wǎng)關設備的選擇與接入模塊的設計[4],如圖4.ROS-Conitki網(wǎng)關設備選用運行Linux開源無線路由器操作系統(tǒng)OpenWrt的巴法絡路由器,參數(shù)設置見表3.OpenWrt是嵌入式設備上運行的Linux系統(tǒng),為Linux下的開發(fā)提供了良好環(huán)境.同時網(wǎng)關需要一個Contiki IPv6接入模塊,實現(xiàn)IPv6和IPv4的動態(tài)轉換,設置轉換地址池、數(shù)據(jù)匯聚、處理,并且以ROS規(guī)范進行轉換,并將感知層數(shù)據(jù)遞交至ROS網(wǎng)絡.
表1 數(shù)據(jù)上報協(xié)議
表2 反向控制指令協(xié)議
圖4 網(wǎng)關內部結構
表3 巴法絡路由器參數(shù)
為非ROS系統(tǒng)的網(wǎng)關設備滿足ROS規(guī)范與ROS網(wǎng)絡通訊,我們使用rosserial_embeddedLinux庫進行開發(fā).rosserial_embeddedLinux提供了ROS通信協(xié)議,可用于嵌入式Linux系統(tǒng)的串行UART,或其無線或網(wǎng)絡連接.它允許嵌入式Linux系統(tǒng)運行完整的ROS節(jié)點,而我們只需擁有目標設備的開發(fā)編譯鏈.
ROS-Contiki網(wǎng)關運行tunslip6程序.該程序建立一個名為“tun0”的虛擬網(wǎng)卡.直接用程序讀寫該設備,tun0建立在數(shù)據(jù)鏈路層,接入模塊將邊界路由節(jié)點上遞的數(shù)據(jù),通過slip串口與IP協(xié)議,將其封裝為IP數(shù)據(jù)包,再遞交至UDP服務端.UDP服務端將執(zhí)行節(jié)點的最新IP地址存入地址池,為反向控制做好準備,同時將傳感數(shù)據(jù)封裝為ros消息,以規(guī)定的話題發(fā)布至ROS網(wǎng)絡.
反之,接入模塊(見圖5)通過ros_node訂閱規(guī)定話題,接收ROS網(wǎng)絡傳來的數(shù)據(jù)(多為控制指令).通過比對地址池,匹配目標執(zhí)行節(jié)點,tunslip6程序將數(shù)據(jù)轉換為串口數(shù)據(jù)通過串口遞交至邊界路由設備.
圖5 接入模塊結構設計
提供針對感知層數(shù)據(jù)監(jiān)控與反向控制和針對機器人控制的web前端頁面.web服務與ROS網(wǎng)絡的通訊,采用rosbridge協(xié)議規(guī)范下的rosbridge_suite軟件包進行web服務端與客戶端的開發(fā).
rosbridge主要包含兩個部分,Rosbridge Protocol和Rosbridge Implementation.其中Protocol部分提供了非ROS系統(tǒng)和ROS系統(tǒng)通信的具體格式,包括話題的訂閱,消息的發(fā)布等.Implementation部分是rosbridge的具體實現(xiàn),包含rosbridge_server等包.rosbridge_server負責通信的傳輸層,包括webscoket,tcp,udp等格式.
用戶使用PC或移動終端采取相關操作,將UI操作綁定為一種指定話題下消息的發(fā)布或訂閱,以websocket的方式與rosbridge節(jié)點通訊,該節(jié)點將收到的數(shù)據(jù)封裝為ROS規(guī)范的ROS消息,并遞交至ROS網(wǎng)絡,實現(xiàn)Web服務與ROS網(wǎng)絡的結合,如圖6.
圖6 Web服務與ROS網(wǎng)絡
機器人硬件框架如圖7所示.
圖7 機器人硬件部件與架構
履帶小車底盤作為機器人移動的基本部件,通過裝載的電機實現(xiàn)驅動.底盤搭載了STM32核心驅動板和作為主控設備的樹莓派.核心驅動板上連接了三軸陀螺儀GY-85,如圖8.
(1)STM32核心驅動板
運行一個基本的ROS節(jié)點.
(2)樹莓派
運行ROS-Master,承擔ROS網(wǎng)絡的牽頭組建的功能.同時可協(xié)同多個ROS節(jié)點.同時提供多個外設接口,為機器人的服務拓展提供硬件條件.
圖8 機器人實物圖
機器人的軟件設計主要基于ROS規(guī)范的ROS節(jié)點開發(fā).機器人運行的ROS節(jié)點如圖9所示.
圖9 機器人運行節(jié)點
STM32_node: 讀取機器人的電機里程數(shù)、電量、速度、Imu數(shù)據(jù)等機器人狀態(tài)數(shù)據(jù)并以ROS規(guī)范封裝,上遞至ROS網(wǎng)絡;同時可監(jiān)控傳感數(shù)據(jù),并監(jiān)聽用戶執(zhí)行指令.
serial_node: 將STM32核心驅動板通過串口連接至ROS網(wǎng)絡.
riki_base_node: 描述機器人基本信息的節(jié)點,接受來自驅動板經過過濾的imu融合數(shù)據(jù),速度數(shù)據(jù)等,同時可與本文物聯(lián)網(wǎng)系統(tǒng)下數(shù)據(jù)實現(xiàn)交互.
rosbridge_suit_node: 實現(xiàn)ROS網(wǎng)絡與非ROS網(wǎng)絡的應用層應用之間的通信.
系統(tǒng)整體運作形式下,感知層部署感知節(jié)點和執(zhí)行節(jié)點,執(zhí)行節(jié)點集成相應的執(zhí)行器,感知節(jié)點將感知數(shù)據(jù)遞交至邊界路由節(jié)點,由邊界路由節(jié)點上傳至ROS-Contiki網(wǎng)關.網(wǎng)關記錄節(jié)點所分配地址,并將數(shù)據(jù)封裝為ROS消息,發(fā)布至指定的話題,供機器人與應用層服務節(jié)點訂閱.機器人時刻訂閱機器人指令話題,監(jiān)聽機器人指令,作出反饋.
同時,web頁面提供了反向控制的接口,將其和規(guī)定的ROS消息綁定,發(fā)送至約定好的ROS話題,ROSContiki網(wǎng)關訂閱該話題,解析ROS消息獲取命令,并根據(jù)地址池將控制指令下發(fā)至執(zhí)行節(jié)點.
(1)啟動機器人
為機器人上電,通過遠程登錄軟件進入樹莓派.輸入如下命令:
roslaunch rikirobot bringup.launch
roslaunch rosbridge_suit rosbridge_websocket.lauch
(2)部署節(jié)點,啟動網(wǎng)關
將邊界路由節(jié)點通過USB線接入巴法絡路由器.輸入如下指令:
tunslip6 -s /dev/ttyUSB0 aaaa::1/64 &
再執(zhí)行接入模塊程序:
./pc-server /dev/USB0
(3)打開瀏覽器,進入Web服務(如圖10).
圖10 Web服務頁面
本文分為兩個方面: 基于ROS的物聯(lián)網(wǎng)系統(tǒng)的三層設計和該系統(tǒng)下機器人的設計.
物聯(lián)網(wǎng)系統(tǒng)分為三層: 感知層、接入層、應用層.本文中感知層節(jié)點運行Contiki操作系統(tǒng),被分配不同的IPv6地址,以mesh的方式組建傳感網(wǎng)絡.ROSContiki網(wǎng)關則基于OpenWrt與Rosserial協(xié)議,將底層上報的數(shù)據(jù)以ROS消息規(guī)范封裝上遞至ROS網(wǎng)絡.應用層服務節(jié)點通過ros_bridge進行Web前端的服務集成,搭建一套基于ROS網(wǎng)絡的物聯(lián)網(wǎng)系統(tǒng).
機器人以樹莓派做主控,STM32核心驅動板作為硬件驅動.機器人的核心系統(tǒng)框架采用當下流行的開源的機器人操作系統(tǒng)——ROS.并結合當下優(yōu)秀的嵌入式系統(tǒng)OpenWrt項目,依托優(yōu)秀的ROS通訊框架,用較低的成本,開發(fā)出本文物聯(lián)網(wǎng)系統(tǒng)下智能機器人.