ROS学习-tf介绍

2023-05-16

tf简介

一个机器人系统一个时间段通常有多个3D坐标系在变化,如世界全局坐标系,world frame, base frame, gripper frame(手臂/夹子坐标框架),head frame等。tf包能够一次性的跟踪这些所有的框架,并且允许我们询问类似于下述问题:

  • 在5秒之前,头坐标框架相对于世界坐标框架在哪里?
  • 机器人夹子上的物体相对于基座的位姿。
  • 基座框架在地图框架中现在的位姿是什么?

tf能够在一个分布式系统上工作。这意味着关于机器人的坐标框架的所有信息都能够在任意电脑系统中所有的ROS组件使用。其没有一个转换信息的中央服务器。

一个小例子

下面我们通过一个小例子来对tf进行细致的了解。
首先是安装运行ROS小例子所需要的包,针对作者使用的melodic版本,命令如下:

$ sudo apt-get install ros-melodic-ros-tutorials ros-melodic-geometry-tutorials ros-melodic-rviz ros-melodic-rosbash ros-melodic-rqt-tf-tree

现在我们得到了turtle_tf tutorial 包,开始运行一个demo:

$ roslaunch turtle_tf turtle_tf_demo.launch

这可能提示我们出现了类似于下述的错误:

ImportError: dynamic module does not define module export function (PyInit__)

这主要是因为电脑中安装的Anaconda环境默认使用Python 3 而 ROS中默认使用Python2,导致Python版本不匹配。解决方案可以参考:Anaconda 与 ROS 冲突解决。

解决之后,我们执行命令可以看到启动了两个小乌龟,并且其中的一个小乌龟向另外一个小乌龟附近移动:

在这里插入图片描述

并且在启动之后,我们可以控制其中的一只小乌龟进行移动,另外一只小乌龟则会跟随移动。
在这里插入图片描述

解释

上述过程中展示了一个例子,其使用tf库来创建了三个坐标框架:一个世界坐标框架、一个turtle1框架和一个turtle2框架。此例子中使用一个tf broadcaster来广播turtle的坐标框架,以及一个tf listener来计算两个turtle坐标框架之间的不同,移动一个小乌龟来跟随另一个。

tf 工具

现在,我们使用tf中的工具来查看一下上述例子中是怎么创建tf的,看看tf在幕后做了什么:

使用view_frames

view_frames通过ROS tf 创建了一个框架的流程说明。
执行下述命令:

$ rosrun tf view_frames

我们可以看到下述结果:

Listening to /tf for 5.0 seconds
Done Listening
dot - graphviz version 2.40.1 (20161225.0304)

Detected dot version 2.40
frames.pdf generated

这里,一个tf listener正在接听来自于ROS广播的框架,并且画出了一个树来说明这些框架之间是怎么联系的:
接着执行下述命令进行查看:

 $ evince frames.pdf

注:Evince是Ubuntu和GNOME默认的文档阅读工具,它的设计极度简化。

可以看到如下所示的结果:
在这里插入图片描述
在这里我们能够看到tf广播了三个坐标框架,world,turtle1,以及turtle2。此外,我们还能够看到world是turtle1和turtle2框架的父亲。出于调试的目的,view_frames还能够报告一些何时接收到最旧或最近框架变换,以及tf框架发布到tf速度的诊断信息。

使用rqt_tf_tree

rqt_tf_tree是ROS广播的一个用于可视化坐标框架树的实时工具。我们可以简单的通过点击对话框左上方的 refresh 按钮来刷新 tf 树
用法如下:

rosrun rqt_tf_tree rqt_tf_tree

或者使用rqt &命令,然后在弹出的窗口的plugin中选取tf tree。

显示结果如下所示:
在这里插入图片描述

使用tf_echo

tf_echo报告了ROS任意两个框架广播之间的变换,用法如下:

rosrun tf tf_echo [reference_frame] [target_frame]

回到我们前述的例子中,turtle2坐标框架相对于turtle1坐标框架的变换等价于:turtle1坐标框架到世界坐标的转换 * 世界坐标到turtle2坐标框架的转换。
我们执行下述命令:

$ rosrun tf tf_echo turtle1 turtle2

我们可以看到tf_echo接听到ROS广播的坐标框架之间的变换类似如下述形式:

At time 1637390452.937
- Translation: [0.000, 0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, -0.171, 0.985]
            in RPY (radian) [0.000, 0.000, -0.344]
            in RPY (degree) [0.000, 0.000, -19.687]
