《精通ROS机器人编程(原书第2版) 》 —3.12 为差速驱动移动机器人创建机器人模型

举报
华章计算机 发表于 2020/02/10 17:01:53 2020/02/10
【摘要】 本节书摘来自华章计算机《精通ROS机器人编程(原书第2版) 》 一书中第3章,第3.12节,作者是[印度]郎坦·约瑟夫(Lentin Joseph)[意大利]乔纳森·卡卡切(Jonathan Cacace),张新宇 张志杰 等译 。

3.12 为差速驱动移动机器人创建机器人模型

差速轮式机器人在机器人底盘的两端安装两个轮子,整个底盘由一个或两个脚轮支撑。轮子将通过调节速度来控制机器人的移动速度。如果两个马达以相同的速度运行,轮子会向前或向后移动。如果一个轮子的速度比另一个慢,机器人就会转向低速的一边。如果我们想把机器人转动到左边,就减小左轮的速度,反之亦然。

底盘上有两个辅助轮,称为脚轮,它支撑着机器人并根据主轮的移动自由旋转。

这个机器人的URDF模型存放在下载的ROS软件包中。最终的机器人模型如图3-12所示:

 image.png

图3-12 差速驱动移动机器人

前面的机器人有5个关节和5个连杆。2个主要的关节将轮子连接到机器人上。其余3个是固定关节,2个用于将支撑脚轮连接到机器人主体上,1个用于将底盘连接到机器人主体上。图3-13是该机器人的连接图。

 image.png

图3-13 差速驱动移动机器人的连杆和关节连接图

我们来看看URDF文件中的部分重要代码。这个URDF文件名为diff_wheeled_robot.xacro,位于下载的ROS软件包内的urdf文件夹中。

这里给出了URDF文件的第一部分。机器人被命名为differential_wheeled_robot,还包含一个名为wheel.urdf.xacro的URDF文件。xacro文件包含轮子的定义及其传动方式。如果我们使用该xacro文件,就可以避免为两个轮子写两套定义。因为两个轮子在形状和大小上是相同的,所以我们采用xacro的定义:

 image.png

轮子的定义在wheel.urdf.xacro中给出。我们可以指定轮子是否必须放在左边、右边、前面或后面。使用这个宏,我们最多可以创建4个轮子,但目前我们只需要2个:

 image.png

我们还指定了仿真所需的Gazebo参数。这里提到的是与轮子相关的Gazebo参数。我们可以用gazeboreference标签说明摩擦系数和刚度系数:

 image.png

我们为轮子定义的关节是连续转动关节,因为在轮子关节中没有任何限值。这里的parent link是机器人底盘,child link是每个轮子:

 image.png

我们还需要设定每个轮子的transmission标签。该轮子的宏定义如下:

 image.png

 image.png

在diff_wheeled_robot.xacro中,我们可以用以下命令来使用 wheel.urdf.xacro中定义的宏:

 image.png

使用前面的几行代码,我们定义了机器人底盘的左侧和右侧的轮子。机器人底盘是圆柱形的,如上图所示。这里给出了惯性计算的宏定义。xacro代码段将使用圆柱的质量、半径和高度来计算惯性张量,代码如下:

 image.png

这里给出了启动文件的定义,可用于在RViz中显示该机器人模型。启动文件命名为view_mobile_robot.launch:

 image.png

 

与机械臂URDF文件比较,唯一区别是名称不同,其他部分都是一样的。

我们可以使用下面的命令查看移动机器人:

 image.png

在RViz中机器人的截图如图3-14所示。

 image.png

图3-14 在RViz中可视化移动机器人与关节状态发布者


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。