黃子豪 牛啟光 李廣棟
(山東科技大學,山東 濟南 250031)
隨著人工智能時代的到來,人們越來越看重機器人的工作效率和服務體驗,由于當代工業的自動化程度不斷提高,工程對機器人的需求和設計要求也越來越高,原有的開發系統已無法滿足迅速發展的工業化需求,于是ROS 應運而生,ROS 機器人操作系統的出現大大加快了機器人技術的發展進程,提高了工業生產效率,促進了未來工業的自動化和智能化趨勢。本文將研究基于ROS 的基座機械臂模型的建模與仿真,詳細介紹了如何通過軟件對機械臂的模型進行仿真和優化以及對其運動規劃的研究。
ROS(Robot Operating System)源自斯坦福大學的機器人項目,目前作為一個開源的機器人開發項目由OSRF 公司維護。ROS 可以被稱為一個操作系統,用來管理和開發機器人項目的硬件和軟件資源,并被用來提供一些常用或個性化的服務,支持使用URDF 模型+機器人驅動的方式來封裝機器人。
ROS 使用Node 節點的方法實現程序間的通訊,項目中的各個Node 通過預先準備發布的Message 消息、Topic 主題、Action 動作建立通訊,是以一種發布/訂閱的方式進行消息的傳遞,節點可以在預設的主題中發布消息, 同時其他節點可以訂閱該主題的消息,實現消息的傳遞,但雙方節點互不相通,這種模塊化的通訊模式較為簡潔靈活,便于信息的發布和接收,圖1。

圖1 ROS 通訊機制
部分開發者不具備對機械臂的實體模型進行研究的條件,受制于實體機械臂的開發成本等原因,而且初期在對基座機械臂的研究和開發的過程中,會遇到大量的問題以及參數上的修改變化,調試起來較為復雜, 所以本文選擇使用軟件進行機械臂的仿真操作,利用SolidWorks 三維建模軟件根據機械臂的設計圖建立機械臂的三維模型,最后生成URDF 文件進行軟件的仿真。
本文采用自頂向下的建模方法,首先根據基座機械臂的設計工程草圖,確定各零件關節之間的幾何關系和參考坐標,實現各相關零件的結構組合,當對某個零件進行改動時,與其相關的其他部位也隨之更新,便于后續的整體設計。
模型設計并生成后,利用solidworks2urdf 插件進行三維模型的解析,此時可觀察到機械臂的3D 模型的裝配圖(圖2),也可根據關節的幾何關系,設置關節自由度和父子關節的位置參數等,為使其更加直觀的顯示,還可為模型添加坐標系和基準軸,最后生成相應的URDF 文件,用于后續的Gazebo 軟件仿真。

圖2 基座機械臂的3D 模型圖
Gazebo 是作為一款成熟且開源的三維物理仿真平臺, 具備豐富的編程和圖形處理模塊、高效強大的物理引擎、高性能的三維圖形渲染功能。Gazebo 可創建一個虛擬的可視化仿真環境,開發者可自主創建一個機械臂的模型(圖3),并在模型中設置機械臂的質量、摩擦系數等物理屬性,在這個仿真環境中可以模擬真實機器人的運動功能和傳感數據,將參數數據收集后與Rviz 配合使用,效果更好。

圖3 機械臂的Gazebo 仿真模型
使用Gazebo 軟件進行仿真相比直接對硬件操作較為靈活,參數調整方便,運行速度快且耗費成本較低,缺點是與實際數據可能存在一定誤差,準確性相比硬件操作低。
URDF 建模生成的文件較為繁雜冗余,代碼可讀性不高,我們可在URDF 模型的基礎上進行優化,通過xacro 中的宏定義、文件包含的精簡,編寫可供重復使用的接口,降低文件的復雜度,提高代碼的簡潔性和復用性,實現對URDF 文件的優化。
所做優化如下:


在Gazebo 中進行仿真的過程中, 如果需要對機械臂模型進行運動規劃和控制,可選擇使用MoveIt 來實現。
MoveIt! 是一個機器人相關的工具集軟件, 其中包含了運動規劃、3D 感知、運動學控制、碰撞檢測、機器人導航等多種集成庫,以move_group 為核心節點控制ROS 機器人的動作,move_group 擁有著多個編程接口,如C++、Python、GUI。MoveIt 為開發者提供了一個接口豐富便于上手的平臺, 用于機器人的運動控制部分設計和開發,可打包生成Gazebo 仿真中所需的相關配置文件,后期只需開發者修改相關參數來對機器人的運動進行控制,具有便利性和代碼復用性,同時裝配有多種運動輔助插件,提高了程序的可擴展性。
首先通過MoveIt Setup Assistant 生成配置文件,它為機器人生成SRDF 文件和MoveIt 管道的配置文件, 用戶可在其中配置碰撞免檢矩陣(ACM)、增加虛擬關節節點、添加規劃群組、固定機器人姿態、末端標簽執行器、增加被動關節節點,最后導出配置文件。
接下來通過move_group 提供的編程接口,根據開發的需要,編寫運動規劃部分的代碼, 本文主要實現點到點的簡單直線運動,故可選擇使用笛卡爾路徑規劃,使用C++編寫API 接口,部分代碼如下:
笛卡爾路徑規劃:


本文研究并實現了基于ROS 的基座機械臂的建模與軟件仿真,并對模型進行了優化,提高了代碼的簡潔性和復用性,便于后續使用MoveIt 工具進行機械臂的運動規劃, 并實現了對機械臂運動的笛卡爾路徑規劃, 通過較為簡單的例子介紹了如何使用ROS 進行機器人的開發,適用于初學者對ROS 開發的探索與研究,同時希望ROS 系統繼續完善和優化,持續不斷地為機器人事業做出貢獻。