ROS教程译文1———TF转换树的设置和使用

2023-05-16

本文属于ROS翻译文章,来自WIKI:
http://wiki.ros.org/navigation/Tutorials/RobotSetup/TF

(由于水平有限,翻译错误在所难免,发现错误欢迎评论或联系作者)


Author: SuperDeveloper
Email: na1206@live.com
Description: Study ROS


机器人创建篇–用TF设置你的机器人

教程级别:初级

下一篇:使用机器人状态发布者

1. 转换配置

许多ROS包都需要tf软件库发布的转换树。在一个抽象层上,转换树根据不同坐标系之间的平移和旋转来计算偏移量。具体来说,假如有一个简单的机器人,它有一个可移动的基体以及在基体上端的一个激光器,我们定义两个坐标系:一个对应基体中心点,另一个对应基体上的激光器的中心点。我们给两个坐标系一个名字,称移动基体的坐标系为” base_link “(重要的是,对于navigation来说,这个被放置在机器人的旋转中心),我们称激光器的坐标系为”base_laser”。框架命名约定参见: http://www.ros.org/reps/rep-0105.html

我们假定有来自激光器中心点的距离数据,换句话说,我们有来自“base_laser”坐标系的数据,假设我们想要用这个数据去帮助移动基体避免世界中的障碍。为了成功实现这点,我们需要一种将数据从“base_laser”坐标系转换到“base_link”坐标系的方式。本质上,我们需要在“base_laser”和“base_link”之间定义一种关系。

这里写图片描述

为了定义这种关系,假设我们将激光器中心点安装在距离移动基体中心点横向10cm,纵向20cm的位置。这就给了我们一个”base_link”和”base_laser”之间的可转换的偏移量。特别地,我们知道了从”base_link”获取数据到”base_laser”必须应用一种关系(x:0.1m,y:0m,z:0.2m),同样从”base_laser”获取数据到”base_link”我们必须应用相反的转换关系(x:-0.1m,y:0.0m,z:-0.2m).

我们可以选择自己组织这些关系,意味着在必要的时候在坐标系之间使用恰当的转换关系,但是这会随着坐标系数量的增加变得异常困难。幸运的是,我们不需要自己来做这些事。取而代之,使用tf我们需要定义”base_link”和”base_laser”的关系,用它来为我们组织坐标系之间的转换。

在使用tf时为了定义和储存”base_link”和”base_laser”坐标系之间的关系,我们需要将他们添加到转换树中。从概念上讲,转换树中的每一个节点对应一个坐标系,每一条边对应着当前节点到其子节点的转换关系。TF使用一种树形结构来保证任意两个坐标系之间只有一个单遍历(对应关系——译者注),并且假设树中所用的边都从父节点指向子节点。

这里写图片描述

为我们的简单例子创建一个转换树,我们将创建两个节点,一个为”base_link”坐标系,一个为”base_laser”坐标系。为了创建他们之间的边(箭头——译者注),我们首先需要确定哪个节点为父节点以及哪个为子节点。记住,这个区别(父节点和子节点——译注)非常重要,因为TF假设所有的转换都从父到子。我们选择”base_link”坐标系为父,因为其他的部分或传感器是添加在基体上的,通过穿越”base_link”坐标系做出最适合他们到”base_laser”的关系(就是用”base_link”到某点的坐标值减去”base_laser”到相同点的坐标值——译注)。这意味着转换关系,即”base_link”与”base_laser”之间的边应当为(x:0.1m,y:0.0m,z:0.2m).随着这个转换树设置完毕,转换激光器在”base_laser”接收到的(数据)到”base_link”坐标系只需要简单的调用TF库。我们的机器人能使用这些信息在”base_link”坐标系中解释激光器(的数据)以及安全地规划避开环境中的障碍。

<接下来:代码编写………….待续>

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

