黃子豪 牛啟光 李廣棟
(山東科技大學(xué),山東 濟(jì)南 250031)
隨著人工智能時代的到來,人們越來越看重機(jī)器人的工作效率和服務(wù)體驗,由于當(dāng)代工業(yè)的自動化程度不斷提高,工程對機(jī)器人的需求和設(shè)計要求也越來越高,原有的開發(fā)系統(tǒng)已無法滿足迅速發(fā)展的工業(yè)化需求,于是ROS 應(yīng)運(yùn)而生,ROS 機(jī)器人操作系統(tǒng)的出現(xiàn)大大加快了機(jī)器人技術(shù)的發(fā)展進(jìn)程,提高了工業(yè)生產(chǎn)效率,促進(jìn)了未來工業(yè)的自動化和智能化趨勢。本文將研究基于ROS 的基座機(jī)械臂模型的建模與仿真,詳細(xì)介紹了如何通過軟件對機(jī)械臂的模型進(jìn)行仿真和優(yōu)化以及對其運(yùn)動規(guī)劃的研究。
ROS(Robot Operating System)源自斯坦福大學(xué)的機(jī)器人項目,目前作為一個開源的機(jī)器人開發(fā)項目由OSRF 公司維護(hù)。ROS 可以被稱為一個操作系統(tǒng),用來管理和開發(fā)機(jī)器人項目的硬件和軟件資源,并被用來提供一些常用或個性化的服務(wù),支持使用URDF 模型+機(jī)器人驅(qū)動的方式來封裝機(jī)器人。
ROS 使用Node 節(jié)點(diǎn)的方法實現(xiàn)程序間的通訊,項目中的各個Node 通過預(yù)先準(zhǔn)備發(fā)布的Message 消息、Topic 主題、Action 動作建立通訊,是以一種發(fā)布/訂閱的方式進(jìn)行消息的傳遞,節(jié)點(diǎn)可以在預(yù)設(shè)的主題中發(fā)布消息, 同時其他節(jié)點(diǎn)可以訂閱該主題的消息,實現(xiàn)消息的傳遞,但雙方節(jié)點(diǎn)互不相通,這種模塊化的通訊模式較為簡潔靈活,便于信息的發(fā)布和接收,圖1。
圖1 ROS 通訊機(jī)制
部分開發(fā)者不具備對機(jī)械臂的實體模型進(jìn)行研究的條件,受制于實體機(jī)械臂的開發(fā)成本等原因,而且初期在對基座機(jī)械臂的研究和開發(fā)的過程中,會遇到大量的問題以及參數(shù)上的修改變化,調(diào)試起來較為復(fù)雜, 所以本文選擇使用軟件進(jìn)行機(jī)械臂的仿真操作,利用SolidWorks 三維建模軟件根據(jù)機(jī)械臂的設(shè)計圖建立機(jī)械臂的三維模型,最后生成URDF 文件進(jìn)行軟件的仿真。
本文采用自頂向下的建模方法,首先根據(jù)基座機(jī)械臂的設(shè)計工程草圖,確定各零件關(guān)節(jié)之間的幾何關(guān)系和參考坐標(biāo),實現(xiàn)各相關(guān)零件的結(jié)構(gòu)組合,當(dāng)對某個零件進(jìn)行改動時,與其相關(guān)的其他部位也隨之更新,便于后續(xù)的整體設(shè)計。
模型設(shè)計并生成后,利用solidworks2urdf 插件進(jìn)行三維模型的解析,此時可觀察到機(jī)械臂的3D 模型的裝配圖(圖2),也可根據(jù)關(guān)節(jié)的幾何關(guān)系,設(shè)置關(guān)節(jié)自由度和父子關(guān)節(jié)的位置參數(shù)等,為使其更加直觀的顯示,還可為模型添加坐標(biāo)系和基準(zhǔn)軸,最后生成相應(yīng)的URDF 文件,用于后續(xù)的Gazebo 軟件仿真。
圖2 基座機(jī)械臂的3D 模型圖
Gazebo 是作為一款成熟且開源的三維物理仿真平臺, 具備豐富的編程和圖形處理模塊、高效強(qiáng)大的物理引擎、高性能的三維圖形渲染功能。Gazebo 可創(chuàng)建一個虛擬的可視化仿真環(huán)境,開發(fā)者可自主創(chuàng)建一個機(jī)械臂的模型(圖3),并在模型中設(shè)置機(jī)械臂的質(zhì)量、摩擦系數(shù)等物理屬性,在這個仿真環(huán)境中可以模擬真實機(jī)器人的運(yùn)動功能和傳感數(shù)據(jù),將參數(shù)數(shù)據(jù)收集后與Rviz 配合使用,效果更好。
圖3 機(jī)械臂的Gazebo 仿真模型
使用Gazebo 軟件進(jìn)行仿真相比直接對硬件操作較為靈活,參數(shù)調(diào)整方便,運(yùn)行速度快且耗費(fèi)成本較低,缺點(diǎn)是與實際數(shù)據(jù)可能存在一定誤差,準(zhǔn)確性相比硬件操作低。
URDF 建模生成的文件較為繁雜冗余,代碼可讀性不高,我們可在URDF 模型的基礎(chǔ)上進(jìn)行優(yōu)化,通過xacro 中的宏定義、文件包含的精簡,編寫可供重復(fù)使用的接口,降低文件的復(fù)雜度,提高代碼的簡潔性和復(fù)用性,實現(xiàn)對URDF 文件的優(yōu)化。
所做優(yōu)化如下:
在Gazebo 中進(jìn)行仿真的過程中, 如果需要對機(jī)械臂模型進(jìn)行運(yùn)動規(guī)劃和控制,可選擇使用MoveIt 來實現(xiàn)。
MoveIt! 是一個機(jī)器人相關(guān)的工具集軟件, 其中包含了運(yùn)動規(guī)劃、3D 感知、運(yùn)動學(xué)控制、碰撞檢測、機(jī)器人導(dǎo)航等多種集成庫,以move_group 為核心節(jié)點(diǎn)控制ROS 機(jī)器人的動作,move_group 擁有著多個編程接口,如C++、Python、GUI。MoveIt 為開發(fā)者提供了一個接口豐富便于上手的平臺, 用于機(jī)器人的運(yùn)動控制部分設(shè)計和開發(fā),可打包生成Gazebo 仿真中所需的相關(guān)配置文件,后期只需開發(fā)者修改相關(guān)參數(shù)來對機(jī)器人的運(yùn)動進(jìn)行控制,具有便利性和代碼復(fù)用性,同時裝配有多種運(yùn)動輔助插件,提高了程序的可擴(kuò)展性。
首先通過MoveIt Setup Assistant 生成配置文件,它為機(jī)器人生成SRDF 文件和MoveIt 管道的配置文件, 用戶可在其中配置碰撞免檢矩陣(ACM)、增加虛擬關(guān)節(jié)節(jié)點(diǎn)、添加規(guī)劃群組、固定機(jī)器人姿態(tài)、末端標(biāo)簽執(zhí)行器、增加被動關(guān)節(jié)節(jié)點(diǎn),最后導(dǎo)出配置文件。
接下來通過move_group 提供的編程接口,根據(jù)開發(fā)的需要,編寫運(yùn)動規(guī)劃部分的代碼, 本文主要實現(xiàn)點(diǎn)到點(diǎn)的簡單直線運(yùn)動,故可選擇使用笛卡爾路徑規(guī)劃,使用C++編寫API 接口,部分代碼如下:
笛卡爾路徑規(guī)劃:
本文研究并實現(xiàn)了基于ROS 的基座機(jī)械臂的建模與軟件仿真,并對模型進(jìn)行了優(yōu)化,提高了代碼的簡潔性和復(fù)用性,便于后續(xù)使用MoveIt 工具進(jìn)行機(jī)械臂的運(yùn)動規(guī)劃, 并實現(xiàn)了對機(jī)械臂運(yùn)動的笛卡爾路徑規(guī)劃, 通過較為簡單的例子介紹了如何使用ROS 進(jìn)行機(jī)器人的開發(fā),適用于初學(xué)者對ROS 開發(fā)的探索與研究,同時希望ROS 系統(tǒng)繼續(xù)完善和優(yōu)化,持續(xù)不斷地為機(jī)器人事業(yè)做出貢獻(xiàn)。