At time 1637390453.641
- Translation: [0.000, 0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, -0.171, 0.985]
            in RPY (radian) [0.000, 0.000, -0.344]
            in RPY (degree) [0.000, 0.000, -19.687]
At time 1637390454.633
- Translation: [0.000, 0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, -0.171, 0.985]
            in RPY (radian) [0.000, 0.000, -0.344]
            in RPY (degree) [0.000, 0.000, -19.687]

如果我们继续控制小乌龟移动,能够看到返回值会随着两个小乌龟相对位姿的变化和变化。

rviz 和 tf

rviz是一个测试tf框架的有用的可视化工具。我们可以使用rviz来查看我们的小乌龟坐标框架。通过rviz中的 -d 参数来找到 turtle_tf包下配置的.rviz文件。

如下图所示:
在这里插入图片描述
左侧选项卡中可以看到关于通过tf广播坐标框架的一些信息。我们移动小乌龟时坐标框架也会在rviz中进行对应的移动。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS学习-tf介绍 的相关文章

  • gazebo通过sdf搭建仿真环境和机器人Husky

    具体格式要求可参考 http sdformat org spec ver 1 6 elem sdf
  • 思岚RPLIDAR A2 在ubuntu 16.04上的测试

    1 下载雷达ROS包 首先在github上下载rplidar的ros包 下载指令为 默认安装了git git clone https github com Slamtec rplidar ros git 在ubuntu上创建工作空间 并将该
  • Webots小车与Gampping建图仿真与ORB3算法实践

    此篇博客转自本作者在古月居的博客 https www guyuehome com 34537 前言 在研一的时候 由于XXX项目的需要 其中一项就是需要测试Gmapping建图 自然也要求使用ROS系统 由于之前经常在webots中进行仿真
  • V-REP安装

    小知识 是当前目录 是父级目录 是根目录 1 下载V REP 官网地址 http www v rep eu downloads html 我用ubuntu16 04下载V REP PRO EDU V3 5 0 Linux tar 2 解压安
  • Ubuntu镜像下载地址

    镜像地址https launchpad net ubuntu cdmirrors
  • 激光雷达LMS111在ROS上的使用

    LMS111 10100 在ROS上的测试与使用 准备工作 设备 硬件 LMS111 101000激光雷达 软件 ubuntu16 04 ROS 开始 设备连接 将激光雷达与处理器 电脑 工控机等 通过以太网连接好 激光雷达默认的IP地址为
  • 解决ros安装 使用roscore命令测试问题

    本人安装教程完成ROS的安装后 在进行测试如图1命令 出现 解决办法输入完命令1后要输入命令2才行 即可测试成功 测试成功的界面如下
  • 树莓派配置wifi做热点方法

    http wiki jikexueyuan com project raspberry pi wifi html
  • 最快实现一个自己的扫地机

    作者 良知犹存 转载授权以及围观 欢迎关注微信公众号 羽林君 或者添加作者个人微信 become me 扫地机介绍 扫地机器人行业本质是技术驱动型行业 产品围绕导航系统的升级成为行业发展的主旋律 按功能划分 扫地机器人分为四大系统 即导航系
  • 局域网下ROS多机通信的网络连接配置

    1 在路由器设置中固定各机器IP地址 在浏览器中输入路由器的IP地址 例如TP LINK路由器的IP为 192 168 1 1 进入登录页面后 输入用户名和密码登录 用户名一般为admin 密码为自定义 在 基本设置 gt LAN设置 gt
  • 【ROS】usb_cam相机标定

    1 唠叨两句 当我们要用相机做测量用途时 就需要做相机标定了 不然得到的计算结果会有很大误差 标定的内容包括三部分 内参 外参还有畸变参数 所以标定的过程就是要求得上面这些参数 以前弄这个事估计挺麻烦 需要做实验和计算才能得到 现在通过ro
  • 无法加载 LZ4 支持的 Python 扩展。 LZ4 压缩将不可用

    我是 ROS 新手 我刚刚打开终端并输入roscore和另一个终端并键入rostopic node我收到这个错误 上面写着 无法加载 LZ4 支持的 Python 扩展 LZ4 压缩将不可用 我搜索并去了https pypi org pro
  • 在 Python 3 中导入 Rosbag

    我正在尝试从 Python 3 读取 rosbag 文件 我安装了 ROS2 Eloquent Elusor 它应该支持 Python 3 当我跑步时 import rosbag bag rosbag Bag test bag 从Pytho
  • 错误状态:平台不允许不安全的 HTTP:http://0.0.0.0:9090

    我正在尝试从我的 flutter 应用程序连接到 ws local host 9090 使用 rosbridge 运行 的 Ros WebSocket 服务 但我在 Flutter 中收到以下错误 错误状态 平台不允许不安全的 HTTP h
  • 我的代码的 Boost 更新问题

    我最近将 boost 更新到 1 59 并安装在 usr local 中 我的系统默认安装在 usr 并且是1 46 我使用的是ubuntu 12 04 我的代码库使用 ROS Hydro 机器人操作系统 我有一个相当大的代码库 在更新之前
  • 无法在 ROS 中使用本地安装的 Protocol Buffer

    我已经安装了协议缓冲区 https developers google com protocol buffers 本地 ROS包的目录结构如下 CMakeLists txt package xml include addressbook p
  • Caught exception in launch(see debug for traceback)

    Caught exception in launch see debug for traceback Caught exception when trying to load file of format xml Caught except
  • 如何访问 Heroku 中的 docker 容器?

    我已按照此处构建图像的说明进行操作 https devcenter heroku com articles container registry and runtime getting started https devcenter her
  • 如何订阅“/scan”主题、修改消息并发布到新主题?

    我想通过订阅message ranges来改进turtlebot3的LDS 01传感器 通过应用一些算法修改messange ranges并将其发布到新主题 如下所示 但是当我运行编码时出现错误 错误是 遇到溢出的情况 错误是 运行时警告
  • 安装 ROS 时 Cmake 未检测到 boost-python

    我一直在尝试在我的 Mac 上安装 ROS 并根据不同版本的 boost 使用不同的库解决了错误 然而 似乎有一个库甚至没有检测到 boost python 这是我得到的错误 CMake Error at usr local share c

