ROS 2边学边练(32)-- 初识tf2

前言

        在上一篇文章当中我们已经用到了tf2,虽然有点懵,但所幸我们从这篇起将正式开始学习tf2,让它没有秘密可言。

动动手

        我们依然是拿小海龟作为案例,简简单单走一遍流程,熟悉一下。

安装例子

        安装例子及其依赖项。

$sudo apt-get install ros-iron-rviz2 ros-iron-turtle-tf2-py ros-iron-tf2-ros ros-iron-tf2-tools ros-iron-turtlesim

运行例子

        我们新起一个终端,首先source下安装环境以使系统能认识ROS 2的命令,接着执行下面的命令运行turtle_tf2_py包:

$ros2 launch turtle_tf2_py turtle_tf2_demo.launch.py

有两只海龟,其中左下角的那只会游到中间的那只所在的位置(目前大家看到的),我们再来打开一个终端来控制第一只海龟:

$ros2 run turtlesim turtle_teleop_key

第二只海龟会跟着第一只的步伐,亦步亦趋(我这截图有点不大明显,两只海龟长成一样的了)。

发生什么了

        这个例子使用了tf2库来创建三个坐标系:一个世界坐标系,一个turtle1坐标系,以及一个turtle2坐标系。这个教程使用了tf2广播器来发布turtle的坐标系,并使用tf2监听器来计算turtle系之间的差异,并移动其中一个turtle来跟随另一个。

 tf2工具

        现在,我们来看看tf2是如何被用来创建这个例子的。我们可以使用tf2_tools来查看tf2在幕后是如何工作的(记住不要关掉上面正在运行的例子)。

使用view_frames

        view_frames会创建一个由tf2在ROS上广播的坐标系的图表。请注意,这个工具只在Linux上工作;如果你使用的是Windows,请跳过以下部分,直接查看“使用tf2_echo”。

        执行下面的命令:

$ros2 run tf2_tools view_frames

        在这里,一个tf2监听器正在监听通过ROS广播的坐标系,并绘制一个坐标系如何连接的树状图。我们来打开frames.pdf文件(执行上面命令的当前路径下)。

        从上,我们可以看到tf2广播的三个坐标系:world、turtle1和turtle2。world坐标系是turtle1和turtle2坐标系的父坐标系。view_frames还报告了一些诊断信息,包括何时接收到最旧和最新的坐标系变换,以及为了调试目的,tf2框架发布到tf2的速度有多快。

使用tf2_echo

        tf2_echo报告了通过ROS广播的任何两个坐标系之间的变换。

        一般语法为:

$ros2 run tf2_ros tf2_echo [source_frame] [target_frame]

        我们来试试看看turtle2到turtle1之间的坐标转换是怎样的。

$ros2 run tf2_ros tf2_echo turtle2 turtle1

        当我们通过键盘控制turtle1移动时,这上面的转换关系数据也会跟着变动。

rviz2和tf2

        rviz2是一个可视化工具,用于检查tf2坐标系很有用。让我们使用rviz2通过配置文件使用-d选项来查看我们的turtle坐标系:

$ros2 run rviz2 rviz2 -d $(ros2 pkg prefix --share turtle_tf2_py)/rviz/turtle_rviz.rviz

        在上一篇中我们也已经演示了,在侧边栏中,将看到由tf2广播的坐标系。当我们控制turtle移动时,我们会看到坐标系在rviz中移动(右侧区域红绿蓝坐标系部分)。

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

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

相关文章

如何使用 ArcGIS Pro 快速为黑白地图配色

对于某些拍摄时间比较久远的地图,限于当时的技术水平只有黑白的地图,针对这种情况,我们可以通过现在的地图为该地图进行配色,这里为大家讲解一下操作方法,希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微…

Git | 分支管理

Git | 分支管理 文章目录 Git | 分支管理1、理解分支2、创建分支&&切换分支3、合并分支4、删除分支5、合并冲突6、分支管理策略合并分支模式实际工作中分支策略bug分支删除临时分支 1、理解分支 分支就类似分身。 在版本回退中,每次提交Git都会将修改以git…

【记录】Pandoc|Linux安装最新Pandoc

参考:官方文档,https://pandoc.org/installing.html 系统:Ubuntu 注意!Pandoc 不能接受 PDF 作为输入!!!如果是想下载 Pandoc 做 PDF 格式转换请放弃!! Linux 是 amd64 版…

使用PlantUML绘制活动图、泳道图

最近在学PlantUML 太漂亮了 给大家欣赏一下 我也记录一下 startuml |使用前| start :用户打开旅游App; |#LightSkyBlue|使用后| :用户浏览旅游信息; |#AntiqueWhite|登机前| :用户办理登机手续; :系统生成登机牌; |使用前| :用户到达机场; |登机前| :用户通过安检; |#Light…

14.接口自动化测试-造数据

1.测试造数据 工作场景: 需要造一批测试数据 解决方案: (1)使用字符串拼接 135XXXXX (2)使用第三方库去做 faker 安装: pip install Faker 若安装不成功,可能是需要清下缓存&a…

【R语言简介】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

VScode配置MySQL

1、进入官网,下载MySQL 地址:dev.mysql.com/downloads/mysql/ ZIP方式下载,选择本地的路径进行解压。 2、配置环境变量 形如下方的路径: D:\software\Mysql\mysql-8.3.0-winx64\bin 即是解压位置后文件夹下的bin文件路径 3、初…

Manim - Python 绘画引擎

文章目录 关于 Manim安装manim 有两个版本要求直接使用 pip使用源码安装 使用 manimManual 关于 Manim Manim : Mathematical Animation,是由 Grant Sanderson 开发,是一个用于精确编程动画的引擎,专为创建解释性数学视频而设计。 github :…

.netcore+vue新生分班系统的设计与实现

.netcore vue新生分班系统的设计与实现说明文档 运行前附加数据库.mdf(或sql生成数据库) 主要技术: 基于.net core架构和mysql数据库vue 东北石油大学新生分班系统的设计与实现 功能模块: 登录 注册学生 忘记密码 系统首顶 个…

Golang | Leetcode Golang题解之第44题通配符匹配

题目: 题解: func isMatch(s string, p string) bool {for len(s) > 0 && len(p) > 0 && p[len(p)-1] ! * {if charMatch(s[len(s)-1], p[len(p)-1]) {s s[:len(s)-1]p p[:len(p)-1]} else {return false}}if len(p) 0 {retur…

web前端学习笔记1

前端学习笔记 1. 走进HTML 1.1 什么是HTML 超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言。您可以使用 HTML 来建立自己的 WEB 站点,HTML 运行在浏览器上,由浏览器来解析。HTML文档的后缀名 .html.htm以上两种后缀名没有区别…

YOLOv5改进 | Conv篇 | 利用CVPR2024-DynamicConv提出的GhostModule改进C3(全网独家首发)

一、本文介绍 本文给大家带来的改进机制是CVPR2024的最新改进机制DynamicConv其是CVPR2024的最新改进机制,这个论文中介绍了一个名为ParameterNet的新型设计原则,它旨在在大规模视觉预训练模型中增加参数数量,同时尽量不增加浮点运算&#x…