ROS教程译文1———TF转换树的设置和使用 的相关文章

  • ROS:开机自启动

    Ubuntu14 04 网上很多资料说在 etc rc local中添加脚本 实验之后完全没用 可能是系统版本不对 解决 Ubuntu14 04 开机项命令 gnome session properties 点击 add name 名字 c
  • kinova-jaco2使用Moveit!控制真实机械臂抓取固定点物体

    kinova jaco2使用Moveit 控制真实机械臂抓取固定点物体 一 机械臂坐标系 坐标系方向 位姿方向 轴的起始点 二 启动机械臂和Moveit 三 实现抓取 python代码 python文件建议直接用python启动 四 遇到的
  • 使用WTGAHRS2(JY-GPSIMU)在ROS中读取数据并发布话题

    目录 IMU简介 驱动程序 IMU串口通信协议 程序 效果 IMU简介 十轴惯性导航传感器WTGAHRS2传感器集成高精度的陀螺仪 加速度计 地磁场传感器 GPS 模块 采用高性能的微处理器和先进的动力学解算与卡尔曼动态滤波算法 能够快速求
  • ROS中使用VLP16激光雷达获取点云数据

    ROS中使用VLP16激光雷达获取点云数据 个人博客地址 本文测试环境为 Ubuntu20 04 ROS Noetic 需要将激光雷达与PC连接 然后在设置 gt 网络 gt 有线中将IPv4改为手动 并且地址为192 168 1 100
  • ros+arduino学习(六):重构ros_lib库文件

    前言 ros lib是arduino程序和ros连接的库文件 通过使用这些库文件和相关函数 可以在arduino上通过编程使得arduino硬件开ros节点程序 这样arduino硬件就可以与上位机通过话题进行通讯 从而把arduino从传
  • Webots小车与Gampping建图仿真与ORB3算法实践

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

    如何安装ROS 大家好 我是如何 今天尝试在Ubantu下安装ROS Robot Operating System 测试环境 虚拟机VMware Ubantu20 04 准备步骤 添加ROS软件源 sudo sh c echo deb ht
  • 线速度和角速度

    转自 https baike baidu com item E7 BA BF E9 80 9F E5 BA A6 1532652 fr aladdin https baike baidu com item E8 A7 92 E9 80 9F
  • ROS noetic tf demo错误处理及python版本切换

    文章目录 报错描述及解决 ubuntu20 04下python版本切换 报错描述及解决 ubuntu版本 20 04 ROS版本 noetic roslaunch turtle tf turtle tf demo launch 报错信息 t
  • Hypervisor介绍及在智能驾驶的应用

    转自Hypervisor 智能座舱和智能驾驶融合的关键技术 腾讯新闻
  • Ubuntu18.04配置Seetaface6

    目录 一 下载安装Qt软件 1 安装包下载 2 安装Qt 3 配置 二 下载源码 三 编译工具 四 编译 1 编译OpenRoleZoo 2 编译SeetaAuthorize 3 编译TenniS 五 运行 1 修改lib路径 2 buil
  • 最快实现一个自己的扫地机

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

    我试图了解 ROS 中的 AsyncSpinner 是如何工作的 因为我可能有一些误解 你可以找到类似的问题here As seen here它的定义提到 异步旋转器 产生几个线程 可配置 将并行执行回调 同时不会阻塞执行该操作的线程 叫它
  • 错误状态:平台不允许不安全的 HTTP:http://0.0.0.0:9090

    我正在尝试从我的 flutter 应用程序连接到 ws local host 9090 使用 rosbridge 运行 的 Ros WebSocket 服务 但我在 Flutter 中收到以下错误 错误状态 平台不允许不安全的 HTTP h
  • 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
  • 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
  • ROS安装错误(Ubuntu 16.04中的ROS Kinetic)

    中列出的步骤顺序http wiki ros org kinetic Installat 已被关注 尝试在Ubuntu 16 04中安装ROSkinetic 输入以下命令时出错 sudo apt get install ros kinetic
  • 如何使用 PyQT5 连接和分离外部应用程序或对接外部应用程序?

    我正在使用 ROS 为多机器人系统开发 GUI 但我对界面中最不想做的事情感到困惑 在我的应用程序中嵌入 RVIZ GMAPPING 或其他屏幕 我已经在界面中放置了一个终端 但我无法解决如何向我的应用程序添加外部应用程序窗口的问题 我知道
  • ROS 问题:libQt5Core.so.5:无法打开共享对象文件:没有这样的文件或目录

    当我跑步时 rosrun turtlesim turtlesim node 在 Ubuntu 上 我收到以下消息 opt ros noetic lib turtlesim turtlesim node 加载共享库时出错 libQt5Core

