ROS的TF系统

一、SLAM

1、SLAM全称是Simultaneous Localization And Mapping,即同时定位地图构建

2、SLAM软件包Hector_Mapping,建图可参考链接所示文章

二、机器人定位

1、假设机器人开始建图的位置是地图坐标系的原点

在这里插入图片描述

2、则机器人在建图过程中的位置可以描述为机器人和这个地图原点坐标系之间的空间关系

在这里插入图片描述

3、定义机器人建图的初始位置为地图坐标系,坐标轴方向遵循右手法则,给该坐标系命名map

在这里插入图片描述

4、机器人坐标系的原点定义在机器人地盘的中心位置,坐标系同样遵循右手法则,该坐标系叫做base_footprint,它是ROS中约定俗称的一个坐标系名称

在这里插入图片描述

5、地图坐标系作为父坐标系,机器人坐标系作为子坐标系,则这两个坐标系的空间关系就可以描述为子坐标系在父坐标系中X、Y、Z三个轴上的距离偏移量

在这里插入图片描述

6、对于在地面上移动的机器人来说,Z的值为0

在这里插入图片描述

7、对于地面移动的机器人来说,只需要沿X、Y轴的偏移量绕Z轴的角度,便可描述机器人坐标系相对于地图坐标系的空间关系

在这里插入图片描述

三、TF系统

1、TF是TransForm的缩写,主要描述两个坐标系的空间关系,可以理解为坐标系变换

2、地图坐标系和机器人坐标系的距离和角度偏移量就属于一个TF关系

在这里插入图片描述

3、TF关系由特定的ROS节点以消息包的形式发布到/tf话题中去,其它的节点可以订阅这个话题来查询当前运行的节点网络中都存在哪些坐标系。在RViz中能够显示地图和机器人的相对位置就是因为RViz订阅了这个/tf话题

在这里插入图片描述

四、在RViz中显示TF坐标系

1、进入工作空间输入source ./devel/setup.bash设置ROS的环境变量,以便在当前的终端窗口中正确运行ROS软件包。

在这里插入图片描述

2、输入roslaunch wpr_simulation wpb_hector.launch运行SLAM建图程序

==roslaunch wpr_simulation wpb_hector==

3、控制机器人随意行走一段距离

在这里插入图片描述

4、在RViz里添加TF显示项目

在这里插入图片描述

5、可以看到机器人身上和地图原点出现了很多细小的三维坐标轴

6、修改坐标轴的显示大小

在这里插入图片描述

7、Frames选项里面只保留base footprintmap

在这里插入图片描述

8、便能直观的观察到这了两个坐标系的空间关系

在这里插入图片描述

9、打开一个新的终端,输入rostopic list,查找包含TF数据的话题

在这里插入图片描述

10、这个/tf是包含TF数据的话题

在这里插入图片描述

11、输入rostopic type /tf查看它的消息格式

在这里插入图片描述

12、可以看到/tf这个话题的消息格式是tf2_msgs的TFMessage

在这里插入图片描述

13、去ROS index里查查这个消息类型的结构

在这里插入图片描述

14、输入tf2_msgs进行搜索

在这里插入图片描述

15、选择noetic版本

在这里插入图片描述

16、进入wiki界面

在这里插入图片描述

17、点击TFMessage

在这里插入图片描述

18、这是一个TransformStamped类型的数组

在这里插入图片描述

19、点击进入,查看它的结构

在这里插入图片描述

20、结构长这样

在这里插入图片描述

21、header里的fram id是父坐标系的名称

在这里插入图片描述

22、这个child_frame_id是子坐标系的名称

在这里插入图片描述

23、父子坐标系的空间关系在这个transform

在这里插入图片描述

24、transform里有一个translation

在这里插入图片描述

25、结构是x、y、z三个浮点数

在这里插入图片描述

26、就是子坐标系在父坐标系里的坐标偏移量

在这里插入图片描述

27、rotation是个四元数

在这里插入图片描述

28、描述的是子坐标系相对于父坐标系的角度偏差量,使用的是四元数格式

在这里插入图片描述

29、回到终端输入rostopic echo /tf,查看TF的具体数值

在这里插入图片描述

30、可以看到有很多TF消息包在刷屏,按CTRL+C暂停,找到这个“map”和“base_footprint”

在这里插入图片描述

