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

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://xiahunao.cn/news/2980039.html

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

相关文章

0 transformers入门,HuggingFace!

目录 1 了解 2 文本分类 1 了解 1 依赖安装 !pip install transformers -i https://pypi.tuna.tsinghua.edu.cn/simple some-package 2 了解transformers 能做什么 from transformers.pipelines import SUPPORTED_TASKS SUPPORTED_TASKS.items()2 文本分类 我没外网所以…

CSS特效---环形进度条

1、演示 2、一切尽在代码中 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"w…

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);% …

互联网大佬座位排排坐:马化腾第一,雷军第二

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 这是马化腾、雷军、张朝阳、周鸿祎的座位&#xff0c;我觉得是按照互联网地位排序的。 马化腾坐头把交椅&#xff0c;这个没毛病&#xff0c;有他在的地方&#xff0c;其他几位都得喊声“大哥”。雷军坐第二把交椅…

恶补《操作系统》1——王道学习笔记

1操作系统概念 1.1_1 操作系统的概念、功能和目标 作为用户和计算机硬件之间的接口 提供的功能命令接口&#xff08;联机命令接口|脱机命令接口&#xff09;程序接口GUI&#xff08;图形用户界面win|ios|andrio&#xff09;目标方便用户使用 1.1_2 操作系统的特征 &#xff…

STM32 ADC转换器

一、ADC简介 ADC&#xff08;Analog-Digital Converter&#xff0c;模拟-数字转换器&#xff09;&#xff0c;可以将引脚上连续变化的模拟量转换为内存中存储的数字量&#xff0c;建立模拟电路到数字电路的桥梁 模拟量&#xff1a;时间和幅值均连续的信号&#xff0c;例如&…

Access denied for user ‘zabbix‘@‘localhost‘ (using password: NO)

现象 排查过程 进入数据库show grants for zabbixlocalhost;select host,user from mysql.user;cat /etc/zabbix/zabbix_server.conf | grep DB | grep -vE ‘#|$’cat /etc/zabbix/web/zabbix.conf.php | grep DB 解决办法 mysql 8.0以下 DPassword123.com mariadb -e "…

Docker搭建代码托管Gitlab

文章目录 一、简介二、Docker部署三、管理员使用四、用户使用五、用户客户端 一、简介 GitLab是一个基于Git的代码托管和协作平台&#xff0c;类似于GitHub。 它提供了一个完整的工具集&#xff0c;包括代码仓库管理、问题跟踪、CI/CD集成、代码审查等功能。 GitLab的开源版本…

Hdu1350 Taxi Cab Scheme 【最小路径覆盖】

Taxi Cab Scheme 题意 有一张边长不超过 200 200 200 的网格图&#xff0c;有若干个乘客&#xff0c; 乘客 i i i 的需求是&#xff1a; h h : m m , ( a , b ) , ( c , d ) hh:mm, (a,b) , (c, d) hh:mm,(a,b),(c,d)&#xff0c;意为他需要在 h h 时 m m 分 hh时mm分 hh时…

奇妙的探索——偶然发现的bug

今天想在腾讯招聘官网找几个前端的岗位投一下&#xff0c;最近自己也在找工作&#xff0c;结果简历还没有投出去&#xff0c;就发现了腾旭招聘官网的3个前端bug。 1.有时候鼠标hover还没有滑倒下拉选框的菜单上&#xff0c;就消失了&#xff0c;消失的太快了&#xff0c;根本点…

【重要】Heygen订阅指南和用法详解!让照片学说话?一张照片变演讲?Heygen订阅值得吗?

常见问题 Q&#xff1a;Heygen是什么&#xff1f;Heygen是什么玩意&#xff1f; A&#xff1a;Heygen是一款由AI视频工具,创作者只需要上传视频并选择要翻译的语言&#xff0c;该工具可实现自动翻译、调整音色、匹配嘴型。为了方便理解&#xff0c;笔者利用Heygen制作了一个AI视…

java中File类和输入输出流的用法

目录 针对文件系统进行操作 针对文件内容进行操作 java针对文件操作可以分为两种&#xff1a;1&#xff09;针对文件系统进行操作&#xff0c;如创建文件&#xff0c;删除文件&#xff0c;创建目录&#xff0c;重命名文件等。 2&#xff09;针对文件内容进行操作&#xff0c…

javaScript基础3

javaScript 一.对象1.概念2.创建对象的三种方法(1).字面量创建&#xff08;利用{}&#xff09;(2)变量、属性、函数、方法的区别(3).new Object创建(4).构造函数 3.new关键字的执行过程4.遍历对象&#xff08;for..in) 二.内置对象1.了解2.math对象3.日期对象&#xff08;构造函…

用 LM Studio 1 分钟搭建可在本地运行大型语言模型平台替代 ChatGPT

&#x1f4cc; 简介 LM Studio是一个允许用户在本地离线运行大型语言模型&#xff08;LLMs&#xff09;的平台&#xff0c;它提供了一种便捷的方式来使用和测试这些先进的机器学习模型&#xff0c;而无需依赖于互联网连接。以下是LM Studio的一些关键特性&#xff1a; 脱机&am…

Web界面加持!数据库备份神器,助你轻松备份数据!

带Web界面的数据库/文件备份增强工具。原理&#xff1a;执行自定义shell命令输出文件&#xff0c;增强备份功能。同时支持: 文件、mysql、postgres... 支持自定义命令 支持执行shell输出的文件备份&#xff0c;原理上支持各种数据库/文件备份 支持备份周期设置&#xff0c;几分…

面试二十、BST二叉排序树

静态查找表&#xff1a; 当有序表是静态的&#xff0c;即其内容在创建后不再发生变化&#xff0c;适合使用顺序表作为存储结构。顺序表通过数组实现&#xff0c;可以提供常数时间的随机访问&#xff0c;因此在静态情况下&#xff0c;适合顺序表存储&#xff0c;这样可以简化数据…

项目暂停和重启运行,命令如何实现?

要通过命令行实现项目的暂停和重启运行&#xff0c;可以使用以下步骤&#xff1a; 1.查找项目进程ID&#xff1a;首先&#xff0c;你需要找到正在运行项目的进程ID&#xff08;PID&#xff09;。你可以使用 ps 命令来查找正在运行的进程&#xff0c;例如&#xff1a; ps aux …

如何批量修改图片的尺寸?轻松教你批量修改图片尺寸!三个快速有简单的方法

一&#xff0c;引言 在现代社会中&#xff0c;随着数字技术的快速发展&#xff0c;图片已经成为了我们日常生活中不可或缺的一部分。无论是在社交媒体上分享生活点滴&#xff0c;还是在工作中展示产品、宣传品牌&#xff0c;图片都扮演着重要的角色。然而&#xff0c;很多时候…

实现Spring底层机制(三)

文章目录 阶段4—实现BeanPostProcessor机制1.文件目录2.初始化方法实现1.编写初始化接口InitializingBean.java2.MonsterService.java实现初始化接口3.容器中的createBean方法增加初始化逻辑&#xff0c;判断对象类型是否是InitializingBean的子类型&#xff0c;如果是&#x…

在电脑上安装Linux?有手就行!

文章目录 安装虚拟机管理软件VM下载centos镜像文件开始安装创建虚拟机打开虚拟机&#xff0c;开始安装程序安装启动程序测试光盘选择语言进行安装前的配置安装 安装后操作 安装虚拟机管理软件VM 官方正版VMware下载&#xff08;16 pro&#xff09;&#xff1a;https://www.ali…