关闭

ROS的坐标系TF

标签: ros-tf
2488人阅读 评论(0) 收藏 举报
分类:

ROS坐标系

ROS坐标系使用右手法则,Z轴朝上, X轴到Y轴是逆时针。

TF Tool

view_frames

rosrun tf view_frames
evince frames.pdf

rqt_tf_tree

rosrun rqt_tf_tree rqt_tf_tree

坐标系转换

Tturtle1_turtle2=Tturtle1_worldTworld_turtle2

rosrun tf tf_echo [reference_frame] [target_frame]
rosrun tf tf_echo turtle1 turtle2

运行结果

At time 1416409795.450
- Translation: [0.000, 0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.914, 0.405]
            in RPY [0.000, -0.000, 2.308]
At time 1416409796.441
- Translation: [0.000, 0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.914, 0.405]
            in RPY [0.000, -0.000, 2.308]
At time 1416409797.450
- Translation: [0.000, 0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.914, 0.405]
            in RPY [0.000, -0.000, 2.308]
At time 1416409798.441
- Translation: [0.000, 0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.914, 0.405]
            in RPY [0.000, -0.000, 2.308]
At time 1416409799.433
- Translation: [0.000, 0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.691, 0.723]
            in RPY [0.000, -0.000, 1.526]

教程

http://wiki.ros.org/tf/Tutorials/Introduction%20to%20tf

demo

一个双龟跟随的游戏,使用 teleop_key node进行第一个龟的导引,第二个龟跟随

安装

$ sudo apt-get install ros-jade-ros-tutorials ros-jade-geometry-tutorials ros-jade-rviz ros-jade-rosbash ros-jade-rqt-tf-tree

运行

roslaunch turtle_tf turtle_tf_demo.launch

map odom base_link

http://www.ros.org/reps/rep-0105.html
https://github.com/turtlebot/turtlebot/issues/58

ROS的坐标系,最终归结为三个标准框架,可以简化许多常见的机器人问题:

1)全局准确,但局部不连续的帧(’map”)
2)全局不准确,但局部光滑框架(’odom”)
3)机器人自身框架(’base_link”)

多种传感器(像激光雷达、深度摄像头和陀螺仪加速度计等)都可以计算base_link和odom的坐标关系,但由于“每个帧只能有一个父帧”,所以只能有一个节点(比如 robot_pose_ekf 融合多传感器)发布base_link和odom的坐标关系。

三个坐标帧的父子关系如下:
map –> odom –> base_link
其实, map和odom都应该和base_link关联,但为了遵守“每个帧只能有一个父帧”的原则,根据map和base_link 以及 odom->base_link的关系,计算出map与odom的坐标关系并发布。

odom->base_link的坐标关系是由里程计节点计算并发布的。
map -> base_link的坐标关系是由定位节点计算出来,但并不发布,而是利用接收odom->base_link的坐标关系,计算出map->odom的坐标关系,然后发布。


编程

tf坐标变换

通过 numpy可以实现坐标变换,tf.transformations 库其实就是对 numpy的包裹。

from tf import transformations as t

(trans, rot) = transformer.lookupTransform(frame1, frame2, rospy.Time(0))
transform = t.concatenate_matrices(t.translation_matrix(trans), t.quaternion_matrix(rot))
inversed_transform = t.inverse_matrix(transform)

Wait for transforms

    listener.waitForTransform("/turtle2", "/carrot1", rospy.Time(), rospy.Duration(4.0))
    while not rospy.is_shutdown():
        try:
            now = rospy.Time.now()
            listener.waitForTransform("/turtle2", "/carrot1", now, rospy.Duration(4.0))
            (trans,rot) = listener.lookupTransform("/turtle2", "/carrot1", now)

通过坐标的相互关系控制机器人移动

参考: http://wiki.ros.org/pr2_controllers/Tutorials/Using%20the%20base%20controller%20with%20odometry%20and%20transform%20information

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

ROS的tf包中坐标变换的方法

1、setRotation函数的参数在坐标变换的时候常有这样的写法: tfTutorialsAdding a frame (C++)transform.setOrigin( tf::Vector3(...
  • u013453604
  • u013453604
  • 2015-08-12 17:59
  • 5823

ROS探索总结(十二)——坐标系统

在机器人的控制中,坐标系统是非常重要的,在ROS使用tf软件库进行坐标转换。         相关链接:http://www.ros.org/wiki/tf/Tutorials#Learning_tf...
  • hcx25909
  • hcx25909
  • 2013-07-05 19:55
  • 28093

ROS的tf包中坐标变换的方法

1、setRotation函数的参数 在坐标变换的时候常有这样的写法:  tfTutorialsAdding a frame (C++) transform.setOrigin( tf::Vecto...
  • u012700322
  • u012700322
  • 2016-06-20 16:19
  • 2379

ROS视觉和图像-投影tf坐标系到图像

实现tf坐标系到图像的投影
  • x_r_su
  • x_r_su
  • 2016-10-01 08:06
  • 1093

ROS Learning-019 learning_tf-03(编程) 添加额外的坐标系 (Python版)

ROS Indigo learning_tf-03 添加额外的坐标系 (Python版)我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 14.0...
  • github_35160620
  • github_35160620
  • 2016-09-07 19:05
  • 14225

ROS进阶学习手记 8 -- 认识tf

======= 2016年4月14日14:45:02 ======= Following: http://wiki.ros.org/tf/Tutorials#Learning_tf Let's l...
  • sonictl
  • sonictl
  • 2015-07-30 13:48
  • 1639

ROS 学习系列 -- RViz中移动机器人来学习 URDF,TF,base_link, map,odom和odom 主题的关系

前面已经介绍了如何使用URDF建造机器人小车并显示在Rviz的仿真环境里面,但是小车是静止的。下面介绍如何让它在Rviz里面动起来,并理清URDF,TF 和 odom 主题的关系。 1. ROS中b...
  • crazyquhezheng
  • crazyquhezheng
  • 2015-01-31 21:56
  • 18750

ROS学习(二十一)--tf/增加一个框架frame

为什么要增加框架For many tasks it is easier to think inside a local frame, e.g. it is easier to reason about...
  • BenjaminYoung29
  • BenjaminYoung29
  • 2016-01-24 14:31
  • 1160

【ROS】Learning tf教程各部分结果

教程浏览:http://wiki.ros.org/tf/Tutorials 1、Writing a tf broadcaster (C++) http://wiki.ros.org/tf/Tutor...
  • scliu12345
  • scliu12345
  • 2015-03-19 21:11
  • 1830

ROS 学习系列 -- RViz中移动机器人来学习 URDF,TF,base_link, map,odom和odom 主题的关系

前面已经介绍了如何使用URDF建造机器人小车并显示在Rviz的仿真环境里面,但是小车是静止的。下面介绍如何让它在Rviz里面动起来,并理清URDF,TF 和 odom 的关系。 1. ROS...
  • akunainiannian
  • akunainiannian
  • 2015-04-17 23:08
  • 12882
    个人资料
    • 访问:175259次
    • 积分:2554
    • 等级:
    • 排名:第16607名
    • 原创:85篇
    • 转载:1篇
    • 译文:0篇
    • 评论:28条
    最新评论