ROS的tf包中坐标变换的方法
来源:互联网 发布:C语言gets 编辑:程序博客网 时间:2024/04/27 01:35
1、setRotation函数的参数
在坐标变换的时候常有这样的写法:
tfTutorialsAdding a frame (C++)
transform.setOrigin( tf::Vector3(0.0, 2.0, 0.0) );transform.setRotation( tf::Quaternion(0, 0, 0, 1) );br.sendTransform(tf::StampedTransform(transform,ros::Time::now(), "turtle1", "carrot1")
这三句话分别做了以下工作:
1、设置carrot1在turtle1坐标系下的坐标原点
2、设置carrot1相对于turtle1的旋转角度,这里用四元数表示
3、发送变换信息
上面四元数表示旋转角度的方式不太直观,我们写代码的时候不想将旋转变换换算成四元数的时候可以采用如下方法写这个变换:
turtle_tf_ broadcaster.cpp
static tf::TransformBroadcaster br;tf::Transform transform;transform.setOrigin( tf::Vector3(msg->x, msg->y, 0.0) );tf::Quaternion q;q.setRPY(0, 0, msg->theta);transform.setRotation(q);br.sendTransform(tf::StampedTransform(transform, ros::Time::now(), "world", turtle_name));
这样通过这三句话就可以直接用RPY(分别对应绕XYZ轴旋转角度)来设置旋转变换了
tf::Quaternion q;q.setRPY(0, 0, msg->theta);transform.setRotation(q);这里的msg->x, msg->y,msg->theta是解引用msg并获取该元素名为x(或者y,theta)的成员,相当于(*msg).x,(*msg).y,(*msg).theta
四元数的直观意义:
四元数
在使用的时候往往将四元数归一化,即要求四元数的模为1:
2 static_transform_publisher
static_transform_publisher工具的功能是发布两个参考系之间的静态坐标变换,两个参考系一般不发生相对位置变化。
命令的格式如下:
- static_transform_publisher x y z yaw pitch roll frame_id child_frame_id period_in_ms
- static_transform_publisher x y z qx qy qz qw frame_id child_frame_id period_in_ms
以上两种命令格式,需要设置坐标的偏移和旋转参数,偏移参数都使用相对于xyz三轴的坐标位移,而旋转参数第一种命令格式使用以弧度为单位的 yaw/pitch/roll三个角度(yaw是围绕x轴旋转的偏航角,pitch是围绕y轴旋转的俯仰角,roll是围绕z轴旋转的翻滚角),而第二种命令格式使用四元数表达旋转角度。发布频率以ms为单位,一般100ms比较合适。
0 0
- ROS的tf包中坐标变换的方法
- ROS的tf包中坐标变换的方法
- ROS之tf坐标变换
- ROS专题----tf和tf2坐标变换
- ROS之tf空间坐标变换浅析
- ROS之tf空间坐标变换浅析 (二)
- ROS中观察TF的工具
- ROS的坐标系TF
- ROS-tf坐标转换
- tf坐标变换
- 老王说ros的tf库
- ros中静态tf坐标关系发布方式
- ros中tf的新的学习感悟
- 坐标变换的实现
- 矩阵的坐标变换
- 图像的坐标变换
- 摄像机的坐标变换
- OpenGL的坐标变换
- 第十四周项目一-排序函数模板
- JAVA-音乐播放器(声音)
- 使用shape画圆
- 从master-worker模型看团队管理
- 练习11——输入(python2.x与3.x input的区别)
- ROS的tf包中坐标变换的方法
- mysql 行转列
- IOS 接入环信SDK3.0时遇到的问题
- litepal studio的基本配置
- 感觉Android studio往genymotion中的sd卡写不进数据
- (数据类型)byte b1=3,b2=4,b; b=b1+b2; b=3+4; 哪句是编译失败的呢 ? 面试题
- SIM卡的ICCID、IMSI
- 网页浏览器知道我们的哪些信息?(1)
- 下丁字符号用MathType如何编辑出来