【ROS的TF系统】

系列文章目录


TF系统简介

前面的章节实现了SLAM节点的建图功能:
激光雷达节点—> /scan话题 —>hector_mapping节点—> 地图数据话题/map
本期来实现SLAM节点的定位功能:

TF(TransForm)主要描述的是两个坐标系的空间关系,可以理解为坐标系变换;

TF发布节点—> /tf话题
其它节点订阅上述/tf话题即可查询当前运行的节点网络中的坐标系、坐标系间的空间关系;
rviz的显示原理:rviz订阅了/tf话题,此外在rviz中可以直接显示TF的坐标系;

输出机器人的坐标在地图中的位置关系

运行slam仿真
roslaunch wpr_simulation wpb_hector.launch

在rviz窗口中添加TF;
可以适当调节标签大小(Marker Scale,例如调成5);
展开Frames,只保留base_footprint和map选项;
这样可以方便观察两个坐标系的位置和空间关系;

在这里插入图片描述rostopic list

查看其中/tf话题的类型
rostopic type /tf
查询结果为tf2_msgs/TFMessage

在index.ros.org中查看对应的tf2_msgs消息类型的具体介绍信息
描述为geometry_msgs/TransformStamped[]transforms
这是一个TransformStamped类型的数组,点击查看其结构:

geometry_msgs/TransformStamped Message
std_msgs/Header header
string child_frame_id (子坐标系的名称)
geometry_msgs/Transform transform (两个坐标系的空间关系)

std_msgs/Header Message
uint32 seq
time stamp
string frame_id (父坐标系的名称)

重点介绍一下geometry_msgs/Transform transform
geometry_msgs/Transform Message
geometry_msgs/vector3 translation
geometry_msgs/Quaternion rotation
其中geometry_msgs/vector3 translation,是float64 x、y、z,代表的是子坐标系相对于父坐标系在空间位置偏移量;
geometry_msgs/Quaternion rotation,是四元数,float64 x、y、z、w,表示的是子坐标系相对于父坐标系的角度偏差;

四元数计算欧拉角参照:文章
这里只需要知道四元数和欧拉角可以相互转换即可,感兴趣的话可以去深入了解其中的数学原理;

TF树

查看/tf消息中的消息包rostopic echo /tf
在这里插入图片描述translation部分表示子坐标系与父坐标系的距离偏差;
rotation是一个四元数,表示了子坐标系与父坐标系的角度偏差,可以用公式将其转换为欧拉角(roll pitch yaw);


transforms: - header: seq: 0stamp: secs: 421nsecs: 394000000frame_id: "map"child_frame_id: "odom"transform: translation: x: -0.01747243289675815y: 0.03656238974946313z: 0.0rotation: x: 0.0y: 0.0z: -0.010764158207004907w: 0.9999420647708018

为了理清消息包中的关系,执行
rosrun rqt_tf_tree rqt_tf_tree
当一个ROS程序运行起来的时候,所有的空间坐标关系都可以从如下tf树里获得;
其中每个椭圆代表一个坐标系,位于上方的椭圆是连线下方椭圆的父级坐标系;
整个tf系统由父级、子级坐标系这样的多级的分支结构组成;
在ROS系统运行过程中,所有的空间坐标关系都可以从tf树中获得;
前面的例子只用到了输出机器人的坐标在地图中的位置关系这一功能,tf系统还有更多其它功能;
在这里插入图片描述


总结

简单介绍了ROS中的TF系统、TF消息包部分内容、TF树。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/58672.shtml

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

相关文章

趣说产品安全设计的十大经典原则,看一遍就再难忘记!

全设计原则在产品和系统的开发中占据着至关重要的地位。这些原则强调了从一开始就将安全性融入到设计过程中的重要性,而不是作为事后补救措施。通过遵循这些原则,开发者能够创建更加健壮和安全的产品,有效减少潜在的安全漏洞和威胁。接下来博…

1006:A+B问题

【题目描述】 大部分的在线题库,都会将AB问题作为第一题,以帮助新手熟悉平台的使用方法。 AB问题的题目描述如下:给定两个整数A和B,输出AB的值。保证A、B及结果均在整型范围内。现在请你解决这一问题。 【输入】 一行,…

【回溯】力扣 77.组合

一、题目 二、思路 采用回溯算法,注意点: 递归出口:已经选够 k k k 个数参数传递:由于不可以重复选择相同的数字,因此每选一个数就会使得可选择的范围对应缩小。不妨设定选择的顺序是从 1 1 1 到 n n n 依次进行选…

疯狂Spring Boot讲义[推荐1]

《疯狂Spring Boot讲义》是2021年电子工业出版社出版的图书,作者是李刚 《疯狂Spring Boot终极讲义》不是一本介绍类似于PathVariable、MatrixVariable、RequestBody、ResponseBody这些基础注解的图书,它是真正讲解Spring Boot的图书。Spring Boot的核心…

『 Linux 』网络传输层 - TCP(二)

文章目录 TCP六个标志位TCP的连接三次握手 四次挥手为什么是三次握手和四次挥手 重传机制 TCP六个标志位 在TCP协议报文的报头中存在一个用于标志TCP报文类型的标志位(不考虑保留标志位),这些标志位以比特位选项的方式存在,即对应标志位为0则表示为假,对应标志位为1则为真; SYN…

