李志文,程志江,杜一鳴,鄧佳桐
(新疆大學電氣工程學院,新疆烏魯木齊 830046)
21世紀我國提倡綠色發展,以化石能源燃料為主的發電方式開始退出歷史舞臺,國家開始大力發展太陽能、風力等清潔能源發電方式,其中目前太陽能發電的主要方式是光伏太陽能板發電,光伏太陽能板發電面臨的主要問題是光伏組件上的灰塵清潔問題[1]。如何使清潔機器人快速高效的清潔光伏組件上的灰塵有重大研究意義。本文研究的清潔機器人是由移動平臺和四自由度機械臂組成的移動機械臂,具有很好的靈活性和廣闊的操作空間,性能優于固定的機械臂[2]。近幾年,移動機械臂的應用越來越廣泛,例如:航天、采礦、深海探究、農業等領域[3]。對于移動機械臂的研究也面臨著很多復雜的問題,比如:移動機械臂的車-臂運動不協調,智能化程度不高的問題,機器人操作平臺編程效率低下、成本高、對機器人不能實時控制和仿真等[4]。針對這些問題,近幾年全球也研究出了很多操作軟件。
其中ROS操作系統作為一個開源的系統,近幾年在機器人領域應用越來越廣泛,ROS為開發者提供了廣泛的工具包和庫文件,擴展性強[5],本文所設計的移動平臺的控制器和機械臂的控制器,以機器人運動控制核心ros_control作為控制機制,并采用串口通信實現上位機與底層的通信,通過在上位機配置ros_control控制機制來完成清潔機器人的協調運動控制和運動規劃。最后通過實物仿真表明該方法的可行性。
ROS操作系統是一個開發機器人的常用開源系統,提供了大量的庫文件和工具,擁有開發機器人統一接口和框架[6]。通過點對點的設計完成各獨立節點的功能傳遞,提供了各種功能包,搭建控制平臺,適用于多機協同,并且支持多種語言開發來實現機器人仿真和控制實物機器人[7]。為機器人的開發提供了許多便利,滿足各種需求,功能十分強大。ROS操作系統控制原理示意圖如圖1所示。

圖1 ROS系統控制原理示意圖
ROS操作系統對機器人進行仿真,必須用到描述機器人模型的(Unified Robot Description Format. URDF)文件[8],UDRF采用XML文件格式,文件內容包含:機器人的形狀、物理信息、運動學、動力學等基本信息,支持提供模型的自碰撞檢測信息[9]。本文所研究的清潔機器人三維模型首先使用SolidWorks軟件構建出來,之后通過SW2URDF插件把三維模型轉化為相應的URDF模型。
ROS中的Rviz是一個三維可視化工具,SolidWorks所構建三維模型轉化的URDF文件可以導入Rviz工具中,通過運行launch文件,可以在Rviz中顯示虛擬的機器人三維模型[10],對機器人進行運動控制時,可以在Rviz中實時的顯示機器人的狀態信息。如圖2所示。

圖2 Rviz中的機器人模型
機器人進行運動學求解、導航運動和路徑規劃等主要依賴Moveit功能包。用戶通過設置Moveit! SetupAssistant助手,來對Moveit進行一系列配置,其中,Moveit中的核心節點Move_Group作為樞紐,不斷地同時接受和反饋機器人運動關節joint state信息,為控制機器人提供完整的服務[11]。Moveit整體框架圖如圖3所示。

圖3 ROS Moveit! 高層框架
傳統的2D建圖檢測不到三維空間里某些障礙物,從而影響機器人工作,本文根據清潔機器人的工作環境,采用激光雷達+深度相機聯合建圖的方法構建3D地圖。激光雷達具有非常高的探測精度且不受環境影響,但是三維激光雷達價格很高,這樣會拉高機器人的成本[12]。深度相機價格相對便宜,原理是通過紅外發射器和感應器將環境中的畫面數字化,然后通過圖像處理得到清晰的三維點云畫面,但深度相機受環境影響大,特別是強光的影響[13]。本文結合了激光雷達和深度相機的優缺點,利用深度相機采集到的圖像信息結合激光雷達測定的距離,可以精確的標定出障礙物和障礙物的特征,完美的構建出機器人工作環境。本系統實驗所處的三維環境信息如圖4所示。

圖4 機器人所在的三維仿真環境
要實現對清潔機器人的機械臂的控制,首先要對機械臂進行運動規劃,建立運動學模型是研究機器人運動基礎。目前在機械臂建模方法中D-H坐標變換法是應用最廣的方法,該方法可應用于不同機械結構的機械臂,針對本文研究的清潔機械臂的機械結構建立運動學模型[14],其中每個關節的轉動變量完全可以用αi、ai、di和θi四個參數描述,表1為清潔機械臂的D-H參數表。

表1 清潔機械臂D-H參數表
清潔機器人的機械臂是由末端裝置和各個連桿組成,為研究機器人運動學,需要建立每個連桿對應的坐標系,這些坐標系之間的相對關系可以用齊次坐標變換的方法描述,每個關節的坐標表換矩陣用Ti表示

(1)

(2)

(3)

(4)
式中:si=sinθi,ci=cosθi。
將每個關節所對應的變換矩陣Ti相乘可以得到機器人系統的總的變換矩陣,即機器人的運動學模型。

(5)
式中:u=L3s2-L2c2+L3c2c4sinθi,v=L1-L3c2-L2s2+L4c4s2
機器人的逆運動學求解是在已知機械臂末端的狀態下,求解所對應的各個關節變量的過程,首先假設機械臂末端狀態在基坐標系中所對應位姿矩陣為A