随机推荐

  • 论文速览【Offline RL】——【IQL】Offline reinforcement learning with implicit Q-Learning

    标题 xff1a Offline reinforcement learning with implicit Q Learning文章链接 xff1a Offline reinforcement learning with implicit
  • 机器学习实用工具 Wandb(1)—— 实验追踪

    在做机器学习项目时 xff0c 比如这个典型例子 xff0c 常常遇到以下几个痛点 记录训练曲线的代码繁琐 xff0c 与模型代码耦合度高 xff0c 观感差又不好修改自己做可视化效果较差 xff0c 要做好又太浪费时间调参时各种超参数模型
  • OLAP分析引擎Druid配置文件详解(四):Overlord配置文件

    摘要 xff1a 本文是Druid配置文件系列博文的第四篇 xff0c 我们将继续逐个介绍Druid的五大组件 xff0c 前文已经介绍了Coordinator组件的配置文件 xff0c 本文是第二个组件Overlord的介绍 以下配置都在
  • 大疆Onboard SDK 3.2玫瑰线例程浅析

    大疆Onboard SDK 3 2玫瑰线例程浅析 前不久参加2017英飞凌杯无人机竞赛 xff0c 研究了一下大疆的OnbardSDK xff0c 现在比赛结束了 xff0c 简单写一下其中自带的玫瑰线例程分析 xff0c 也算对比赛进行一
  • 利用stm32控制步进电机 速度&&加速度控制

    因为想申请 CSDN 博客认证需要一定的粉丝量 xff0c 而我写了五年博客才 700 多粉丝 xff0c 本文开启关注才可阅读全文 xff0c 很抱歉影响您的阅读体验 利用stm32控制步进电机 尝试用42系步进电机做倒立摆 xff0c
  • stm32f4编码器模式

    因为想申请 CSDN 博客认证需要一定的粉丝量 xff0c 而我写了五年博客才 700 多粉丝 xff0c 本文开启关注才可阅读全文 xff0c 很抱歉影响您的阅读体验 stm32f4编码器模式 花费一下午时间研究编码器的使用 xff0c
  • stm32 利用DMA+串口空闲中断接受任意长数据

    因为想申请 CSDN 博客认证需要一定的粉丝量 xff0c 而我写了五年博客才 700 多粉丝 xff0c 本文开启关注才可阅读全文 xff0c 很抱歉影响您的阅读体验 目录 一 DMA1 简介2 使用场景3 主要特性4 DMA控制器结构5
  • 微星电脑安装win10+ubuntu16.04双系统遇到的各种坑

    最近尝试在微星电脑安装ubuntu 遇到各种问题 xff0c 在此记录一下 已有win10 xff0c 安装ubuntu16 04LTS版本微星ge73 Raider RGB 8RF显卡 xff1a GTX1070硬盘 xff1a 1T机械
  • 使用prim算法生成随机迷宫

    文章目录 一 关于随机迷宫生成二 prim算法1 最小生成树2 prim算法简介3 正确性证明 三 prim算法和迷宫生成1 迷宫生成和最小生成树的联系2 prim迷宫生成算法3 可以参考这些文章 一 关于随机迷宫生成 1 我们将迷宫定义如
  • TM4C123G学习记录(4)--关于ROM前缀函数和HWREG函数

    为了准备电赛临时学一下TM4C123G xff0c 简单记录学习内容大家可以在这里下载我收集的资源 xff0c 非常全面 xff0c 花了很大功夫收集来的 xff0c 还有书籍 例程代码等还可以在TI官网下载相关文档TI官网 这两天学习TM
  • TM4C123G学习记录(6)--UART

    因为想申请 CSDN 博客认证需要一定的粉丝量 xff0c 而我写了五年博客才 700 多粉丝 xff0c 本文开启关注才可阅读全文 xff0c 很抱歉影响您的阅读体验 为了准备电赛临时学一下TM4C123G xff0c 简单记录学习内容大
  • TM4C123G学习记录(7)--输入捕获

    因为想申请 CSDN 博客认证需要一定的粉丝量 xff0c 而我写了五年博客才 700 多粉丝 xff0c 本文开启关注才可阅读全文 xff0c 很抱歉影响您的阅读体验 为了准备电赛临时学一下TM4C123G xff0c 简单记录学习内容大
  • ANO匿名飞控分析(1)— 遥控器解码

    准备电赛 xff0c 简单写一下匿名飞控的分析基于TM4C主控的匿名拓空者飞控 xff0c 介绍见匿名科创 匿名拓空者PRO TI版全开源飞控使用入门 TM4C123 文章目录 一 简介二 PWM信号模式1 介绍2 硬件连接 三 PPM信号
  • OLAP分析引擎Druid配置文件详解(五):MiddleManager配置文件

    摘要 xff1a 本文是Druid配置文件系列博文的第五篇 xff0c 我们将继续逐个介绍Druid的五大组件 xff0c 本文将开始介绍Data Server中的middle manager和peon组件 以下配置都在middleMana
  • ANO匿名飞控分析(2)— 任务调度

    准备电赛 xff0c 简单写一下匿名飞控的分析基于TM4C主控的匿名拓空者飞控 xff0c 介绍见匿名科创 匿名拓空者PRO TI版全开源飞控使用入门 TM4C123 一 简介 匿名飞控的任务调度还是比较简单的 xff0c 没有操作系统什么
  • 点云地面点滤波(Cloth Simulation Filter, CSF)“布料”滤波算法介绍

    本篇博客参考Wuming Zhang的文章 An Easy to Use Airborne LiDAR Data Filtering Method Based on Cloth Simulation 不方便的小伙伴可以在此 xff1a 资源
  • TSCAN + TMODEL处理点云数据生成DEM

    点云数据生成DEM流程 目录 点云数据生成DEM流程1 软件环境2 操作流程2 1 加载TSCAN TMODEL插件2 2 读取点云数据2 3 点云去噪 滤波2 4 构建tin模型2 5 生成格网DEM2 6 查看DEM数据 对基于商业软件
  • LeGO-LOAM算法详解

    LeGO LOAM算法详解 整体框架 LeGO LOAM算法的总体框架如下图所示 xff1a 图中新增加了绿框中的Segmentation环节 xff0c 同时对后续的特征提取 Odometry以及Mapping部分均有一定的修改 xff0
  • 最速下降法解析(理解笔记)

    我们在高中或本科时期就了解到 xff1a 当函数存在解析形式且容易进行求导 xff08 f x f x f x 在最优点
  • ROS学习-tf介绍

    tf简介 一个机器人系统一个时间段通常有多个3D坐标系在变化 xff0c 如世界全局坐标系 xff0c world frame base frame gripper frame xff08 手臂 夹子坐标框架 xff09 xff0c hea