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

news2025/1/13 13:11:04

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.coloradmin.cn/o/1618266.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

椋鸟数据结构笔记#11:排序·下

文章目录 外排序(外部排序)文件拆分并排序归并文件两个文件归并多文件归并优化 萌新的学习笔记,写错了恳请斧正。 外排序(外部排序) 当数据量非常庞大以至于无法全部写入内存时,我们应该怎么排序这些数据呢…

冈萨雷斯数字图像处理资源(课后习题答案+代码+图片)

冈萨雷斯数字图像处理相关资源整理,资源全部来源互联网,方便大家下载 冈萨雷斯数字图像处理相关资源整理 课后习题 冈萨雷斯数字图像处理源代码

16.Nacos环境隔离

环境隔离namespace Namespace->Group->Service/Data->集群->实例 Namespace: Group: nacos控制台新增一个开发环境的命名空间:dev, 会产生命名空间的id。 将命名空间的id配置到微服务的配置文件中: spring:cloud:nacos:server…

MATLAB将多张小图整合到一张大图形成模板图

MATLAB将多张小图整合到一张大图形成模板图 代码如下: clc;close all;clear all;warning off;%清除变量 rand(seed, 100); randn(seed, 100); format long g;foldername字符模板; [datacell,filenamecell,filenameAllcell]readfun_1n(foldername); K2length(filenamecell);% …

25计算机考研院校数据分析 | 上海交通大学

上海交通大学电子信息与电气工程学院成立于2001年12月,其前身可湖源至百年前的电机专科,具有中国电气工程师“摇篮”之美称。50年代根据学科发展需要分为电工与计算机科学系(三系)和电子工程系(四系)。1985年,三系和四系合并,成立…

电子签名在人力资源中的应用:让HR工作更高效

人力资源(HR)行业是电子签领域的重要应用之一,它可以在以下场景中使用电子签: 1. 在招聘流程中,HR部门可以利用电子签名工具来完成与招聘候选人之间的任何文件签署操作。例如,维护人才库数据库、简历、面试…

RAG:智能图书馆员引领AI的知识之旅

想象一下,你是一个法官,面对一个复杂的案件,你需要查阅大量的法律文献来找到相关的案例和法律条文。在AI的世界里,也有一个类似的“法官”——大型语言模型(LLMs)。它们能够回答各种问题,但有时…

RISC-V CVA6 在 Linux 下相关环境下载与安装

RISC-V CVA6 在 Linux 下相关环境下载与安装 所需环境与源码下载 CVA6 源码下载 首先,我们可以直接从 GitHub 一次性拉取所有源码: git clone --recursive https://github.com/openhwgroup/cva6.git如果这里遇到网络问题,拉取失败&#x…

vulfocus靶场struts2 命令执行 CVE-2016-3081

远程攻击者利用漏洞可在开启动态方法调用功能的Apache Struts 2服务器上执行任意代码,取得网站服务器控制权。 影响版本: Struts 2.3.20 - Struts Struts 2.3.28 (except 2.3.20.3 and 2.3.24.3) 工具利用: struts2 综合利用工具: http://i…

4月23号总结

java实现发送邮件 在做聊天室项目的时候&#xff0c;由于需要发送邮箱验证码&#xff0c;所以自己查找了这方面的内容。 首先需要在Maven里面依赖 <dependency><groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId><versio…

牛客社区所有的表和SQL语句

文章目录 1 帖子表 discuss_post1.1 字段描述1.2 相关功能描述1.2.1 分页查询帖子1.2.2 查询帖子总数量1.2.3 插入一条帖子记录1.2.4 根据帖子ID查询某条帖子1.2.5 更新帖子评论数量1.2.6 更新帖子类型1.2.6 更新帖子状态1.2.7 更新帖子分数 2 用户表 user2.1 字段描述2.2 相关…

spring一二三级缓存和@Lazy解决循环依赖流程

简单对象指的是 实例化后还没有属性注入的时候的早期bean lambda表达式用于判断a是否存在aop代理 假如a和b循环依赖&#xff0c;a实例化时&#xff0c; bean创建流程如下&#xff1a; 0&#xff0c;创建一个set记录当前正在实例化的bean&#xff0c; 1.实例化a的简单对象时…

陆金所控股一季报到底是利好还是利空?

3月底&#xff0c;陆金所控股&#xff08;LU.N;06623.HK&#xff09;因其特别分红方案受到市场高度关注。但在4月23日发布的2024年一季度财报中&#xff0c;陆金所控股营收同比下降30.9%&#xff0c;净亏损8.3亿元。 两者对比&#xff0c;外界不由得对公司的经营状况产生疑惑。…

docker内实现多机多卡分布式训练

docker内实现多机多卡分布式训练 1. 多台docker宿主机网络配置2. 创建overlay 网络3. 注意 1. 多台docker宿主机网络配置 https://docs.docker.com/network/overlay/ 这里需要创建overlay网络使得多台宿主机的容器可以通过网络连接 初始化swarm集群&#xff0c;并设置主节点&a…

条件编译 #和##运算符

目录 1. #运算符2. ##运算符3. 条件编译4. 题目分享总结 正文开始 前言: 本章为C语言语法完结撒花, 下文将进行C语言中#和##操作符以及条件编译的讲解, 来进一步让我们了解C语言. 作者主页: 酷酷学!!! 1. #运算符 #运算符将宏的⼀个参数转换为字符串字⾯量。它仅允许出现在带…

【刷题】前缀和入门

送给大家一句话&#xff1a; 既然已经做出了选择&#xff0c;最好还是先假定自己是对的。焦虑未来和后悔过去&#xff0c;只经历一个就够了。 – 张寒寺 《不正常人类症候群》 ☆ミヾ(∇≦((ヾ(≧∇≦)〃))≧∇)ノ彡☆ ☆ミヾ(∇≦((ヾ(≧∇≦)〃))≧∇)ノ彡☆ ☆ミヾ(∇≦((ヾ…

比特币中的符文是什么?

比特币中的符文是什么&#xff1f; 比特币符文是存在于比特币区块链上的独特的、可替代的代币。它们旨在代表具有独特特征和元数据的可替代资产。 Ordinals 协议的创建者 Casey Rodamor 最近放弃了一项替代 BRC-20 可替代代币协议的提案&#xff0c;该替代方案被称为 Runes。 破…

STM32 HAL库F103系列之DAC实验(一)

DAC输出实验 原理图 DAC数据格式 DAC输出电压 DORX - 数据输出寄存器 Vref 3.3V 实验简要 1&#xff0c;功能描述 通过DAC1通道1(PA4)输出预设电压&#xff0c; 然后由ADC1通道1 (PA1) 采集&#xff0c;最后显示ADC转换的数字量及换算后的电压值 2&#xff0c;关闭通道1…

TypeError: Cannot read properties of undefined (reading ‘tapAsync‘)

项目启动&#xff0c;一直报tabAsync未定义&#xff0c;整个项目中没有找到引用的地方&#xff1b; 最终重新安装webpack4版本 解决问题&#xff1b; npm install webpack4

Android studio顶部‘app‘红叉- Moudle ‘XX.app’ dosen’t exist in project

Android studio顶部app红叉- Moudle ‘XX.app’ dosen’t exist in project 1、现象&#xff1a; 运行老项目或者有时候替换项目中的部分代码&#xff0c;明明没有错但是Android studio就编译报错了。 1.1 Android studio顶部app红叉。 1.2 点击Build没有clear菜单&#xff0…