《精通ROS机器人编程(原书第2版) 》 —3.12 为差速驱动移动机器人创建机器人模型
3.12 为差速驱动移动机器人创建机器人模型
差速轮式机器人在机器人底盘的两端安装两个轮子,整个底盘由一个或两个脚轮支撑。轮子将通过调节速度来控制机器人的移动速度。如果两个马达以相同的速度运行,轮子会向前或向后移动。如果一个轮子的速度比另一个慢,机器人就会转向低速的一边。如果我们想把机器人转动到左边,就减小左轮的速度,反之亦然。
底盘上有两个辅助轮,称为脚轮,它支撑着机器人并根据主轮的移动自由旋转。
这个机器人的URDF模型存放在下载的ROS软件包中。最终的机器人模型如图3-12所示:
图3-12 差速驱动移动机器人
前面的机器人有5个关节和5个连杆。2个主要的关节将轮子连接到机器人上。其余3个是固定关节,2个用于将支撑脚轮连接到机器人主体上,1个用于将底盘连接到机器人主体上。图3-13是该机器人的连接图。
图3-13 差速驱动移动机器人的连杆和关节连接图
我们来看看URDF文件中的部分重要代码。这个URDF文件名为diff_wheeled_robot.xacro,位于下载的ROS软件包内的urdf文件夹中。
这里给出了URDF文件的第一部分。机器人被命名为differential_wheeled_robot,还包含一个名为wheel.urdf.xacro的URDF文件。xacro文件包含轮子的定义及其传动方式。如果我们使用该xacro文件,就可以避免为两个轮子写两套定义。因为两个轮子在形状和大小上是相同的,所以我们采用xacro的定义:
轮子的定义在wheel.urdf.xacro中给出。我们可以指定轮子是否必须放在左边、右边、前面或后面。使用这个宏,我们最多可以创建4个轮子,但目前我们只需要2个:
我们还指定了仿真所需的Gazebo参数。这里提到的是与轮子相关的Gazebo参数。我们可以用gazeboreference标签说明摩擦系数和刚度系数:
我们为轮子定义的关节是连续转动关节,因为在轮子关节中没有任何限值。这里的parent link是机器人底盘,child link是每个轮子:
我们还需要设定每个轮子的transmission标签。该轮子的宏定义如下:
在diff_wheeled_robot.xacro中,我们可以用以下命令来使用 wheel.urdf.xacro中定义的宏:
使用前面的几行代码,我们定义了机器人底盘的左侧和右侧的轮子。机器人底盘是圆柱形的,如上图所示。这里给出了惯性计算的宏定义。xacro代码段将使用圆柱的质量、半径和高度来计算惯性张量,代码如下:
这里给出了启动文件的定义,可用于在RViz中显示该机器人模型。启动文件命名为view_mobile_robot.launch:
与机械臂URDF文件比较,唯一区别是名称不同,其他部分都是一样的。
我们可以使用下面的命令查看移动机器人:
在RViz中机器人的截图如图3-14所示。
图3-14 在RViz中可视化移动机器人与关节状态发布者
- 点赞
- 收藏
- 关注作者
评论(0)