- ROS機器人項目開發11例(原書第2版)
- (印)拉姆庫瑪·甘地那坦 郎坦·約瑟夫
- 1622字
- 2021-01-26 17:17:39
3.5.3 機器人底座建模
至此我們已經具備了構建機器人底座所需的所有信息,下面我們開始進行機器人建模。我們構建的機器人模型如圖3.4所示。
圖3.4 我們的移動機械臂模型
在開始使用URDF為機器人建模之前,需要先了解一些基礎知識。可以使用幾何標記來定義標準形狀(如圓柱體、球體和長方體),但不能使用幾何標簽來對復雜的幾何體建模或設置其樣式。這些工作可以使用第三方軟件來完成,例如:復雜的計算機輔助設計(Computer Aided Design,CAD)軟件,如Creo或Solidworks;開源建模工具,如Blender、FreeCAD和Meshlab。完成建模后,可以將其作為網格元素導入。本書中的模型是由這樣的開源建模工具完成建模的,并作為網格元素導入到了URDF中。此外,有時如果在建模時編寫了過多的XML標記,則會給我們帶來麻煩,使得在構建復雜的機器人時迷失方向。因此,我們將使用宏定義的方式進行建模,宏在URDF中被稱為xacro(http://wiki.ros.org/xacro),這將有助于簡化代碼并避免標記重復。
我們的機器人底座模型主要使用以下標記:
·<xacro>:幫助定義宏以供重用。
·<link>:包含機器人的幾何表示和可視化信息。
·<inertial>:包含連桿的質量和慣性矩。
·<joint>:包含具有約束定義的連桿之間的連接。
·<Gazebo>:包含在Gazebo和ROS之間建立連接的插件以及模擬屬性。
我們的機器人底座模型包含一個底盤和四個輪子,如圖3.5所示,讀者可以查看相應的連桿元素的信息。
圖3.5 機器人底座模型的連桿與坐標信息
底盤名為base_link,可以在其中心看到坐標系。輪子(或wheel_frames)相對于底座連桿base_link框架放置。如圖3.5所示,模型遵循右手坐標系。現在,可以確定機器人的前進方向將始終朝向x軸,旋轉方向圍繞z軸。另外,請注意,輪子相對于其參考系繞y軸旋轉(將在后面的代碼中看到此參考系)。
1.初始化工作空間
我們需要做的就是為機器人模型定義類似<link>和<joint>網格的標記。網格文件可以從https://github.com/PacktPublishing/ROS-Robotics-Projects-SecondEdition/tree/master/chapter_3_ws/src/robot_description/meshes獲取。
按照以下步驟初始化工作空間:
1)創建ROS工作空間,添加我們的文件。在新建的終端窗口中使用以下命令生成功能包:
2)使用以下命令創建文件夾:
3)復制從前述網址下載的網格文件,并粘貼到網格文件夾中。然后,使用以下命令進入urdf文件夾,并創建名為robot_base.urdf.xacro的文件:
4)初始化XML版本標記以及<robot>標記,稍后將按照后面的內容一步步地將下載得到的源碼復制進來:
至此,我們完成了工作空間的初始化,下面定義連桿組件。
2.定義連桿組件
目前我們已經完成了機器人模型的部分構建,接下來將定義底盤連桿的代碼復制到<robot>標記下(即兩個<robot>標記之間):
連桿元素定義代碼定義了機器人的幾何特征以及可視化信息,上述代碼定義的是機器人底盤,我們稱之為base_link。
標簽很簡單。如果讀者想要深入學習相關內容,可以訪問http://wiki.ros.org/urdf/XML/link。
我們需要將四個輪子連接到base_link。為了便于定義,我們將通過xacro來實現同一段輪子模型代碼的復用,復用時將對其進行重命名,以實現對四個輪子的區分。首先創建一個名為robot_essentials.xacro的文件,然后定義標準的宏,以便對輪子模型進行復用:
至此,我們在上述文件中創建了一個輪子的通用宏。現在需要做的是在自己的機器人模型文件robot_base.urdf.xacro中調用該宏文件,具體如下所示:
通過上述操作,讀者能夠用很少的代碼通過宏的形式實現對相同連桿元素模型代碼的復用。下面將定義關節組件。
如果讀者想要深入學習xacro的相關內容,可以訪問http://wiki.ros.org/xacro。
3.定義關節組件
如圖3.5所示,作為關節組件的輪子僅與機器人底盤相連接,因此輪子連接至base_link,并且繞各自坐標系中的y軸旋轉。鑒于此,我們可以使用連續型的關節組件。同時,由于四個輪子是相同的,因此我們將作為輪子的關節組件以xacro的形式定義在robot_essentials.xacro文件中:
可以看到,在原來的代碼塊中,只有很少的原始代碼以及名稱需要進行修改。由此,在robot_base.urdf.xacro文件中,我們可以對輪子關節組件進行如下定義:
至此,我們已經完成了機器人底座的模型構建,下面我們通過可視化工具rviz來看一下構建的模型是否和預期一致。具體操作為在新建的終端窗口中執行以下命令:
添加機器人模型,并在“Global”選項中將“Fixed Frame”設置為base_link。如果一切順利的話,讀者將能夠在可視化界面中看到我們構建的機器人底座模型。可以通過將gui參數設置為true來啟動滑塊控制器,進而通過拖動滑塊來移動底座上的輪子。
下面我們介紹如何進行機器人底座模擬。