对URDF文件中坐标关系的理解

对URDF文件中坐标关系的理解

image-20240129212621517

URDF文件中主要的标签有两个,分别是jointlink,这两个标签基本决定了仿真模型的运动关系与物理属性

下面是一段URDF的示例,主要包括两个连杆(base_link和RH_link)以及一个关节(RH_joint)

inertial标签中,除了origin标签之外,mass和inertia标签的值并不严谨,仅供参考

  <link name="base_link">
    <inertial>
      <origin xyz="0.596011105031066 1.16160216601102E-06 1.16287812206338" rpy="0 0 0" />
      <mass value="6" />
      <inertia ixx="6" ixy="6" ixz="6" iyy="6" iyz="6" izz="6" />
    </inertial>
    <visual>
      <origin xyz="0 0 0" rpy
URDF(Unified Robot Description Format)文件中,`<joint>` 标签用于描述两个链接(link)之间的连接关系以及它们的相对运动方式。该标签定义了机器人的关节类型、父子链接关系、关节的初始位置以及其他相关属性。 ### `<joint>` 标签的基本结构 ```xml <joint name="joint_name" type="joint_type"> <origin xyz="x y z" rpy="roll pitch yaw"/> <parent link="parent_link_name"/> <child link="child_link_name"/> <axis xyz="x y z"/> <limit effort="max_effort" velocity="max_velocity" lower="min_angle" upper="max_angle"/> </joint> ``` ### 各个子标签的作用说明: - **`name`**:指定关节的名称,必须唯一。 - **`type`**:指定关节的类型,常见类型包括: - `fixed`:固定关节,无相对运动。 - `revolute`:旋转关节,允许围绕某一轴进行旋转,有角度限制。 - `continuous`:连续旋转关节,通常用于轮子等可以无限旋转的部件。 - `prismatic`:滑动关节,允许沿某一轴线性移动。 - `floating`:浮动关节,允许在三维空间内自由移动。 - `planar`:平面关节,允许在二维平面上移动和旋转。 - **`<origin>`**:定义子链接相对于父链接的位置和姿态偏移。其中: - `xyz="x y z"` 表示在 x、y、z 轴上的平移。 - `rpy="roll pitch yaw"` 表示绕固定轴的欧拉角旋转(顺序为 roll → pitch → yaw)[^1]。 - **`<parent>` 和 `<child>`**:分别指定父链接和子链接的名称,表示两个链接之间的连接关系。 - **`<axis>`**:仅适用于具有运动能力的关节(如 revolute、prismatic),用于指定运动方向。例如 `xyz="0 0 1"` 表示绕 z 轴旋转或移动。 - **`<limit>`**:定义关节的运动范围和性能限制: - `effort`:最大力矩或力。 - `velocity`:最大速度。 - `lower` 和 `upper`:对于旋转关节是角度限制,对于滑动关节是位移限制(仅对 `revolute` 和 `prismatic` 类型有效)。 ### 示例代码 以下是一个完整的 URDF 文件片段,展示了如何定义一个旋转关节: ```xml <robot name="example_robot"> <link name="base_link"> <visual> <geometry> <box size="1 1 0.2"/> </geometry> </visual> </link> <link name="arm_link"> <visual> <geometry> <cylinder length="0.6" radius="0.05"/> </geometry> </visual> </link> <joint name="arm_joint" type="revolute"> <origin xyz="0 0 0.2" rpy="0 0 0"/> <parent link="base_link"/> <child link="arm_link"/> <axis xyz="0 0 1"/> <limit effort="30" velocity="1.0" lower="-1.57" upper="1.57"/> </joint> </robot> ``` 在此示例中,`arm_joint` 是一个旋转关节,将 `arm_link` 连接到 `base_link` 上,并允许其绕 z 轴旋转 ±90 度。 ### 常见问题与注意事项 - **坐标系理解**:URDF 中所有变换都是基于父链接的坐标系进行计算,因此 `<origin>` 的值应相对于父链接定义。 - **单位制**:URDF 默认使用国际单位制(米、千克、秒、弧度等),确保所有数值单位一致。 - **可视化工具支持**:在 RVIZ 等可视化工具中显示模型时,需配合 `joint_state_publisher` 和 `robot_state_publisher` 使用,以正确渲染关节状态和坐标变换[^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值