朱建軍,王明園,張博文
(吉林化工學院 信息與控制工程學院,吉林 吉林 132022)
隨著“中國制造2020”和“工業4.0”的提出[1],中國開始向人工智能應用發展,ROS(Robot Operating System)作為開源機器人操作系統平臺,免費提供開放的源碼,為人工智能的發展提供了強大的動力[2],開源機器人操作系統被廣泛使用.ROS開源操作系統具有復用化和模塊化功能,使機器人開發變得更加容易,為智能機器人的發展提供技術保障,極大地提高了開發效率[3].相比傳統的Matlab、OpenGL等操作系統,ROS更易上手.利用SolidWorks創建機器人模型,進一步降低模型創建的復雜度和難度,有效提高建模的效率.
ROS系統源于2007年機器人技術公司“Willow Garage”個人機器人項目與斯坦福大學人工智能實驗室項目的合作[4].2008年后,由柳樹車庫進行推廣和維護.經過多年的發展,ROS操作系統變得更加完善,不僅為操作者提供了實用性較強的工具也提供了先進的開源算法.ROS主要用于機器人的仿真和控制,他是分布式體系結構,每個軟件包都是獨立的.ROS可以獨立運行,也可以根據使用要求進行松耦合運行.按照ROS的系統框架可將其分為計算圖級、社區級、文件系統級3個層級.ROS支持多種語言開發,例如Python、Java、C++等,ROS的代碼復用使得對機器人的開發更加便捷,開源操作平臺降低了機器人開發的難度,開發者可以在ROS社區分享和交流技術方面的知識.ROS具有點對點設計、多種編程語言、快速測試和分布式計算等優點,基于ROS的機器人應用開發逐漸成為主流,目前大多數機器人工廠都在使用他.
ROS環境下建模比較復雜,有一定的局限性需要分析復雜的程序和模型結構,步驟過于繁瑣,設計者必須在建模時保持清晰的思路.將外部模型導入ROS中可以有效減少建模時間,提高工作效率.利用SolidWorks三維建模軟件[5]建立機器人的模型,再將模型文件導入ROS,該方法具有操作簡單、使用方便等優點.
SolidWorks的建模方式分為兩種,分別為自底向上和自頂向下.自底向上的建模方法是先繪制總體模型所需要的各個零部件,再利用SolidWorks中的組合關系將零部件進行配合,此建模方式可以對零部件的進行旋轉和移動,但對零部件精度的要求十分精確.誤差的存在會使零件無法正常配合,再次修改比較麻煩.另一種為自頂向下的建模方法,這種建模方法是先在裝配體中繪制零件的草圖,確定終止關系和模型之間的參考關系.以這種方式建模時修改參考零部件模型,其他零部件也會進行相應的更新,對設計者的要求較高,設計思路要十分清晰,操作比較困難.
本文采用自底向上的建模方法,先繪制各個零件的草圖,按照要求的尺寸和幾何關系進行圖形的繪制,再利用切割和拉伸定義每個零部件的厚度尺寸和相應的規格.圖1為移動機器人的每個零部件的三維模型和最終的組裝模型.

圖1 零件與裝配圖
模型組裝完成后,再利用sw2urdf插件將三維模型生成ROS中可執行的URDF文件,在生成URDF文件之前先在三維模型中添加相應的坐標系和基準軸,坐標系是每個關節相對于仿真環境中世界坐標系的位置和方向,生成URDF文件時可以形成相應的坐標點.基準軸是每個關節旋轉的軸承,本次設計的移動機器人共需要5個基準軸,分別為4個輪子旋轉的基準軸和激光雷達的基準軸,坐標系和基準軸如圖2所示.


圖2 坐標與基準軸
移動機器人模型文件采用四驅滑動驅動,可以根據四輪驅動模型進行模型的運動學分析.移動機器人的運動狀態由角速度和線速度兩個參數決定[6],運動模型分析如圖3所示.

圖3 運動模型分析
vr=ω×L,
(1)
其中ω是機器人自身旋轉的角速度,L是車輪中心到機器人的中心的距離,vr是提供小車運動的角速度.再由計算出vr得到小車輪子的合速度[7].
vw=vr+v,
(2)
(3)
(4)
(5)
(6)
а是車身底盤寬度的1/2,b是小車身底盤長度的1/2,通過一個簡單的矢量加運算,可以計算小車的輪子合速vw.
URDF(Unified Robot Description Format)是一種在ROS中描述機器人仿真模型的編程語言[8],他基于XML文本文件來描述機器人的模型.用戶可以根據機器人模型的屬性進行模型尺寸、形狀、顏色、質量和旋轉類型等基本屬性的修改,還可以加入機器人動力學、運動學和碰撞檢測等.
[9]

圖4 模型文件關節
URDF模型描述文件中包含本體、關節和節點的定義以及父節點和子節點之間的關系,基本編程語法如表1所示.

表1 URDF基本語法

圖5 link描述示意圖

圖6 關節連接示意圖
XACRO是對URDF文件進行優化后的模型文件,解決了URDF文件存在代碼冗長,重復內容過多、不便修改模型文件參數等問題,另外XACRO具有參數計算功能,更利于二次開發.XACRO文件要首先定義標頭,其格式如下:
...
URDF文件的優化方式有以下3種:
2.宏定義,可以完成一些最小模塊的定義,在程序中可以重復調用,降低了代碼的冗長.
3.數學計算,通過計算得到精確的參數,使模型更加精確,便于修改.
將優化的模型文件導入到Rviz中顯示3D模型,其導入流程圖如圖7.

圖7 模型導入流程
在模型文件所在的目錄下打開終端并輸入指令roslaunch car_gaebo mycar.launch,通過Rviz顯示模型,如圖8(a)、(b)分別為小車在Rviz的3D模型、TF坐標系和模型中的link.

圖8 模型導入圖
在新終端輸入roslaunch car_gazebo teleop.launch控制小車運動,機器人小車的運行狀態可以通過仿真環境gazebo進行監控,同時在終端可以實時獲取小車運行時的軌跡坐標及狀態,仿真測試結果如圖9和表2所示.

時間變化/s圖9 位置變化曲線

表2 位置變化數據
Rviz中小車的軌跡路線和雷達信息測試結果如圖10所示,其中①是小車運行時的歷史軌跡,②是雷達檢測周圍障礙物的信息.通過添加相應的控制程序后可以實現鍵盤控制功能,行走路線與鍵盤控制路線基本一致,實現機器人模型可控,雷達檢測信息與障礙物信息相吻合.


圖10 仿真測試圖
本文實現了在SolidWorks創建機器人的三維模型,經過配合組裝后轉換為URDF文件,在優化模型文件后導入到仿真環境中添加相應的控制程序,利用鍵盤控制小車的運動,通過最終的測試,小車成功在Gazebo和Rviz中運行.相比于ROS環境下的建模,利用SolidWorks建模能夠減少建模的時間,提高模型的準確性.實踐證明了方案在模型構建中的可靠性和有效性,通過外部建立模型再導入到Gazebo和Rviz中可以提高工作效率,克服ROS本身建模的局限性.后續可以添加相應的定位建圖和路徑規劃算法,測試小車在陌生環境中的導航等功能.