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中对其进行测试。