ROS导航中 的位姿描述

2023-05-16

转载出处 :http://blog.csdn.net/u013453604/article/details/47320237


补充:

turtlebot包如果没有安装成功或者文件夹做了改动运行不起来需要重装就需要uninstall turtlebot了,wiki上找到的说法是:

If you ever need to uninstall, simple rm -rf /opt/turtlebot will do the trick.

不过这是groovy版本下的卸载

http://wiki.ros.org/turtlebot/Tutorials/groovy/Source%20Installation


在ROSwiki中有urdf文件的写法如下
wiki:Create your own urdf file


<code class="language-xml hljs  has-numbering">...
 <span class="hljs-tag"><<span class="hljs-title">joint</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"joint2"</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"continuous"</span>></span>
   <span class="hljs-tag"><<span class="hljs-title">parent</span> <span class="hljs-attribute">link</span>=<span class="hljs-value">"link1"</span>/></span>
   <span class="hljs-tag"><<span class="hljs-title">child</span> <span class="hljs-attribute">link</span>=<span class="hljs-value">"link3"</span>/></span>
   <span class="hljs-tag"><<span class="hljs-title">origin</span> <span class="hljs-attribute">xyz</span>=<span class="hljs-value">"-2 5 0"</span> <span class="hljs-attribute">rpy</span>=<span class="hljs-value">"0 0 1.57"</span> /></span>
 <span class="hljs-tag"></<span class="hljs-title">joint</span>></span></code>  

在ROS中`rpy’对应的分别是绕X,Y,Z轴旋转的角度(弧度单位),xyz对应的是原点坐标。
这跟谭明的《先进机器人控制》定义的RPY角不太一样,书中定义的RPY角分别是在笛卡尔坐标系的基础上先绕Z轴旋转角度 ψ ,再绕新的Y轴旋转角度 θ ,再绕新的X轴旋转角度 φ
所以我认为横滚(roll)、俯仰(pitch)、偏转(yaw)的位姿描述方式侧重的应该是真实环境中的姿态,比如横滚就是实际上的水平翻滚,由于通常我们把飞机机身所在方向定义为X轴、相机机身方向定义为X轴,所以这个横滚就成了绕X轴旋转,如果机身方向被定义为Z轴,那就是绕Z轴旋转了。
参考阅读博客:
理解传说中的roll、yaw、pitch 

一般理解的roll,yaw,pitch

wiki中关于旋转矩阵的解释
动态实例
* roll:绕x轴
* pitch:绕y轴
* yaw:绕z轴

摄像机的roll,yaw,pitch

手机加速计的roll,yaw,pitch

  • roll:绕着垂直于手机屏幕的轴旋转
  • yaw:绕着手机的向上方向旋转
  • pitch:改变手机的俯仰

总结

从摄像机roll,yaw,pitch的示意图中,我们看到并不是说 roll:就是绕x轴,yaw就是绕y轴,pitch就是绕z轴。

比如一般情况下,摄像机的镜头朝向一般都被定为z轴。

那到底是怎么回事呢?

我目测要从roll,yaw,pitch,这三个词的含义来看。

  • roll: vt. 卷;滚动,转动;辗
  • yaw: v.(火箭、飞机、宇宙飞船等)偏航
  • pitch:vi. 倾斜;投掷;搭帐篷;坠落

为了不再将这三个词和x,y,z牵扯起来,我们只使用描述性的语言。

  • roll的意思是翻滚,中文中飞机的翻滚是什么,就是绕着机身所在的那个轴。
  • yaw:是偏航的意思,如果要改变航向,飞机必定是绕着重力方向为轴。
  • pitch:有倾斜、坠落的意思。飞机在坠落时,必定会一头栽下去,以翅膀所在的直线为轴。

现在把摄像机看成一个飞机,镜头朝向就是飞机头的朝向,是不是一样?



pitch yaw roll是什么 

三维空间的右手笛卡尔坐标如图1所示。

在航空中,pitch, yaw, roll如图2所示。

pitch是围绕X轴旋转,也叫做俯仰角,如图3所示。

yaw是围绕Y轴旋转,也叫偏航角,如图4所示。

roll是围绕Z轴旋转,也叫翻滚角,如图5所示。



图2

                                    图3


                                                图4



                                                         图5


维基百科:旋转矩阵
在ROSWIKI中我找到了准确的描述:
6.3 static_transform_publisher


<code class="language-xml hljs  has-numbering"><strong><span style="font-size:18px;color:#ff0000;">static_transform_publisher x y z yaw pitch roll frame_id child_frame_id period_in_ms</span></strong>
</code><ul class="pre-numbering"><li>
</li></ul>  

Publish a static coordinate transform to tf using an x/y/z offset in meters and yaw/pitch/roll in radians. (yaw is rotation about Z, pitch is rotation about Y, and roll is rotation about X). The period, in milliseconds, specifies how often to send a transform. 100ms (10hz) is a good value.


<code class="hljs perl has-numbering"><span style="font-size:18px;color:#ff0000;">static_transform_publisher <span class="hljs-keyword">x</span> <span class="hljs-keyword">y</span> z <span class="hljs-keyword">qx</span> qy qz <span class="hljs-keyword">qw</span> frame_id child_frame_id  period_in_ms</span></code>  

</pre><p>Publish a static coordinate transform to tf using an x/y/z offset in meters and quaternion. The period, in milliseconds, specifies how often to send a transform. 100ms (10hz) is a good value.static_transform_publisher is designed both as a command-line tool for manual use, as well as for use within roslaunch files for setting static transforms. For example:</p><pre class="prettyprint" name="code"><code class="hljs xml has-numbering"><span class="hljs-tag"><<span class="hljs-title">launch</span>></span>
<span class="hljs-tag"><<span class="hljs-title">node</span> <span class="hljs-attribute">pkg</span>=<span class="hljs-value">"tf"</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"static_transform_publisher"</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"link1_broadcaster"</span> <span class="hljs-attribute">args</span>=<span class="hljs-value">"1 0 0 0 0 0 1 link1_parent link1 100"</span> /></span>
<span class="hljs-tag"></<span class="hljs-title">launch</span>></span></code>  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS导航中 的位姿描述 的相关文章

随机推荐