文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.181058
中文引用格式: 任工昌,吳夢珂,朱愛斌,等. 帶單節(jié)拖車的機(jī)器人控制系統(tǒng)的設(shè)計與實現(xiàn)[J].電子技術(shù)應(yīng)用,2018,44(11):41-44,49.
英文引用格式: Ren Gongchang,Wu Mengke,Zhu Aibin,et al. Design and implementation of robot control system with single trailer[J]. Application of Electronic Technique,2018,44(11):41-44,49.
0 引言
室內(nèi)服務(wù)型移動機(jī)器人作為機(jī)器人中一個重要的分支,使人們的生活變得更加便捷。目前,已有一些機(jī)器人應(yīng)用到現(xiàn)實生活中,例如美國TRC公司研制的Helpmate醫(yī)用機(jī)器人、IROBOT公司的掃地機(jī)器人Roomba等[1]。
當(dāng)前,室內(nèi)服務(wù)型機(jī)器人多采用兩輪差速驅(qū)動,其主要原因是控制系統(tǒng)較為成熟,但是對于帶有配送功能的機(jī)器人來說,帶拖車的結(jié)構(gòu)能夠在驅(qū)動電機(jī)扭矩不變的情況下,運輸更多的貨物,并且轉(zhuǎn)向更加靈活。帶拖車的移動機(jī)器人主要由一節(jié)牽引車頭與若干節(jié)拖車組成,牽引車主要完成驅(qū)動與轉(zhuǎn)向作用,拖車隨著牽引車進(jìn)行運動。這類自主運行的配送機(jī)器人可用于工廠車間的材料運輸,醫(yī)院內(nèi)部的藥品運輸,大型碼頭的貨物運輸?shù)取?/p>
單車體移動機(jī)器人的路徑規(guī)劃方法通常采用姿態(tài)空間法,即以機(jī)器人外接圓半徑擴(kuò)張障礙物,同時將單車體機(jī)器人縮為一個控制點,于是路徑規(guī)劃可轉(zhuǎn)化為在擴(kuò)張后的姿態(tài)空間中一個點的規(guī)劃路徑[2]。對于帶拖車的移動機(jī)器人,它的外接圓時刻是變化的,采用包含所有車體的外接圓來拓展障礙物和建立環(huán)境模型的方法往往人為地減少了運行空間,使得系統(tǒng)找不到最優(yōu)或可行路徑[3]。
本設(shè)計中將牽引車部分設(shè)計在拖車前端的車底部,因此該機(jī)器人在運行過程中仍可看成是一個單車體。針對該結(jié)構(gòu)建立運動學(xué)模型,以搭載著ROS的MiniPC作為上位機(jī),接收底層編碼器與激光雷達(dá)反饋的信息,完成自主定位與路徑規(guī)劃的相關(guān)計算,并向下位機(jī)發(fā)送機(jī)器人控制點的速度與角速度信息。以STM32F103作為下位機(jī),接收上位機(jī)傳來的運動信息并最終換算成驅(qū)動輪電機(jī)的轉(zhuǎn)速,驅(qū)動底層電機(jī)轉(zhuǎn)動,完成機(jī)器人控制系統(tǒng)的搭建,并在機(jī)器人實體上進(jìn)行實驗。
1 帶單節(jié)拖車的配送機(jī)器人運動學(xué)模型建立
1.1 機(jī)器人結(jié)構(gòu)介紹
如圖1、圖2所示,整個機(jī)器人結(jié)構(gòu)可以分為兩大部分,一部分為牽引車車頭轉(zhuǎn)向部分,另一部分為拖車部分。牽引車轉(zhuǎn)向部分通過轉(zhuǎn)盤與拖車部分連接,牽引車部分的兩個輪為驅(qū)動輪,驅(qū)動電機(jī)尾部安裝有編碼器,可以得到驅(qū)動電機(jī)的轉(zhuǎn)速信息;牽引車部分與拖車部分安裝有陀螺儀,可以測得車頭與拖車部分的相對轉(zhuǎn)動角度信息。拖車前部上方安裝有激光雷達(dá),可以為上位機(jī)反饋周邊環(huán)境信息。
1.2 運動學(xué)模型建立
將以上機(jī)器人結(jié)構(gòu)進(jìn)行簡化,得到如圖3所示的運動簡圖。其中,k0點為機(jī)器人車頭牽引車部分的旋轉(zhuǎn)中心,k1點為機(jī)器人拖車部分后輪中心部位。V0、W0為k0點運動的速度與角速度,V1、W1為k1點運動的速度與角速度,L為k0到k1長度,α為車頭驅(qū)動輪與拖車車軸的夾角,X-Y為k1點的坐標(biāo)系,θ是k1點運動方向與X軸的夾角。假設(shè):整個系統(tǒng)是在平面上運動;車輪是無滑動的;車體關(guān)于其縱向軸線對稱;車輪與地面是點接觸,且是純滾動運動;車體是剛體;用于牽引車車頭與車體連接的轉(zhuǎn)盤是無摩擦的。
對于自主運動的帶拖車配送機(jī)器人,選取拖車部分后軸中心為控制點,即k1點。上位機(jī)通過控制k1點的速度與角速度來實現(xiàn)機(jī)器人的自主運行。
V1、W1與V0、W0的關(guān)系如下:
2 ROS簡介
在2007年,斯坦福大學(xué)與機(jī)器人技術(shù)公司W(wǎng)illow Garage進(jìn)行了一次項目合作,ROS系統(tǒng)便誕生于這次的項目合作[4],由于其分布式的控制機(jī)制使得機(jī)器人系統(tǒng)的開發(fā)大大簡化,在這之后ROS便被機(jī)器人領(lǐng)域的眾多研究人員所熟知[5]。
ROS運行時是由多個松耦合的進(jìn)程組成的,這些進(jìn)程被稱之為節(jié)點(Node),每個節(jié)點獨立運行,又與其他相關(guān)節(jié)點進(jìn)行通信。在實際使用時,這種模塊化的設(shè)計可以大大提高開發(fā)效率[6]。
ROS支持多種開發(fā)語言,不同的節(jié)點可以采用不同的語言進(jìn)行編寫。由于各個節(jié)點模塊的獨立性與開源性,使得所有ROS使用者都可以將自己編寫的功能包進(jìn)行共享[7]。
3 控制系統(tǒng)硬件設(shè)計
從該機(jī)器人工作角度考慮,控制系統(tǒng)設(shè)計整體分為兩部分:上位機(jī)設(shè)計與下位機(jī)設(shè)計。上位機(jī)由PC主機(jī)與車載MiniPC機(jī)組成,兩者之間通過無線局域網(wǎng)進(jìn)行通信。下位機(jī)由車體、車輪、帶編碼器的直流減速電機(jī)、電機(jī)驅(qū)動器、STM32F103開發(fā)板、電源、陀螺儀以及激光雷達(dá)組成。STM32F103RCT6作為下位機(jī)的主要控制單元,其作用是將上位機(jī)發(fā)出的控制指令轉(zhuǎn)換成各個電機(jī)對應(yīng)的速度,并將其輸出給電機(jī)驅(qū)動器,實現(xiàn)機(jī)器人不同形式的運動;與此同時,STM32將編碼器反饋的速度信號進(jìn)行計算和轉(zhuǎn)換,得到對應(yīng)車輪的速度信息并將這些信息反饋給上位機(jī)。在拖車部分和牽引車車頭部分分別安裝有一個陀螺儀,陀螺儀的型號為TransducerM,通過計算兩個陀螺儀的偏航角之差,可得到牽引車相對于拖車部分的旋轉(zhuǎn)角度,即圖3中的角α。激光雷達(dá)采用的是HOKUYO公司的URG-04LX-UG01二維激光雷達(dá),用于反饋周圍環(huán)境信息給上位機(jī)。
上位機(jī)的車載MiniPC以拖車尾部車軸中點為控制點,向下位機(jī)發(fā)送移動指令。本設(shè)計中上位機(jī)向下位機(jī)發(fā)送的是該點的速度與角速度信息。同時接受下位機(jī)反饋的里程信息。車載MiniPC采用的是占美微型電腦,電源采用12 V-5 A適配器,具有體積小、價格低、性能高、接口豐富等特點??刂葡到y(tǒng)硬件框圖如圖4所示。
4 控制系統(tǒng)軟件設(shè)計
控制系統(tǒng)軟件設(shè)計在移動機(jī)器人的整體設(shè)計中占有絕對的核心地位,這直接關(guān)系到機(jī)器人運行的魯棒性與穩(wěn)定性。本設(shè)計中的控制系統(tǒng)軟件是基于ROS平臺。在車載MiniPC中裝有ROS系統(tǒng),車載MiniPC與下位機(jī)通過串口進(jìn)行通信,主控電腦通過無線局域網(wǎng)采用ssh遠(yuǎn)程登錄方式對車載MiniPC進(jìn)行控制。下位機(jī)通過解算由上位機(jī)發(fā)送的速度與角速度等信息最終得到驅(qū)動電機(jī)的PWM波值,從而實現(xiàn)對電機(jī)的控制。
4.1 下位機(jī)軟件設(shè)計
下位機(jī)的主要作用是接收上位機(jī)傳來的運動信息,并解算成最終的驅(qū)動信號,與此同時,向上位機(jī)反饋里程計信息,供上位機(jī)做位姿定位使用。圖5為下位機(jī)的工作流程圖。
下位機(jī)上電后首先對整個系統(tǒng)進(jìn)行初始化,這里由于整個配送機(jī)器人是在室內(nèi)環(huán)境下使用的,因此陀螺儀初始化時就失去了使用GPS的校準(zhǔn)功能,但是初始化完成后,陀螺儀偏航角的相對精度還是可以保證的。
當(dāng)下位機(jī)接收到上位機(jī)傳來的控制點的角速度W1與速度V1信息時,通過式(3)將其解算成牽引車部分運動的速度V0與航向角度α。為了減少下位機(jī)運算量和防止角速度的突變,直接給定車頭部分一個恒定的角速度量W0=0.4 rad/s,當(dāng)V1=0時,W0=0。W0的正負(fù)由W1決定,當(dāng)W1為正時,W0=0.4 rad/s;當(dāng)W1為負(fù)時,W0=-0.4 rad/s。牽引車與拖車部分的陀螺儀通過串口反饋各自的偏航角,在系統(tǒng)初始化之后,以當(dāng)前偏航角值為初始值,計算各自的變化量,再將兩者相減,即可得到牽引車與拖車部分的相對轉(zhuǎn)角α*。再將此轉(zhuǎn)角與解算后的目標(biāo)α做對比,直到α*=α?xí)r,車頭部分的W0=0,只留下一個前進(jìn)方向的速度V0,在這里為了防止?fàn)恳囋谀繕?biāo)α角周圍來回抖動,所以將目標(biāo)α角范圍擴(kuò)大±0.2。
接下來將牽引車部分的速度與角速度進(jìn)行換算得到最終驅(qū)動電機(jī)的PWM波值。與此同時,下位機(jī)還將讀取到的編碼器信息通過式(1)換算成控制點的速度與角速度信息,再由串口回傳至上位機(jī)做處理。
4.2 上位機(jī)軟件的設(shè)計
上位機(jī)的主要作用是對下位機(jī)反饋的里程計信息以及激光雷達(dá)捕捉到的周圍環(huán)境的信息進(jìn)行計算,得到當(dāng)前整車的位姿信息,并且對下一步的運動路線進(jìn)行規(guī)劃,換算成速度與角速度信息,發(fā)送給下位機(jī)。
在建好地圖的情況下,ROS導(dǎo)航主要需要使用到兩個程序包,一個是move_base,另一個是amcl。move_base包可以根據(jù)各個傳感器反饋的信息進(jìn)行路徑規(guī)劃,使機(jī)器人移動到指定位置,amcl包主要是根據(jù)已有的地圖進(jìn)行自主定位與導(dǎo)航[8]。圖6為導(dǎo)航包的整體格局。
move_base包主要提供了對于自主導(dǎo)航的相關(guān)參數(shù)配置、系統(tǒng)與各種傳感器的接口等,主要包括兩個部分。第一部分為全局路徑規(guī)劃(global planner):使用者給定目標(biāo)位置后,系統(tǒng)根據(jù)給定的目標(biāo)位置進(jìn)行整體路徑規(guī)劃;第二部分為本地實施規(guī)劃(local planner):在導(dǎo)航過程中,系統(tǒng)根據(jù)自身傳感器所反饋的周圍環(huán)境信息,對附近的障礙物進(jìn)行避障路線規(guī)劃。
除此之外ROS還提供了一種可視化工具——rviz。使用這種插件機(jī)制可以擴(kuò)展豐富的功能,便于進(jìn)行二次開發(fā)[9]。在這里,可以通過設(shè)置footprint的大小來規(guī)定機(jī)器人的最大邊界,由于該移動機(jī)器人的牽引車驅(qū)動部分處于拖車車體前端的下方,因此拖車部分的最大邊界即為整車的最大邊界。通過rviz,還可以實時觀測到機(jī)器人在地圖中的位置、激光雷達(dá)反饋的信息、每一時刻的速度方向以及上位機(jī)對導(dǎo)航路徑的規(guī)劃情況等。
5 配送機(jī)器人實驗與分析
帶單節(jié)拖車的配送機(jī)器人樣機(jī)如圖7所示。在實驗開始之前,需要將車載MiniPC與遠(yuǎn)程控制PC都連接上同一個WiFi,在遠(yuǎn)程控制PC上打開一個終端,通過ssh命令登錄上車載MiniPC,啟動控制機(jī)器人的所有相關(guān)節(jié)點。在遠(yuǎn)程控制PC端打開rviz界面,輸入機(jī)器人起始點信息,給定目標(biāo)點,機(jī)器人即可開始自主導(dǎo)航。
圖8是機(jī)器人在直線走廊的導(dǎo)航情況,圖9是機(jī)器人在直線走廊導(dǎo)航的rviz結(jié)果,圖10是機(jī)器人在“T”字形走廊拐角處的導(dǎo)航情況,圖11是機(jī)器人在“T”字形走廊拐角處的導(dǎo)航的rviz結(jié)果。
由圖可見,該機(jī)器人在直線走廊中可以順利地避開遇到的障礙物,在“T”字形走廊拐角處也可以兼顧到拖車部分的轉(zhuǎn)向情況,實現(xiàn)了帶單節(jié)拖車的自主導(dǎo)航。
6 結(jié)論
本文研究了帶單節(jié)拖車的配送機(jī)器人控制系統(tǒng),并在物理樣機(jī)上實現(xiàn)了相關(guān)的功能。針對帶單節(jié)拖車的配送機(jī)器人,提出了一種采用單車體運動學(xué)模型控制帶單節(jié)拖車的配送機(jī)器人的控制方案,建立了運動學(xué)模型,以及下位機(jī)接收到上位機(jī)信息之后的決策方案,從而有效地解決了帶單節(jié)拖車的室內(nèi)配送機(jī)器人遇到障礙物的避障問題與在“T”字形走廊的轉(zhuǎn)向問題。
參考文獻(xiàn)
[1] 羅振華.醫(yī)院服務(wù)機(jī)器人室內(nèi)導(dǎo)航算法與自主充電系統(tǒng)研究[D].哈爾濱:哈爾濱工業(yè)大學(xué),2016.
[2] 劉作軍,孔鑫,楊鵬,等.帶拖車移動機(jī)器人的運動學(xué)分析與仿真[C].2006中國控制與決策學(xué)術(shù)年會論文集,2006.
[3] 李宏超,黃亞樓,夏毅,等.帶拖車的移動機(jī)器人包絡(luò)路徑分析與描述[J].機(jī)器人,2001(4):334-337.
[4] QUIGLEY M,BERGER E,NG A Y.Stair:hardware and software architecture[C].AAAI Robotics Workshop,2007.
[5] QUIGLEY M,GERKEY B P,CONLEY K,et al.ROS:an open-source robot operating system[C].Proceeding of IEEE ICRA Workshop on Open Source Robotics,2009.
[6] 路飛,田國會,劉國良,等.智能空間下基于WiFi指紋定位與粒子濾波的服務(wù)機(jī)器人復(fù)合全局定位系統(tǒng)設(shè)計[J].機(jī)器人,2016(2):178-184.
[7] 張建偉,張立偉,胡穎.開源機(jī)器人操作系統(tǒng)-ROS[M].北京:科學(xué)出版社,2012.
[8] 白亮亮,平雪良,陳盛龍,等.分布式移動機(jī)器人控制系統(tǒng)設(shè)計與實現(xiàn)[J].機(jī)械設(shè)計與制造,2015(10):180-183.
[9] 劉維惠,陳殿生,張立志.人機(jī)協(xié)作下的機(jī)械臂軌跡生成與修正方法[J].機(jī)器人,2016,38(4):504-512.
作者信息:
任工昌1,吳夢珂1,朱愛斌2,劉 朋1,宋紀(jì)元2
(1.陜西科技大學(xué) 機(jī)電工程學(xué)院,陜西 西安710021;2.陜西省智能機(jī)器人重點實驗室,陜西 西安710049)