31、这个便是子坐标系相对于父坐标系的位置偏移量

在这里插入图片描述

32、这个是子坐标系相对于父坐标系的角度偏移量(四元数形式)

在这里插入图片描述

33、在这个/TF话题里会不停发来TF消息,每一个TF消息包对应的是不同时刻坐标系的空间关系,它随着机器人的移动不断变化

在这里插入图片描述

34、TFMessage消息包包含的是一个TransformStamped类型的数组,里面除了mapbase_footprint可能还会存在许多别的TF关系

在这里插入图片描述

35、如果有许多TF关系时都在这里刷屏,很难看清区分

在这里插入图片描述

36、输入rosrun rqt_tf_tree rqt_tf_tree用于理清众多TF关系

在这里插入图片描述

37、会弹出一个窗口

在这里插入图片描述

38、每个椭圆都代表一个坐标系,可以看出这些坐标系是存在层级关系的

在这里插入图片描述

39、上方椭圆是下方椭圆的父级坐标系,当一个ROS程序运行起来时,所有的空间坐标关系都可以在这个TF树中获取

在这里插入图片描述

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

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

相关文章

DenseNet算法实现乳腺癌识别

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 一、前期准备 1.设置GPU import torch import torch.nn as nn import torchvision.transforms as transforms import torchvision from torchvision import …

CUDA原子操作

代码 #include <cuda_runtime.h> #include <stdio.h>__global__ void atomicAddAndGet(int *result, int *valueToAdd) {// 原子加法int addedValue atomicAdd(result, *valueToAdd);// 通过原子操作后读取值&#xff0c;确保是加法后的值addedValue *valueToAd…

黑马程序员2024最新SpringCloud微服务开发与实战 个人学习心得、踩坑、与bug记录 Day4

你好,我是Qiuner. 为帮助别人少走弯路和记录自己编程学习过程而写博客 这是我的 github https://github.com/Qiuner ⭐️ gitee https://gitee.com/Qiuner &#x1f339; 如果本篇文章帮到了你 不妨点个赞吧~ 我会很高兴的 &#x1f604; (^ ~ ^) 想看更多 那就点个关注吧 我会…

如何检测社交媒体平台中的深度伪造

在过去的十年中,各类社交媒体平台——连接人们并让他们通过多媒体内容(如图像、视频、音频和文本)分享他们的想法和意见——也被用于操纵和改变公众意见。社交媒体上的自动程序,如机器人,可以像合法的用户一样控制虚假账户,通过点赞、分享和发布内容来传播虚假信息。随着…

HDFS Decommission节点的长尾分析和问题解决

文章目录 前言Decommission过慢的分析过程NameNode页面并不显示Decommission的进度和剩余块数量增加每次调度的块数量增加Stream Limit以避免节点被Skip节点被Skip时应该在DEBUG时打印原因在大量节点被Skip的时候加快有效调度其他可能改进 基本流程解析用户通过节点刷新触发Dec…

java Web学习笔记(一)

文章目录 1. 前置学习知识2. Tomcat介绍Tomcat目录文件介绍URL的组成部分和项目资源的对应关系idea配置部署tomcat并成功运行一个app-web项目 3. HTTP协议介绍&#xff08;很重要&#xff09;HTTP协议和HTTPS的区别HTTP协议的发展理解HTTP协议 报文格式报文响应的状态码 4. Ser…

java word转pdf、word中关键字位置插入图片 工具类

java word转pdf、word中关键字位置插入图片 工具类 1.pom依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.15</version></dependency><dependency><groupId>org.apa…

重读AI金典算法模型-GPT系列

2023年对于AI来说&#xff0c;可以算是一个里程碑式的年份&#xff0c;随着OpenAI的chatGPT的大火&#xff0c;遍地的生成式AI应用应运而生。在这些上层应用大放异彩的时候&#xff0c;我们需要了解一些底层的算法模型&#xff0c;并从中窥探出为什么时代选择了OpenAI的chatGPT…

以设备为核心的状态自动采集、人工运维和预测性维护为一体的智能管理系统

中服云设备全生命周期管理系统充分利用物联网、人工智能、机器学习、大数据等新一代技术&#xff0c;实现对企业生产设备从采购、安装、调试、使用、维护、维修、改造、更新直到报废全生命周期的智能化、数字化、可视化的实时管控&#xff0c;支持设备运行状态的自动采集和人工…

