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

3.5.4 机器人底座模拟

通过上一节的操作,我们完成了可以用于ROS的机械臂URDF文件。我们已经构建了一个可以用于ROS的机器人模型,下面我们需要添加一些标签,以便在Gazebo中查看该模型。我们将从定义碰撞开始。

1.定义碰撞

为了在Gazebo中进行机器人模型的可视化,我们需要添加<collision>标签,位于<link>标签中,与<visual>标签同级,如下所示:

对于底座,由于我们在robot_base.urdf.xacro文件中定义了base_link,因此将上述内容添加至该文件中的相应位置。

对于所有的四个轮子连杆,由于我们在robot_essentials.xacro中进行的定义,因此将以下内容添加至该文件中:

由于Gazebo是一个物理模拟器,因此我们需要在<inertial>标签中添加物理学属性。我们可以从第三方软件中获得质量和惯性特性,将获得的惯性特性与适当的标签一起添加到<link>标签内,如下所示:

·对于底座,添加的内容如下:

·对于所有的四个轮子,添加的内容如下:

至此,我们完成了Gazebo的属性添加,下面创建机械装置。

2.定义执行器

下面我们需要在robot_base_essentials.xacro文件中为机器人轮子定义执行器信息:

在机器人模型文件中以宏的形式调用:

读者可以在本书的GitHub仓库查看robot_base_essentials.xacro文件,网址为https://github.com/PacktPublishing/ROS-Robotics-Projects-SecondEdition/blob/master/chapter_3_ws/src/robot_description/urdf/robot_base_essentials.xacro

至此,我们完成了执行器机械装置的调用。下面,我们将调用控制器,以便能够使用机械装置并使机器人动起来。

3.定义控制器

最后,我们将导入建立Gazebo和ROS通信连接所必需的插件。添加的方法为创建一个包含<Gazebo>标签的gazebo_essentials_base.xacro文件。

在创建的文件中,添加以下gazebo_ros_control插件:

机器人的差分驱动插件为:

轮子的摩擦属性以宏的形式定义,具体如下:

在机器人模型文件中调用宏的方式如下:

读者可以在本书的GitHub仓库查看gazebo_essentials_base.xacro文件,网址为https://github.com/PacktPublishing/ROS-Robotics-Projects-SecondEdition/blob/master/chapter_3_ws/src/robot_description/urdf/gazebo_essentials_base.xacro

至此,我们定义了包含Gazebo插件的机器人宏,下面我们将把它们添加到机器人模型文件中。具体步骤很简单,只需要在机器人模型文件的<robot>宏标签内添加以下代码:

至此,我们完成了URDF文件的构建,下面对控制器进行配置。首先创建以下我们将要使用到的配置文件:先返回工作空间,进入我们创建的配置文件夹,再创建控制器配置文件。执行的命令如下所示:

然后,将从本书代码仓库获取的文件复制到配置文件中,获取文件的链接为https://github.com/PacktPublishing/ROS-Robotics-Projects-SecondEdition/blob/master/chapter_3_ws/src/robot_description/config/control.yaml