(8)
其中式中:n,o,a表示機械臂末端在基坐標的相對姿態;P表示機械臂末端在基坐標的相對位置關系。令T=A得出

(9)
由上述公式可求得清潔機器人的機械臂逆運動學解析式

(10)
根據(10)式,可以求出機械臂末端狀態所對應各個關節的變量。
清潔機器人在ROS操作系統下,采用分層式設計結構和模塊化思想[15],把清潔機器人總系統分為四個部分:分別為控制部分、驅動部分、數據處理部分、硬件部分。通過對這四部分設計,使機器人能夠實現運動控制、數據采集、環境建圖等功能。系統的總體結構圖如圖5所示,控制部分主要作用是通過PC機與機器人系統進行通訊,實現人機交互功能,然后遠程操作樹莓派對機器人系統進行導航、視覺以及運動控制等智能算法的實現,提高機器人的智能化功能。驅動部分主要包括雷達的驅動、相機的驅動、電機驅動等。數據處理部分是在ROS操作系統中進行,主要是通過處理攝像頭和激光雷達等傳感器采集的數據,對機器人進行運動控制,并且進行一些智能算法的處理。硬件部分主要由機器人的硬件平臺、上位機控制器、下位機控制器以及一些外圍部件組成。

圖5 清潔機器人系統總框圖
清潔機器人的工作是由移動平臺和機械臂協調配合共同完成,機器人的運動控制也包括這兩部分。由于現實應用中,清潔機器人的移動平臺搭載水箱、一些配套工具等,這樣會使移動平臺的負重增大,所以為了減小機器人的整體能耗,在機器人工作時,本系統盡可能的減少移動平臺的移動,配合機械臂來完成工作。
ROS平臺中提供了許多功能包,其中Move_base包來實現移動平臺的自主移動,Moveit包來實現機械臂的運動規劃,在ROS系統中把實現機器人運動控制所需要的功能包配置完成之后,通過串口通信把控制命令從上位機下達到下位運動底盤中,首先控制清潔機器人運動到目標位置,之后會發布一個消息(message)給上位機,上位機接收到消息后啟動機械臂控制程序,在工作過程中底盤的控制會實時采集機械臂各關節運動信息,反饋給上位機,當機械臂完成規定任務時也會發布一個消息給上位機,通知上位機決策是否控制移動平臺運動到下一個目標位置。控制流程如圖6所示。

圖6 清潔機器人控制流程
運行以下命令來控制清潔機器人:
1)roslaunch turn_on_wheeltec_robot turn_on_wheeltec_robot.launch∥啟動運動底盤
2)roslaunch wheeltec_robot_rc key boardteleop.launch∥啟動鍵盤控制機器人
3)roslaunchturn_on_wheeltec_robot 3d_mapping.launch ∥啟動3D建圖
4)roslaunchturn_on_wheeltec_robot 3d_navigation.launch ∥啟動3D導航
5)roslaunchros_detection rostensorflowclassify.launch∥啟動物體識別
6)roslauncharm_demo cartesian_demo.launch∥機械臂笛卡爾空間路徑規劃
在ROS中設置好運動控制的配置文件后,首先啟動機器人的底層控制launch文件,并打開Rviz工具對機器人進行實時監控和操作,對清潔機器人的控制包括移動平臺和機械臂的控制,通過Move_base包對移動平臺進行自主導航,使機器人運動到目標位置,圖7和圖8分別表示機器人起始位置和目標位置,藍線是表示機器人運動軌跡。

圖7 清潔機器人的起始位置

圖8 清潔機器人的目標位置
在圖8中,可以看到清潔機器人到達目標位置,太陽能板已經在機械臂的清潔范圍內,在OMPL運動規劃庫中,選擇RRT算法對機械臂進行運動規劃,然后遠程啟動cartesian_demo.launch(笛卡爾空間路徑規劃)文件,文件中根據太陽能板的位姿配置了兩段機械臂末端的軌跡路線,打開Rviz可以看到運動效果如圖9所示。

圖9 機械臂運動軌跡
通過Rviz中的MotionPlanning插件,可以遠程的實時監控機械臂的運動效果和操作機械臂,實物機器人和Rviz中機器人運動效果對比如圖10所示,A,B,C,D四個圖分別表示機器人運動過程的初始、中間1、中間2、終止狀態。

圖10 清潔機器人運動過程
通過在終端打開rqt_plot工具,可以訂閱清潔機器人機械臂末端沿著規定路線運動時,機械臂的四個關節隨時間變化的曲線,如圖11所示,可以看出每個關節都是隨時間平穩連續的,機械臂能夠平滑運行,通過以上實驗表明了清潔機器人運動控制和實時操作的可行性,整個過程完成了清潔機器人對太陽能板單個清潔的任務。

圖11 機械臂關節角度變化圖
本文提出了一種基于ROS仿真平臺的清潔機器人運動控制系統,分別設計了機器人上位機、下位機控制程序,能夠完成在遠程對機器人進行實時的監控和操作。在ROS仿真平臺下創建了清潔機器人的URDF模型,并針對機器人的工作環境創建3D仿真環境。通過Move_base對清潔機器人進行自主導航,同時配置Moveit包,實現對機械臂的運動規劃,并通過仿真和實物對機器人自主導航和運動控制進行驗證,實驗表明:該系統能夠完成對太陽能板的清潔工作以及能夠實現實時監控功能。