urdf 文件 joint origin标签 rpy变换理解!

13 篇文章 2 订阅
  1. 示例代码

https://download.csdn.net/download/qq_42226250/13545188

demo.urdf:

<?xml version="1.0" encoding="UTF-8" ?>
<robot name="joint_rpy_demo">
    <link name="base_footprint">
    </link>
    <link name="base_link">
    </link>
    <joint name="base_joint" type="fixed">
        <origin xyz="0 0 1.0" rpy="0 0 0" />
        <parent link="base_footprint"/>
        <child link="base_link" />
    </joint>
</robot>

launch文件:

<?xml version="1.0" encoding="UTF-8" ?> 
<launch>  
    <param name="robot_description" textfile="$(find pkg)/urdf/demo.urdf" /> 
    <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher"/> 
    <node pkg="rviz" type="rviz" name="rviz" /> 
</launch>
roslaunch demo_joint_rpy demo_joint_rpy.launch

初始rviz示意图:base_link位于base_footprint上方1米位置,<origin xyz="0 0 1.0" rpy="0 0 0" />
在这里插入图片描述

  1. joint rpy基础知识
<origin xyz="0 0 1.0" rpy="1.57 0 0" />
<parent link="base_footprint"/>
<child link="base_link" />

在这里插入图片描述
rpy都是弧度制,PI = 3.14 rad = 180°。

所有变换均基于parent坐标系base_footprint,这个很重要,parent坐标系是不变的,变的是child坐标系

rpy:roll、pitch、yaw,翻滚、俯仰、偏航,对应x、y、z顺序。从坐标原点为基准,看向坐标轴正方向,绕坐标轴顺时针为正,逆时针为负。

  1. joint rpy测试–一次变换
<origin xyz="0 0 1.0" rpy="1.57 0 0" />

绕x轴顺时针90°:
在这里插入图片描述

<origin xyz="0 0 1.0" rpy="0 1.57 0" />

绕y轴顺时针90°:
在这里插入图片描述

<origin xyz="0 0 1.0" rpy="0 0 1.57" />

绕z轴顺时针90°:
在这里插入图片描述

  1. joint rpy测试–多次变换
<origin xyz="0 0 1.0" rpy="1.57 1.57 0" />

先绕x轴顺时针90°,再绕y轴顺时针90°:

注意这里有一个先后顺序!!!
一定是先roll,再pitch,最后yaw!!!

在这里插入图片描述

<origin xyz="0 0 1.0" rpy="1.57 1.57 -1.57" />

先绕x轴顺时针90°,再绕y轴顺时针90°,最后绕z轴逆时针90°:

注意:这些绕的xyz轴都是parent坐标系的坐标轴!!!
在这里插入图片描述

  1. 逆解RPY(重点!!!)

很多情况是我们先知道了child坐标系的位姿,再去求转换的rpy的。
例如下图:如何求得rpy?<origin xyz="0 0 1.0" rpy="? ? ?" />

逆解RPY时,基准坐标系还是base_footprint!!
在这里插入图片描述
方法一:
想象一个base_link2和base_footprint同位姿,按照RPY顺序旋转,顺正逆负。
在这里插入图片描述
so:

<origin xyz="0 0 1.0" rpy="+/-3.14 1.57 0" />

方法二:
由base_link坐标,按照YPR顺序,逆向推出,基准坐标系同样是base_footprint,顺正逆负,但最后结果要全部取反
在这里插入图片描述
so:

<origin xyz="0 0 1.0" rpy="0 1.57 -3.14" />

当然还有其他变换也会产生这样的位姿:

<origin xyz="0 0 1.0" rpy="-1.57 1.57 1.57" />

掌握转换方法即可。

  • 33
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值