ROS学习--第10篇:ROS机器人建模与仿真---建立移动机器人模型

在本教程中,我们将修改在上一个教程中创建的模型,使其具有可移动的关节。在之前的模型中,所有的关节都是固定的(fixed)。现在我们将探讨另外三种重要类型的关节:旋转关节(continuous)、转动关节(revolute)、棱柱关节(prismatic)

打开 06-flexible.urdf,这里我们选三个关节作为代表讲解:

1.

<joint name="head_swivel" type="continuous">
    <parent link="base_link"/>
    <child link="head"/>
    <axis xyz="0 0 1"/>
    <origin xyz="0 0 0.3"/>
  </joint>

可以看到,这里把头部关节由原来的 固定的(fixed) 变成了 旋转关节(continuous),这意味着它可以转动从负无穷大到正无穷大的任何角度。轮子也是这样的模型,这样它们就可以永远向两个方向滚动。
我们需要添加的唯一附加信息是旋转轴(axis),这里由 xyz 三个坐标指定,指定头部将围绕其旋转的向量。因为我们希望它绕z轴旋转,所以我们指定了向量 xyz="0 0 1”。

2.

 <joint name="left_gripper_joint" type="revolute">
    <axis xyz="0 0 1"/>
    <limit effort="1000.0" lower="0.0" upper="0.548" velocity="0.5"/>
    <origin rpy="0 0 0" xyz="0.2 0.01 0"/>
    <parent link="gripper_pole"/>
    <child link="left_gripper"/>
  </joint>

左右爪关节都被建模为转动关节(revolute)。这意味着它们的旋转方式与旋转关节(continuous)相同,但它们有严格的限制。

因此,我们必须包含指定关节上限(upper)和下限(lower)的极限标记(以弧度表示)。我们还必须为这个关节指定一个最大速度(maximum velocity)力(effort),但实际值对我们来说并不重要。

3.

  <joint name="gripper_extension" type="prismatic">
    <parent link="base_link"/>
    <child link="gripper_pole"/>
    <limit effort="1000.0" lower="-0.38" upper="0" velocity="0.5"/>
    <origin rpy="0 0 0" xyz="0.19 0 0.2"/>
  </joint>

夹持臂是一种棱柱关节。这意味着它沿着一个轴移动,而不是绕着它。这种平移运动使我们的机器人模型能够伸缩它的夹持臂。棱柱臂的限制与旋转关节的指定方式相同,但单位是米,而不是弧度。

 

现在运行:

roslaunch urdf_tutorial display.launch model:='$(find urdf_tutorial)/urdf/06-flexible.urdf'

当您在GUI中移动滑块时,模型将在rviz中移动。

这是怎么做到的?

首先,GUI解析URDF,并找到所有非固定关节及其限制。

然后,它使用滑块的值发布:传感器消息/连接状态消息(sensor_msgs/JointState messages)。

然后,Robot_State_Publisher 使用这些数据计算不同部分之间的所有转换。

然后,生成的转换树,用于显示rviz中的所有形态。 

  • 3
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值