随机推荐

  • Makefile学习总结

    Data 2017 12 07 Author cjh Theme Makefile Tutorial 俗话说 xff0c 工欲善其事必先利其器 xff0c 所以我们先来介绍一下Makefile中的特殊字符 64 表示目标文件 表示所有的依赖
  • stmdb和ldmia

    stmdb xff1a db xff08 decrease before xff09 表示先减后存 指令 stmdb sp fp ip lr pc 34 表示sp等于最终被修改的sp的值 假设 sp 61 4096 xff0c 此条指令的执
  • ros之tf经验总结

    1 概念 搞ros都离不开tf xff0c 当建立一个机器人模型时 xff0c 第一步就是要确定机器人的tf结构 以kobuki导航运行为例 xff0c 首先是 map xff1a 地图坐标 xff0c 固定坐标系 odom xff1a 机
  • setInterval和setTimeout的缺陷和优势分析

    先把问题摆出来 xff1a 使用定时器的setInterval xff08 xff09 方法会出现程序并不是按照我们设定的精确时间而调用的问题 xff01 定时器 xff1a 在JavaScript中经常会使用定时器来进行延时或者是重复调用
  • 关于KEIL调试时CortexJLink中SW Device检测不到芯片解决办法

    使用Jlink第一次下载成功后 xff0c 第二次检测不到设备 xff0c 极大原因是因为软件配置了SWDIO和SWCLK的状态导致的 解决办法 xff1a 软件中将配置两个引脚状态程序注释 xff0c 将芯片的BOOT0引脚接高电平 xf
  • Web大规模高并发请求和抢购的解决方案

    电商的秒杀和抢购 xff0c 对我们来说 xff0c 都不是一个陌生的东西 然而 xff0c 从技术的角度来说 xff0c 这对于Web系统是一个巨大的考验 当一个Web系统 xff0c 在一秒钟内收到数以万计甚至更多请求时 xff0c 系
  • Java用自定义的类作为HashMap的key值

    这是Java中很经典的问题 xff0c 在面试中也经常被问起 其实很多书或者文章都提到过要重载hashCode 和equals 两个方法才能实现自定义键在HashMap中的查找 xff0c 但是为什么要这样以及如果不这样做会产生什么后果 x
  • Maven类包冲突终极三大解决技巧 mvn dependency:tree

    举例 A依赖于B及C xff0c 而B又依赖于X Y xff0c 而C依赖于X M xff0c 则A除引B及C的依赖包下 xff0c 还会引入X xff0c Y xff0c M的依赖包 xff08 一般情况下了 xff0c Maven可通过
  • idea中的实现接口时@Override注解问题

    摘要 用IntelliJ 15打开一个以前的工程 xff0c 发现代码出现很多关于 64 Override的错误 xff0c 编辑器提示 xff1a 64 Override is not allowed when implementing
  • mac下idea的使用之java工程打包生成jar篇

    我们先选中工程 xff0c 然后点如下的图标 xff0c 打开配置文件 xff0c 再选中artifacts选项 xff0c 再点加号选jar 起一个名字 xff0c 然后再填写好要打到的路径 xff0c 下面就是我们要选择我们需要的包或着
  • Memory Dependencies-内存依赖

    Data 2017 12 28 Author cjh Theme Memory Dependencies 本篇内容是基于TI TMS320C6000Programmer s Guide手册第2 2 2 Memory Dependencies
  • Python中获取异常(Exception)信息

    异常信息的获取对于程序的调试非常重要 xff0c 可以有助于快速定位有错误程序语句的位置 下面介绍几种python中获取异常信息的方法 xff0c 这里获取异常 xff08 Exception xff09 信息采用try except 程序
  • 聚类、K-Means、例子、细节

    聚类 今天说聚类 xff0c 但是必须要先理解聚类和分类的区别 xff0c 很多业务人员在日常分析时候不是很严谨 xff0c 混为一谈 xff0c 其实二者有本质的区别 分类其实是从特定的数据中挖掘模式 xff0c 作出判断的过程 比如Gm
  • CTR中的特征哈希

    在CTR预估中 xff0c 一种做法是采用人工来做feature engineering xff0c 将一些非线性的feature转换为线性的feature xff0c 然后喂给LR之类的线性model来做在线学习 xff0c 在这个过程中
  • go的一些基本知识

    go 编译 xff0c 依赖 GOPATH 找到src https blog csdn net u012210379 article details 50443636 go logging http www yeolar com note
  • 论文精读-DeepFM

    转载一篇博客文章 https blog csdn net zynash2 article details 79348540 DNN部分的详细推导见 xff1a https blog csdn net zynash2 article deta
  • 《玲音》

    这年头时兴谈互联网思维 xff0c 最近看了二十年前的一部动漫 玲音 xff0c 里面还真是有不少互联网思维 xff0c 以下剧透 xff1a 玲音是一个中学女生 xff0c 性格内向自闭 xff0c 一直过着平淡的生活 xff0c 与家庭
  • idea中安装activity插件actibpm,文章中有下载链接

    我的个人网站 等不见天亮等时光 插件的安装路径有这么几种 从idea setting plugin 选择商店 在商店中直接输入actibpm 可以直接进行安装 由于网站的地址在国外 如果你没得梯子的话 中间肯定会安装失败 所以我建议在安装时
  • unrecognized command line option '-V' 解决方法

    xgcc error unrecognized command line option 39 V 39 xgcc fatal error no input files 真正的错误并不在这里 xff0c 而是在最后一个错误出现的地方 我遇到的
  • ROS教程译文1———TF转换树的设置和使用

    本文属于ROS翻译文章 xff0c 来自WIKI http wiki ros org navigation Tutorials RobotSetup TF 由于水平有限 xff0c 翻译错误在所难免 xff0c 发现错误欢迎评论或联系作者