古月居ROS入门21讲——17.坐标转换

1.tf(transform)

当机器人的"眼睛"获取一组数据,关于物体的坐标方位,但是相对于机器人手臂来说,这个坐标只是相对于机器人头部的视觉传感器,并不直接适用于机器人手臂执行,那么物体相对于头部和手臂之间的坐标转换,就是tf。

坐标变换包括了位置和姿态两个方面的变换,ROS中的tf是一个可以让用户随时记录多个坐标系的软件包。

tf本质是树状的数据结构,所以我们通常称之为"tf tree",维护各个坐标系之间的关系,就要靠着tf tree来处理。

2.小海龟tf tree可视化

控制第一只小海龟运动,第二只小海龟通过坐标变换跟随第一只小海龟运动

安装示例功能包

sudo apt-get install ros-melodic-turtle-tf

启动节点

roslaunch turtle_tf turtle_tf_demo.launch

运行键盘控制节点,控制第一只小海龟运动

rosrun turtlesim turtle_teleop_key

查看tf tree

图中每一个圆圈代表一个frame,即一个坐标系,对应着机器人上的一个link,任意的两个frame之间都必须是联通的,如果出现某一环节的断裂,就会引发系统报错。

下图中一共有三个坐标系,world坐标系表示仿真器坐标原点,左下角零点,不会变化;turtle1和turtle2是两个海龟的坐标系,相对于world不断变化,它们二者的相对位置也是不断变化的。通过坐标变换实现跟随,即两个坐标系重叠。

rosrun tf view_frames

在这里插入图片描述

3.查询坐标系的关系

tf_echo查询tf tree中任意两个坐标系之间的位置关系。

rosrun tf tf_echo turtle1 turtle2

输出信息包含两部分:平移和旋转
旋转通过三种方式描述:

  1. 四元数
  2. RPY俯仰偏角(绕X、Y、Z轴的旋转)通过弧度单位来描述
  3. RPY俯仰偏角(绕X、Y、Z轴的旋转)通过角度单位来描述

由于是平面,只有绕Z轴旋转有值

在这里插入图片描述

4.rviz可视化

rosrun rviz rviz -d 'rospack find turtle_tf' /rviz/turtle_rviz.rviz

在rviz仿真界面中,将fixed frame改成world,点击左下角add TF

移动小海龟可以看到两个坐标系实时变化的情况

在这里插入图片描述
底层实现原理:在两个坐标系之间连接一条向量,通过计算模长计算两个坐标系之间的距离,除以时间可以得到移动速度

参考:

  1. 古月居ROS入门21讲
  2. 中国大学MOOC—《机器人操作系统入门》课程讲义
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值