ROS学习笔记(13)坐标变换(TF和TF2)

embedded/2024/11/13 9:30:05/

0.前提

我翻了一下我以前的教程发现我居然没有讲过TF坐标转换,那现在补上。在机器人学中坐标转换是一个极为重要的概念、内容,在大量的科技公司招聘机器人岗位的人才时掌握机器人运动学正解和逆解等都是加分项。机器人在实际应用当中会涉及到大量的位置和姿态变换,引入坐标系和坐标系变换对求解位姿是及其重要的。而在ROS当中的坐标变换系统由TF和TF2功能包提供。)

1.TF和TF2介绍

1.TF

TF是一个可让使用者跟踪多个坐标系变化的功能包,使用树形数据结构,根据时间缓冲、维护多个坐标系的坐标变换关系,帮助开发者完成点、向量等坐标系的变换。tf/Tutorials - ROS Wiki

使用TF功能包,总的说有两步:

1.监听TF变换

接收并缓存系统中发布的所有坐标变换数据,查询所需坐标变换关系。

2.广播TF变换

广播坐标系间的变换。每个广播都可直接将坐标系变换关系插入TF树中,无需进行同步。

2.TF和TF2的主要变化

在ros官网中我们可以得知TF已经被TF2,官方也是建议直接使用TF2,因此本文对TF只进行简单讲解。tf2和tf的区别

1.添加/tf_static主题

2.ROS独立核心

3.新的API模板

4.python支持的更新

5.操作查询

6.删除对tf_prefix的支持

3.TF2

本质上TF2和TF实现的是同一种效果,但TF2提供了 TF 功能的超集

1.安装

 sudo apt-get install ros-noetic-turtle-tf2 ros-noetic-tf2-tools

注意:先使用roscore查看自己的ros版本


2.运行

roslaunch turtle_tf2 turtle_tf2_demo.launch

注意:如果之前没有对python3进行软连接会报错

解决办法就是对python3进行软连接

sudo ln -s /usr/bin/python3 /usr/bin/python

 ok,这下就能正常运行了

点击终端,你可以用方向键控制你的小海龟,你会发现你的小海龟会被另一个小海龟追逐。

原理就是后方的小海龟会同步前方小海龟得位置信息,然后运动到位置点。

3.What's happening?

演示使用了TF2库创建了三个坐标系:世界坐标系、小海龟1的坐标系、小海龟2的坐标系。使用tf2广播器发布海龟坐标系,使用tf2侦听器计算海龟帧差异,移动小海龟2跟随小海龟1。

4.tf2工具

4.1.view_frames

view_frames创建tf2通过ROS广播的帧图表。

打开两个终端,分别输入:

roslaunch turtle_tf2 turtle_tf2_demo.launch
rosrun tf2_tools view_frames.py

会看到两条消息,tf2侦听器正在侦听通过ROS广播的帧,绘制帧连接方式的树。

查看树:

evince frames.pdf

 rosrun rqt_tf_tree rqt_tf_tree 

 

这里可以看到tf2广播的3个帧(坐标系),world、turtle1和turtle2,世界(world)是其它两个的父帧。view_frames还报告一些诊断信息,说明何时接收最旧和最新的帧转换,以及 TF2 帧发布到 TF2 以进行调试的速度。

4.2.tf_echo

tf_echo报告ROS广播的任意两帧间的转换。(查看指定坐标系间的变换关系)

rosrun tf tf_echo [reference_frame] [target_frame]

tf_echo侦听器接收到ROS广播的帧时,显示: 

5.Rviz和TF2

我们可以通过rviz更直观的看到坐标系间的关系。我们控制我们的小海龟1时会看到坐标系间的变换关系。

 rosrun rviz rviz -d `rospack find turtle_tf2`/rviz/turtle_rviz.rviz

ok,俺不多说了,具体请看tf2/教程 - ROS Wiki


http://www.ppmy.cn/embedded/11419.html

相关文章

React-RTK

​🌈个人主页:前端青山 🔥系列专栏:React篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来React篇专栏内容:React-RTK 目录 1、介绍 2、安装 3、编写RTK使用示例 4、官方提供项目包示例 创建 Redux …

AlgorithmDay20

day20 [!NOTE] return用作:return递归的上一层,而不一定一定是最后结果。 654.最大二叉树 又是构造二叉树,昨天大家刚刚做完 中序后序确定二叉树,今天做这个 应该会容易一些, 先看视频,好好体会一下 为什么…

Swift中与WebView的交互

在Swift中,可以使用WKWebView来实现与WebView的交互。WKWebView是iOS 8及以后版本中新增的Web视图控件,它提供了一种现代化的方式来加载和显示Web内容,并且支持与JavaScript的交互。 以下是一些常见的与WebView的交互方式: 1.加…

React 19 带来了 JSX 运行时的重要更新

在 React 的发展历程中,JSX 运行时一直扮演着重要的角色。在以前的的版本,JSX 运行时会克隆传入的 props 对象,这背后有着两大原因。 历史原因 React 保留了一些特殊的 prop 名称,如 key 和在 React 19 之前的 ref。这些 prop 并…

ROM修改进阶教程------安卓7_____安卓13去除签名验证操作步骤解析

同类博文: 安卓玩机搞机技巧综合资源-----修改rom 制作rom 解包rom的一些问题解析【二十一】_qcn改区域锁-CSDN博客 安卓系列机型rom修改。如果你删减了系统相关的app。那么严重会导致开机系统卡米 定屏等问题。这类一般都是系统签名验证导致的。而破解签名验证一般都是修改…

FPGA在汽车领域的应用简谈

随着科技的不断进步,汽车行业也在不断演变,而FPGA(可编程逻辑门阵列)的引入给汽车领域带来了革命性的变化。FPGA作为一种灵活且高性能的“处理器”,已经在汽车行业找到了广泛的应用 目前随着新能源汽车的发展&#xff…

MODBUS

Modbus标准的定义是: 一主多从 主有寄存器 寄存器有四个存储区: 0区:输出线圈(Coils)存储区。它是可读可写的。这个区域用于存储可以写入或读出的布尔量,如IO口的电平高低、灯的开关状态等。 1区&#xff…

【VI/VIM】基本操作备忘录

简介 新建/打开文件 工作模式 常用命令 补全命令 命令模式输入:ctrl p 移动命令 文本选中 撤销、删除 复制粘贴 替换 缩排 查找 替换 插入 分屏 练习