李志文,程志江,杜一鳴,鄧佳桐
(新疆大學(xué)電氣工程學(xué)院,新疆烏魯木齊 830046)
21世紀(jì)我國(guó)提倡綠色發(fā)展,以化石能源燃料為主的發(fā)電方式開(kāi)始退出歷史舞臺(tái),國(guó)家開(kāi)始大力發(fā)展太陽(yáng)能、風(fēng)力等清潔能源發(fā)電方式,其中目前太陽(yáng)能發(fā)電的主要方式是光伏太陽(yáng)能板發(fā)電,光伏太陽(yáng)能板發(fā)電面臨的主要問(wèn)題是光伏組件上的灰塵清潔問(wèn)題[1]。如何使清潔機(jī)器人快速高效的清潔光伏組件上的灰塵有重大研究意義。本文研究的清潔機(jī)器人是由移動(dòng)平臺(tái)和四自由度機(jī)械臂組成的移動(dòng)機(jī)械臂,具有很好的靈活性和廣闊的操作空間,性能優(yōu)于固定的機(jī)械臂[2]。近幾年,移動(dòng)機(jī)械臂的應(yīng)用越來(lái)越廣泛,例如:航天、采礦、深海探究、農(nóng)業(yè)等領(lǐng)域[3]。對(duì)于移動(dòng)機(jī)械臂的研究也面臨著很多復(fù)雜的問(wèn)題,比如:移動(dòng)機(jī)械臂的車-臂運(yùn)動(dòng)不協(xié)調(diào),智能化程度不高的問(wèn)題,機(jī)器人操作平臺(tái)編程效率低下、成本高、對(duì)機(jī)器人不能實(shí)時(shí)控制和仿真等[4]。針對(duì)這些問(wèn)題,近幾年全球也研究出了很多操作軟件。
其中ROS操作系統(tǒng)作為一個(gè)開(kāi)源的系統(tǒng),近幾年在機(jī)器人領(lǐng)域應(yīng)用越來(lái)越廣泛,ROS為開(kāi)發(fā)者提供了廣泛的工具包和庫(kù)文件,擴(kuò)展性強(qiáng)[5],本文所設(shè)計(jì)的移動(dòng)平臺(tái)的控制器和機(jī)械臂的控制器,以機(jī)器人運(yùn)動(dòng)控制核心ros_control作為控制機(jī)制,并采用串口通信實(shí)現(xiàn)上位機(jī)與底層的通信,通過(guò)在上位機(jī)配置ros_control控制機(jī)制來(lái)完成清潔機(jī)器人的協(xié)調(diào)運(yùn)動(dòng)控制和運(yùn)動(dòng)規(guī)劃。最后通過(guò)實(shí)物仿真表明該方法的可行性。
ROS操作系統(tǒng)是一個(gè)開(kāi)發(fā)機(jī)器人的常用開(kāi)源系統(tǒng),提供了大量的庫(kù)文件和工具,擁有開(kāi)發(fā)機(jī)器人統(tǒng)一接口和框架[6]。通過(guò)點(diǎn)對(duì)點(diǎn)的設(shè)計(jì)完成各獨(dú)立節(jié)點(diǎn)的功能傳遞,提供了各種功能包,搭建控制平臺(tái),適用于多機(jī)協(xié)同,并且支持多種語(yǔ)言開(kāi)發(fā)來(lái)實(shí)現(xiàn)機(jī)器人仿真和控制實(shí)物機(jī)器人[7]。為機(jī)器人的開(kāi)發(fā)提供了許多便利,滿足各種需求,功能十分強(qiáng)大。ROS操作系統(tǒng)控制原理示意圖如圖1所示。
圖1 ROS系統(tǒng)控制原理示意圖
ROS操作系統(tǒng)對(duì)機(jī)器人進(jìn)行仿真,必須用到描述機(jī)器人模型的(Unified Robot Description Format. URDF)文件[8],UDRF采用XML文件格式,文件內(nèi)容包含:機(jī)器人的形狀、物理信息、運(yùn)動(dòng)學(xué)、動(dòng)力學(xué)等基本信息,支持提供模型的自碰撞檢測(cè)信息[9]。本文所研究的清潔機(jī)器人三維模型首先使用SolidWorks軟件構(gòu)建出來(lái),之后通過(guò)SW2URDF插件把三維模型轉(zhuǎn)化為相應(yīng)的URDF模型。
ROS中的Rviz是一個(gè)三維可視化工具,SolidWorks所構(gòu)建三維模型轉(zhuǎn)化的URDF文件可以導(dǎo)入Rviz工具中,通過(guò)運(yùn)行l(wèi)aunch文件,可以在Rviz中顯示虛擬的機(jī)器人三維模型[10],對(duì)機(jī)器人進(jìn)行運(yùn)動(dòng)控制時(shí),可以在Rviz中實(shí)時(shí)的顯示機(jī)器人的狀態(tài)信息。如圖2所示。
圖2 Rviz中的機(jī)器人模型
機(jī)器人進(jìn)行運(yùn)動(dòng)學(xué)求解、導(dǎo)航運(yùn)動(dòng)和路徑規(guī)劃等主要依賴Moveit功能包。用戶通過(guò)設(shè)置Moveit! SetupAssistant助手,來(lái)對(duì)Moveit進(jìn)行一系列配置,其中,Moveit中的核心節(jié)點(diǎn)Move_Group作為樞紐,不斷地同時(shí)接受和反饋機(jī)器人運(yùn)動(dòng)關(guān)節(jié)joint state信息,為控制機(jī)器人提供完整的服務(wù)[11]。Moveit整體框架圖如圖3所示。
圖3 ROS Moveit! 高層框架
傳統(tǒng)的2D建圖檢測(cè)不到三維空間里某些障礙物,從而影響機(jī)器人工作,本文根據(jù)清潔機(jī)器人的工作環(huán)境,采用激光雷達(dá)+深度相機(jī)聯(lián)合建圖的方法構(gòu)建3D地圖。激光雷達(dá)具有非常高的探測(cè)精度且不受環(huán)境影響,但是三維激光雷達(dá)價(jià)格很高,這樣會(huì)拉高機(jī)器人的成本[12]。深度相機(jī)價(jià)格相對(duì)便宜,原理是通過(guò)紅外發(fā)射器和感應(yīng)器將環(huán)境中的畫面數(shù)字化,然后通過(guò)圖像處理得到清晰的三維點(diǎn)云畫面,但深度相機(jī)受環(huán)境影響大,特別是強(qiáng)光的影響[13]。本文結(jié)合了激光雷達(dá)和深度相機(jī)的優(yōu)缺點(diǎn),利用深度相機(jī)采集到的圖像信息結(jié)合激光雷達(dá)測(cè)定的距離,可以精確的標(biāo)定出障礙物和障礙物的特征,完美的構(gòu)建出機(jī)器人工作環(huán)境。本系統(tǒng)實(shí)驗(yàn)所處的三維環(huán)境信息如圖4所示。
圖4 機(jī)器人所在的三維仿真環(huán)境
要實(shí)現(xiàn)對(duì)清潔機(jī)器人的機(jī)械臂的控制,首先要對(duì)機(jī)械臂進(jìn)行運(yùn)動(dòng)規(guī)劃,建立運(yùn)動(dòng)學(xué)模型是研究機(jī)器人運(yùn)動(dòng)基礎(chǔ)。目前在機(jī)械臂建模方法中D-H坐標(biāo)變換法是應(yīng)用最廣的方法,該方法可應(yīng)用于不同機(jī)械結(jié)構(gòu)的機(jī)械臂,針對(duì)本文研究的清潔機(jī)械臂的機(jī)械結(jié)構(gòu)建立運(yùn)動(dòng)學(xué)模型[14],其中每個(gè)關(guān)節(jié)的轉(zhuǎn)動(dòng)變量完全可以用αi、ai、di和θi四個(gè)參數(shù)描述,表1為清潔機(jī)械臂的D-H參數(shù)表。
表1 清潔機(jī)械臂D-H參數(shù)表
清潔機(jī)器人的機(jī)械臂是由末端裝置和各個(gè)連桿組成,為研究機(jī)器人運(yùn)動(dòng)學(xué),需要建立每個(gè)連桿對(duì)應(yīng)的坐標(biāo)系,這些坐標(biāo)系之間的相對(duì)關(guān)系可以用齊次坐標(biāo)變換的方法描述,每個(gè)關(guān)節(jié)的坐標(biāo)表?yè)Q矩陣用Ti表示
(1)
(2)
(3)
(4)
式中:si=sinθi,ci=cosθi。
將每個(gè)關(guān)節(jié)所對(duì)應(yīng)的變換矩陣Ti相乘可以得到機(jī)器人系統(tǒng)的總的變換矩陣,即機(jī)器人的運(yùn)動(dòng)學(xué)模型。
(5)
式中:u=L3s2-L2c2+L3c2c4sinθi,v=L1-L3c2-L2s2+L4c4s2
機(jī)器人的逆運(yùn)動(dòng)學(xué)求解是在已知機(jī)械臂末端的狀態(tài)下,求解所對(duì)應(yīng)的各個(gè)關(guān)節(jié)變量的過(guò)程,首先假設(shè)機(jī)械臂末端狀態(tài)在基坐標(biāo)系中所對(duì)應(yīng)位姿矩陣為A
(8)
其中式中:n,o,a表示機(jī)械臂末端在基坐標(biāo)的相對(duì)姿態(tài);P表示機(jī)械臂末端在基坐標(biāo)的相對(duì)位置關(guān)系。令T=A得出
(9)
由上述公式可求得清潔機(jī)器人的機(jī)械臂逆運(yùn)動(dòng)學(xué)解析式
(10)
根據(jù)(10)式,可以求出機(jī)械臂末端狀態(tài)所對(duì)應(yīng)各個(gè)關(guān)節(jié)的變量。
清潔機(jī)器人在ROS操作系統(tǒng)下,采用分層式設(shè)計(jì)結(jié)構(gòu)和模塊化思想[15],把清潔機(jī)器人總系統(tǒng)分為四個(gè)部分:分別為控制部分、驅(qū)動(dòng)部分、數(shù)據(jù)處理部分、硬件部分。通過(guò)對(duì)這四部分設(shè)計(jì),使機(jī)器人能夠?qū)崿F(xiàn)運(yùn)動(dòng)控制、數(shù)據(jù)采集、環(huán)境建圖等功能。系統(tǒng)的總體結(jié)構(gòu)圖如圖5所示,控制部分主要作用是通過(guò)PC機(jī)與機(jī)器人系統(tǒng)進(jìn)行通訊,實(shí)現(xiàn)人機(jī)交互功能,然后遠(yuǎn)程操作樹(shù)莓派對(duì)機(jī)器人系統(tǒng)進(jìn)行導(dǎo)航、視覺(jué)以及運(yùn)動(dòng)控制等智能算法的實(shí)現(xiàn),提高機(jī)器人的智能化功能。驅(qū)動(dòng)部分主要包括雷達(dá)的驅(qū)動(dòng)、相機(jī)的驅(qū)動(dòng)、電機(jī)驅(qū)動(dòng)等。數(shù)據(jù)處理部分是在ROS操作系統(tǒng)中進(jìn)行,主要是通過(guò)處理攝像頭和激光雷達(dá)等傳感器采集的數(shù)據(jù),對(duì)機(jī)器人進(jìn)行運(yùn)動(dòng)控制,并且進(jìn)行一些智能算法的處理。硬件部分主要由機(jī)器人的硬件平臺(tái)、上位機(jī)控制器、下位機(jī)控制器以及一些外圍部件組成。
圖5 清潔機(jī)器人系統(tǒng)總框圖
清潔機(jī)器人的工作是由移動(dòng)平臺(tái)和機(jī)械臂協(xié)調(diào)配合共同完成,機(jī)器人的運(yùn)動(dòng)控制也包括這兩部分。由于現(xiàn)實(shí)應(yīng)用中,清潔機(jī)器人的移動(dòng)平臺(tái)搭載水箱、一些配套工具等,這樣會(huì)使移動(dòng)平臺(tái)的負(fù)重增大,所以為了減小機(jī)器人的整體能耗,在機(jī)器人工作時(shí),本系統(tǒng)盡可能的減少移動(dòng)平臺(tái)的移動(dòng),配合機(jī)械臂來(lái)完成工作。
ROS平臺(tái)中提供了許多功能包,其中Move_base包來(lái)實(shí)現(xiàn)移動(dòng)平臺(tái)的自主移動(dòng),Moveit包來(lái)實(shí)現(xiàn)機(jī)械臂的運(yùn)動(dòng)規(guī)劃,在ROS系統(tǒng)中把實(shí)現(xiàn)機(jī)器人運(yùn)動(dòng)控制所需要的功能包配置完成之后,通過(guò)串口通信把控制命令從上位機(jī)下達(dá)到下位運(yùn)動(dòng)底盤中,首先控制清潔機(jī)器人運(yùn)動(dòng)到目標(biāo)位置,之后會(huì)發(fā)布一個(gè)消息(message)給上位機(jī),上位機(jī)接收到消息后啟動(dòng)機(jī)械臂控制程序,在工作過(guò)程中底盤的控制會(huì)實(shí)時(shí)采集機(jī)械臂各關(guān)節(jié)運(yùn)動(dòng)信息,反饋給上位機(jī),當(dāng)機(jī)械臂完成規(guī)定任務(wù)時(shí)也會(huì)發(fā)布一個(gè)消息給上位機(jī),通知上位機(jī)決策是否控制移動(dòng)平臺(tái)運(yùn)動(dòng)到下一個(gè)目標(biāo)位置??刂屏鞒倘鐖D6所示。
圖6 清潔機(jī)器人控制流程
運(yùn)行以下命令來(lái)控制清潔機(jī)器人:
1)roslaunch turn_on_wheeltec_robot turn_on_wheeltec_robot.launch∥啟動(dòng)運(yùn)動(dòng)底盤
2)roslaunch wheeltec_robot_rc key boardteleop.launch∥啟動(dòng)鍵盤控制機(jī)器人
3)roslaunchturn_on_wheeltec_robot 3d_mapping.launch ∥啟動(dòng)3D建圖
4)roslaunchturn_on_wheeltec_robot 3d_navigation.launch ∥啟動(dòng)3D導(dǎo)航
5)roslaunchros_detection rostensorflowclassify.launch∥啟動(dòng)物體識(shí)別
6)roslauncharm_demo cartesian_demo.launch∥機(jī)械臂笛卡爾空間路徑規(guī)劃
在ROS中設(shè)置好運(yùn)動(dòng)控制的配置文件后,首先啟動(dòng)機(jī)器人的底層控制launch文件,并打開(kāi)Rviz工具對(duì)機(jī)器人進(jìn)行實(shí)時(shí)監(jiān)控和操作,對(duì)清潔機(jī)器人的控制包括移動(dòng)平臺(tái)和機(jī)械臂的控制,通過(guò)Move_base包對(duì)移動(dòng)平臺(tái)進(jìn)行自主導(dǎo)航,使機(jī)器人運(yùn)動(dòng)到目標(biāo)位置,圖7和圖8分別表示機(jī)器人起始位置和目標(biāo)位置,藍(lán)線是表示機(jī)器人運(yùn)動(dòng)軌跡。
圖7 清潔機(jī)器人的起始位置
圖8 清潔機(jī)器人的目標(biāo)位置
在圖8中,可以看到清潔機(jī)器人到達(dá)目標(biāo)位置,太陽(yáng)能板已經(jīng)在機(jī)械臂的清潔范圍內(nèi),在OMPL運(yùn)動(dòng)規(guī)劃庫(kù)中,選擇RRT算法對(duì)機(jī)械臂進(jìn)行運(yùn)動(dòng)規(guī)劃,然后遠(yuǎn)程啟動(dòng)cartesian_demo.launch(笛卡爾空間路徑規(guī)劃)文件,文件中根據(jù)太陽(yáng)能板的位姿配置了兩段機(jī)械臂末端的軌跡路線,打開(kāi)Rviz可以看到運(yùn)動(dòng)效果如圖9所示。
圖9 機(jī)械臂運(yùn)動(dòng)軌跡
通過(guò)Rviz中的MotionPlanning插件,可以遠(yuǎn)程的實(shí)時(shí)監(jiān)控機(jī)械臂的運(yùn)動(dòng)效果和操作機(jī)械臂,實(shí)物機(jī)器人和Rviz中機(jī)器人運(yùn)動(dòng)效果對(duì)比如圖10所示,A,B,C,D四個(gè)圖分別表示機(jī)器人運(yùn)動(dòng)過(guò)程的初始、中間1、中間2、終止?fàn)顟B(tài)。
圖10 清潔機(jī)器人運(yùn)動(dòng)過(guò)程
通過(guò)在終端打開(kāi)rqt_plot工具,可以訂閱清潔機(jī)器人機(jī)械臂末端沿著規(guī)定路線運(yùn)動(dòng)時(shí),機(jī)械臂的四個(gè)關(guān)節(jié)隨時(shí)間變化的曲線,如圖11所示,可以看出每個(gè)關(guān)節(jié)都是隨時(shí)間平穩(wěn)連續(xù)的,機(jī)械臂能夠平滑運(yùn)行,通過(guò)以上實(shí)驗(yàn)表明了清潔機(jī)器人運(yùn)動(dòng)控制和實(shí)時(shí)操作的可行性,整個(gè)過(guò)程完成了清潔機(jī)器人對(duì)太陽(yáng)能板單個(gè)清潔的任務(wù)。
圖11 機(jī)械臂關(guān)節(jié)角度變化圖
本文提出了一種基于ROS仿真平臺(tái)的清潔機(jī)器人運(yùn)動(dòng)控制系統(tǒng),分別設(shè)計(jì)了機(jī)器人上位機(jī)、下位機(jī)控制程序,能夠完成在遠(yuǎn)程對(duì)機(jī)器人進(jìn)行實(shí)時(shí)的監(jiān)控和操作。在ROS仿真平臺(tái)下創(chuàng)建了清潔機(jī)器人的URDF模型,并針對(duì)機(jī)器人的工作環(huán)境創(chuàng)建3D仿真環(huán)境。通過(guò)Move_base對(duì)清潔機(jī)器人進(jìn)行自主導(dǎo)航,同時(shí)配置Moveit包,實(shí)現(xiàn)對(duì)機(jī)械臂的運(yùn)動(dòng)規(guī)劃,并通過(guò)仿真和實(shí)物對(duì)機(jī)器人自主導(dǎo)航和運(yùn)動(dòng)控制進(jìn)行驗(yàn)證,實(shí)驗(yàn)表明:該系統(tǒng)能夠完成對(duì)太陽(yáng)能板的清潔工作以及能夠?qū)崿F(xiàn)實(shí)時(shí)監(jiān)控功能。