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…

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

中服云设备全生命周期管理系统充分利用物联网、人工智能、机器学习、大数据等新一代技术&#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起本地服务访问项目

活动回顾|矩阵起源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 服…

【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…

汽车零配件行业看板管理系统应用

生产制造已经走向了精益生产&#xff0c;计算时效产出、物料周转时间等问题&#xff0c;成为每一个制造企业要面临的问题&#xff0c;工厂更需要加快自动化&#xff0c;信息化&#xff0c;数字化的布局和应用。 之前的文章多次讲解了企业MES管理系统&#xff0c;本篇文章就为大…

论文er们,YOLO这口饭得趁热吃

不知道各位有没有看出来&#xff0c;从去年开始YOLO相关的论文就处于一个井喷式状态&#xff0c;SCI各区都能见到它的身影。 这是因为YOLO其实是个很好发论文的方向&#xff0c;需求量很大&#xff0c;热度高&#xff0c;并且好入门&#xff0c;能获取的资源也很多。写论文时一…

宾馆酒店电视信号高清改造-广电信号接入数字电视同轴高清传输系统应用

宾馆酒店电视信号高清改造-广电信号接入数字电视同轴高清传输系统应用 由北京海特伟业科技有限公司任洪卓发布于2024年7月12日 一、宾馆酒店广电信号接入数字电视同轴高清传输系统建设背景 在当今数字化快速发展的时代&#xff0c;宾馆酒店作为服务行业的重要组成部分&#x…

idea修改全局配置、idea中用aliyun的脚手架,解决配置文件中文乱码

idea修改全局配置 idea中用aliyun的脚手架&#xff0c;创建springBoot项目 解决配置文件中文乱码

解决fidder小黑怪倒出JMeter文件缺失域名、请求头

解决fidder小黑怪倒出JMeter文件缺失域名、请求头 1、目录结构&#xff1a; 2、代码 coding:utf-8 Software:PyCharm Time:2024/7/10 14:02 Author:Dr.zxyimport zipfile import os import xml.etree.ElementTree as ET import re#定义信息头 headers_to_extract [Host, Conn…