- ROS機器人項目開發11例(原書第2版)
- (印)拉姆庫瑪·甘地那坦 郎坦·約瑟夫
- 589字
- 2021-01-26 17:17:42
3.6.4 機械臂模擬
通過上一節的操作,我們完成了可以用于ROS的機械臂URDF文件。現在我們構建了一個可以用于ROS的機器人模型,下面我們需要添加一些標簽,以便在Gazebo中查看該模型。我們將從定義碰撞開始。
1.定義碰撞
為了在Gazebo中查看機器人模型,我們需要添加<collision>標簽。它位于<link>標簽中,與<visual>標簽同級,定義方法與前面在<link>標簽中定義<visual>標簽的方法相同,只需在連桿上指定必要的視覺和慣性標簽即可:
·對于arm_base連桿,具體如下:
·對于其他連桿,請參考https://github.com/PacktPublishing/ROS-Robotics-Projects-SecondEdition/blob/master/chapter_3_ws/src/robot_description/urdf/robot_arm.urdf.xacro中robot_arm.urdf.xacro文件的代碼。
至此,我們為機器人模型添加了Gazebo屬性,下面開始創建機械裝置。
2.定義執行器
現在我們為所有的連桿添加執行器信息。執行器宏定義在robot_arm_essentials.xacro文件中,如下所示:
在機械臂文件中調用上述宏,具體如下:
讀者可以在本書的GitHub倉庫中查看robot_arm_essentials.xacro文件,網址為https://github.com/PacktPublishing/ROS-Robotics-Projects-SecondEdition/blob/master/chapter_3_ws/src/robot_description/urdf/robot_arm_essentials.xacro。
添加了機械裝置的定義之后,就可以調用控制器來使用相應的模型組件并讓機器人動起來了。
3.定義控制器
最后,我們來導入建立Gazebo和ROS通信連接所必需的插件。具體方法是向已經創建的gazebo_essentials_arm.xacro文件中添加一個控制器joint_state_publisher:
joint_state_publisher控制器(http://wiki.ros.org/joint_state_publisher)用于發布機械臂連桿在空間中的狀態信息。
讀者可以在本書的GitHub倉庫中查看gazebo_essentials_arm.xacro文件,網址為https://github.com/PacktPublishing/ROS-Robotics-Projects-SecondEdition/blob/master/chapter_3_ws/src/robot_description/urdf/gazebo_essentials_arm.xacro。
至此,我們為機器人模型定義了宏和Gazebo插件,下面我們把這些內容添加到機械臂文件中。可以通過在<robot>宏標簽內添加以下代碼的方法實現:
下面創建一個名為arm_control.yaml的文件,并定義機械臂控制器的配置參數:
將以下代碼復制到上述文件中:
至此,我們完成了機械臂模型的構建,下面在Gazebo中對其進行測試。