js 中 new Worker 报错 Failed to construct ‘Worker‘

new Worker("worker.js");运行多线程 Web Worker 的时候报错 Uncaught DOMException: Failed to construct ‘Worker’ 原因是浏览器不允许通过本地文件访问使用Web Worker。 解决方法&#xff1a; 将项目部署到服务器上或者用Node起本地服务访问项目

Pandas数据持久化秘籍:to_pickle()函数的高效应用与实战技巧

Pandas数据持久化秘籍&#xff1a;to_pickle()函数的高效应用与实战技巧 引言 在数据分析和机器学习的项目中&#xff0c;数据的持久化存储和快速加载是一个重要环节。Pandas作为Python中广泛使用的数据处理库&#xff0c;提供了强大的数据结构和操作功能。其中&#xff0c;t…

活动回顾|矩阵起源2024WAIC圆满落幕

2024年7月4日至7日&#xff0c;全球瞩目的2024世界人工智能大会暨人工智能全球治理高级别会议&#xff08;WAIC 2024&#xff09;在上海盛大举行&#xff0c;其中Future Tech 100未来之星创新孵化展再次成为大会焦点&#xff0c;它不仅是一场科技成果的展示&#xff0c;更是全球…

网络通信基本知识

网络通信 什么是网络通信&#xff1f; 通信网络是指将各个孤立的设备进行物理连接&#xff0c;实现人与人&#xff0c;人与计算机&#xff0c;计算机与计算机之间进行信息交换的链路&#xff0c;从而达到资源共享和通信的目的。 什么是网络协议&#xff1f; 网络协议是计算机…

SPring Boot整合第三方框架

springboot整合第三方框架 1. 整合mybatis 1.1引入依赖——pom.xml配置文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instanc…

安装isce2

今天再次尝试安装&#xff0c;之前试过2次都是卡在同一步&#xff0c;今天换成了用mamba conda就没有再报错了 全程参考云军老师的step by step教程&#xff0c;安装成功 GitHub - yunjunz/conda-envs: conda environment setup on Linux / macOS for InSAR data processing …

【进阶】利用python内置模块自动化发送邮件及邮件附件

目录 自动化发送邮件 流程&#xff1a; 步骤&#xff1a; 【重点】 【MIMEText--发送文本类型的邮件】 【MIMEImage-发送附件为图片的邮件】 【MIMEBase--发送附件为html报告的邮件】 自动化发送邮件 以qq邮箱为例&#xff0c;提前打开POP3/IMAP/SMTP/Exchange/CardDAV 服…

Linux vim编辑器常用知识

Vim 是 Linux 中一个强大的文本编辑器&#xff0c;以其高效的键盘操作和丰富的功能而闻名 Vim 的基本概念 模式&#xff1a;Vim 有三种主要模式&#xff1a; 普通模式 (Normal Mode)&#xff1a;默认模式&#xff0c;用于浏览和编辑文本。插入模式 (Insert Mode)&#xff1a;用…

【Redis】复制(Replica)

文章目录 一、复制是什么&#xff1f;二、 基本命令三、 配置&#xff08;分为配置文件和命令配置&#xff09;3.1 配置文件3.2 命令配置3.3 嵌套连接3.4 关闭从属关系 四、 复制原理五、 缺点 以下是本篇文章正文内容 一、复制是什么&#xff1f; 主从复制 master&#xff…

GloVe: Global Vectors for Word Representation论文笔记解读

基本信息 作者Jeffrey Penningtondoi10.3115/v1/D14-1162发表时间2014期刊EMNLP网址https://aclanthology.org/D14-1162.pdf 研究背景 1. What’s known 既往研究已证实 全局矩阵分解方法&#xff1a;LSA&#xff0c;考虑整个语料库词频的统计信息得到共现矩阵&#xff0c;通…

根据视图矩阵, 恢复相机的世界空间的位置

根据视图矩阵, 恢复相机的世界空间的位置 一、方法1 glsl 实现: // 从本地局部坐标系(相机空间) 到 世界空间的旋转变换 mat3 getLocal2WorldRotation() {mat3 world2localRotation mat3(viewMatrix[0].xyz,viewMatrix[1].xyz,viewMatrix[2].xyz);return inverse(world2loca…