ROS机器人项目开发11例(原书第2版)
上QQ阅读APP看书,第一时间看更新

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