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。