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

2024-04-22 21:52
文章标签 初识 ros 32 边学边 tf2

本文主要是介绍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中移动(右侧区域红绿蓝坐标系部分)。

这篇关于ROS 2边学边练(32)-- 初识tf2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/926962

相关文章

Linux操作系统 初识

在认识操作系统之前,我们首先来了解一下计算机的发展: 计算机的发展 世界上第一台计算机名叫埃尼阿克,诞生在1945年2月14日,用于军事用途。 后来因为计算机的优势和潜力巨大,计算机开始飞速发展,并产生了一个当时一直有效的定律:摩尔定律--当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。 那么相应的,计算机就会变得越来越快,越来越小型化。

ROS - C++实现RosBag包回放/提取

文章目录 1. 回放原理2. 回放/提取 多个话题3. 回放/提取数据包,并实时发布 1. 回放原理 #include <ros/ros.h>#include <rosbag/bag.h>#include <std_msgs/String.h>int main(int argc, char** argv){// 初始化ROS节点ros::init(argc, argv,

ROS - C++实现RosBag包录制

文章目录 1. 录制原理2. 录制多个话题3. 订阅ROS消息,实时录制 1. 录制原理 #include <ros/ros.h>#include <rosbag/bag.h>#include <std_msgs/String.h>int main(int argc, char** argv){// 初始化ROS节点ros::init(argc, argv, "reco

docker学习系列(一)初识docker

在第一版本上线之后公司,我们决定将之前使用的开源api文档项目转移到本公司的服务器之上,之前用的是showdoc,showdoc利用的是php技术,作为java程序员表示需要快速部署php环境以及apach容器都需要时间,所以采用第二种方法,即利用docker进行快速部署(虽然学习成本也不比php少)。 一、docker简介 docker的官网是https://www.docker.com,

hector_quadrotor编译总结 | ubuntu 16.04 ros-kinetic版本

hector_quadrotor编译总结 | ubuntu 16.04 ros-kinetic版本 基于Ubuntu 16.04 LTS系统所用ROS版本为 Kinetic hector_quadrotor ROS包主要用于四旋翼无人机的建模、控制和仿真。 1.安装依赖库 所需系统及依赖库 Ubuntu 16.04|ros-kinetic|Gazebo|gazebo_ros_pkgs|ge

hector_quadrotor编译总结 | ubuntu 14.04 ros-indigo版本

hector_quadrotor编译总结 | ubuntu 14.04 ros-indigo版本 基于Ubuntu 14.04 LTS系统所用ROS版本为 Indigo hector_quadrotor ROS包主要用于四旋翼无人机的建模、控制和仿真。 备注:两种安装方式可选:install the binary packages | install the source files

框架template初识

框架初识 框架就是一个别人帮我们搭好的舞台,造好了很多现成的工具供我们使用,让开发过程更快速、简洁。 Gin框架介绍 Gin 是一个用 Go (Golang) 编写的 HTTP Web 框架。 Gin是一个用Go语言编写的web框架。它是一个类似于martini 但拥有更好性能的API框架, 由于使用了 httprouter,速度提高了近40倍。 第一个Gin示例 package mai

『功能项目』更换URP场景【32】

上一章已经将项目从普通管线升级到了URP管线 现在我们打开上一篇31项目优化 - 默认管线转URP的项目, 进入战斗场景 将Land的子级全部隐藏 将新的URP场景预制体拖拽至Land子级 对场景预制体完全解压缩 将Terrain拖拽至Land的直接子级 将Terrain设置为Land 与 静态Static 清除烘培 重新烘培 修改脚本:LoadRe

【数据结构】--初识泛型

1. 包装类 在Java中,由于基本类型不是继承自Object,为了在泛型代码中可以支持基本类型,Java给每个基本类型都对应了一个包装类型。 1.1 基本数据类型和对应的包装类 除了 Integer 和 Character, 其余基本类型的包装类都是首字母大写。 1.2 (自动)装箱和(自动)拆箱 装箱(装包): 把 基本数据类型 变为 包装类类型 的过程 叫做装箱。 反汇编指

初识Linux · 进度条

目录 前言: 1 缓冲区和回车换行 2 进度条 前言: 我们目前学习了些许知识,已经足够支持我们写一个非常非常小的项目了,即进度条,相信大家都有过下载游戏,等待游戏更新完成的时候,那么此时就有一个进度条,代表着游戏的更新进度,那么我们今天就来模拟实现这个过程,在此之前,我们需要一些预备知识。 1 缓冲区和回车换行 回车换行?是的,你没有看错,相信不少人对换行有一定的误解,我们