LeetCode --- 421周赛

题目列表 3334. 数组的最大因子得分 3335. 字符串转换后的长度 I 3336. 最大公约数相等的子序列数量 3337. 字符串转换后的长度 II 一、数组的最大因子得分 数据范围足够小,可以用暴力枚举移除的数字,得到答案,时间复杂度为O(n^2)&#…

动态规划-回文串问题——5.最长回文子串

1.题目解析 题目来源:5.最长回文子串——力扣 测试用例 2.算法原理 1.状态表示 判断回文子串需要知道该回文子串的首尾下标,所以需要一个二维数组且数据类型为bool类型来存储每个子字符串是否为回文子串, 即dp[i][j]:以第i个位置为起始&a…

【AI日记】24.10.31 学习LangChain和寻找AI研究报告(比如麦肯锡)

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 工作1 内容:学习deeplearning.ai的免费课程地址:LangChain for LLM Application DevelopmentB站中英文地址:https://www.bilibili.com/video/BV1TJ4zemETf时间&#…

微积分复习笔记 Calculus Volume 1 - 4.4 The Mean Value Theorem

4.4 The Mean Value Theorem - Calculus Volume 1 | OpenStax

docker engine stopped

1)环境:win 10 2)docker安装时已经已经安装了虚拟机 3)启用网络适配器 4)启用docker服务(依赖服务LanmanServer) 5)全都弄好了,docker还是打不开,没办法了&a…

【VM实战】VMware迁移到VirtualBox

VMware 虚拟机开机卸载VMware Tools 调整虚拟磁盘 对于Windows 10及以上的虚拟机,一般VMware默认都会选Nvme固态硬盘。在导出前必须将其改为SATA,否则VirtualBox导入会报Appliance Import错误 (E_INVALIDARG 0x80070057) 先删掉当前盘的挂载&#xff…

某本书上的一张序列图评点

贝贝 2019-8-24 10:56 潘老师,这个图是不是不太对。插卡,输入密码并不是ATM的职责? UMLChina潘加宇: 这种图用建模思维一挤压,脓包太多了。 问题一、几个生命线上的实例,抽象级别不一致。 ATM用户--系统&#xff0…

Docker | 校园网上docker pull或者docker run失败的一种解决方法

场景 需要从仓库拉取镜像 无论使用命令docker pull 还是 docker run 但是总是显示如下的错误: 解决方法 查看虚拟机网络连接方式 Linux上检查校园网是否登录 有界面 无界面 只是命令行操作的Linux 关于Linux服务器端更新命令apt update没有效果问题总结(校园网认证)

推荐一款功能强大的AI实时变声器:FliFlik Voice Changer

FliFlik VoiCE Changer是一款专注于声音变换与音频处理的创新软件,旨在满足从日常娱乐、游戏直播到播客制作、专业音频编辑的多种应用场景需求。无论是想在游戏中变换声音逗乐队友,还是在播客中塑造个性化的音效,这款软件都能提供灵活而强大的…

Java第二阶段---15异常---第三节 自定义异常

1. 为什么要使用自定义异常 在Java中,异常的类型非常的多,要想使用这些异常,首先必须要熟悉它们。这无疑是一个巨大的工作量,很耗费时间。如果我们可以自定异常,则只需要熟悉 RuntimeException 、 Exception 和 Throw…

【2】Elasticsearch 查询从基础到高级

文章目录 一、引言二、常用查询方式(一)简单查询(二)聚合查询(三)复杂查询三、查询关键词(一)比较关键词(二)逻辑关键词(三)其他关键词四、常用统计类查询(一)计数统计(二)平均值统计五、总结一、引言 Elasticsearch是一款强大的分布式搜索和分析引擎,在数据…

【前端】在 Next.js 开发服务器中应该如何配置 HTTPS?

在 Next.js 的开发环境中,默认情况下是使用 HTTP 协议的。但是,您可以通过一些配置来启用 HTTPS。这在开发阶段可能很有用,尤其是在需要测试涉及安全传输的应用场景时。 下面是如何在 Next.js 开发环境中配置 HTTPS 的步骤: 方法…

[供应链] 公开招标

公开招标(Public Invitation to Bid) 是招标采购方式的一种,通常在政府采购、工程项目或大型商业合同中使用 公开招标旨在通过市场竞争机制,选出最合适的供应商或承包商,确保项目能够以合理的价格、良好的质量以及规定的时间完成 公开招标也…

移植 AWTK 到 纯血鸿蒙(HarmonyOS NEXT)系统 (0) - 序

移植 AWTK 到 纯血鸿蒙 (HarmonyOS NEXT) 系统 (0) - 序 前段时间纯血鸿蒙系统 HarmonyOS 5.0(又称 HarmonyOS NEXT)正式推出,这是继苹果 iOS 和安卓系统后,全球第三大移动操作系统。纯正国产操作系统登场,国人无不欢…

沙盒正在源代码防泄漏行业盛行

SDC沙盒技术采用了零信任的核心理念——“永不信任,总是验证”。这意味着对每一个访问请求都进行严格的身份验证和授权,无论请求来自内部还是外部。SDC沙盒提供了一个隔离的环境,用于隔离本机,实现一机两用,起到保护系…