Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ROS2机器人坐标工具→tf2简介

ROS2机器人坐标工具→tf2简介

作者头像
zhangrelay
发布于 2022-06-02 00:10:44
发布于 2022-06-02 00:10:44
1.3K00
代码可运行
举报
运行总次数:0
代码可运行

参考文献:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1.  docs.ros.org/en/humble/Tutorials/Tf2/Tf2-Main.html
2.  github.com/ros/geometry_tutorials/tree/ros2

foxy/galactic/humble通用 

tf2 在时间缓冲的树结构中维护坐标系之间的关系,并让用户在任何所需的时间点在任意两个坐标系之间变换点、向量等。 

官网许多 tf2 教程可使用 C++ 和 Python。 这些教程经过精简,可以完成 C++ 系列或 Python 系列。 如果想同时学习 C++ 和 Python,应该学习一次 C++ 和一次 Python 的教程。

内容

  1. 工作空间设置
  2. 学习tf2
  3. 调试 tf2
  4. 通过 tf2 使用传感器消息

工作空间配置属于ROS2基础教程,参考哦对应文档即可。

学习 tf2

1.tf2 简介。

本教程将了解 tf2 可以做什么。它在使用 turtlesim 的多机器人示例中展示了 tf2 的一些功能。这也介绍了使用 tf2_echo、view_frames 和 rviz。

2. 编写一个 tf2 静态广播器 (Python) (C++)。

本教程关于如何将静态坐标帧广播到 tf2.

3. 编写一个 tf2 广播器 (Python) (C++)。

本教程关于如何将机器人的状态广播到 tf2。

4. 编写一个 tf2 监听器 (Python) (C++)。

本教程关于如何使用 tf2 访问坐标系转换。

5. 添加坐标系 (Python) (C++)。

本教程关系如何为 tf2.x 添加额外的固定坐标系。

6. 学习 tf2 和 time (Python) (C++)。

本教程关于使用 lookup_transform 函数中的超时来等待 tf2 树上可用的转换。

7. 使用 tf2 (Python) (C++) 进行时间旅行。

本教程关于介绍 tf2 的高级时间旅行功能。

调试 tf2

1. 四元数基础。

本教程教关于 ROS 2 中使用四元数的基础知识。

2. 调试 tf2 问题。

本教程介绍了调试 tf2 相关问题的系统方法。

通过 tf2 使用传感器消息

使用带有 tf2_ros::MessageFilter 的标记数据类型。

本教程关于如何使用 tf2_ros::MessageFilter 处理标记数据类型。

tf2 文档

tf2 是第二代 tf 库。

这个库实现了 tf2::BufferCore 定义的接口。

还有一个具有相同 API 的 Python 包装器,该 API 使用 CPython 绑定对该库进行分类。

代码 API

主接口是通过 tf2::BufferCore 接口。 它使用 exceptions.h 中的异常和 transform_datatypes.h 中的 Stamped 数据类型。

转换接口

tf2 为外部库提供模板化转换接口,以指定 tf2 特定数据类型和用户定义数据类型之间的转换。 tf2_ros 中的各种模板化函数使用转换接口将 tf 服务器的转换应用于这些自定义数据类型。

转换接口在 tf2/convert.h 中定义。

一些实现这个接口的包,如下:

  • tf2_bullet
  • tf2_eigen
  • tf2_geometry_msgs
  • tf2_kdl
  • tf2_sensor_msgs

ROS Wiki 上提供了有关转换接口的更多文档。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
2022前端面试遇到的手写题总结
下面来看一道比较典型的问题,通过这个问题来对比几种异步编程方法:红灯 3s 亮一次,绿灯 1s 亮一次,黄灯 2s 亮一次;如何让三个灯不断交替重复亮灯?
helloworld1024
2022/09/22
7240
拿到大厂前端offer的前端开发是怎么回答面试题的
两者对比:强类型语言在速度上可能略逊色于弱类型语言,但是强类型语言带来的严谨性可以有效地帮助避免许多错误。
loveX001
2022/11/16
6310
腾讯前端手写面试题及答案
函数柯里化概念: 柯里化(Currying)是把接受多个参数的函数转变为接受一个单一参数的函数,并且返回接受余下的参数且返回结果的新函数的技术。
helloworld1024
2022/12/19
6710
年底前端面试题总结(上)
HTTP1.0 中默认是在每次请求/应答,客户端和服务器都要新建一个连接,完成之后立即断开连接,这就是短连接。当使用Keep-Alive模式时,Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接,这就是长连接。其使用方法如下:
loveX001
2022/10/11
8040
美团前端手写面试题总结
该方法的参数是 Promise 实例数组, 然后其 then 注册的回调方法是数组中的某一个 Promise 的状态变为 fulfilled 的时候就执行. 因为 Promise 的状态只能改变一次, 那么我们只需要把 Promise.race 中产生的 Promise 对象的 resolve 方法, 注入到数组中的每一个 Promise 实例中的回调函数中即可.
helloworld1024
2022/10/18
9800
前端面试被问到的js手写面试题汇总
类的继承在几年前是重点内容,有n种继承方式各有优劣,es6普及后越来越不重要,那么多种写法有点『回字有四样写法』的意思,如果还想深入理解的去看红宝书即可,我们目前只实现一种最理想的继承方式。
helloworld1024
2022/11/18
5860
前端一面高频面试题(附答案)
我们常说的代理也就是指正向代理,正向代理的过程,它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求。
loveX001
2022/12/14
6140
前端关于面试你可能需要收集的面试题1
在 Vue3.0 中通过 Proxy 来替换原本的 Object.defineProperty 来实现数据响应式。
loveX001
2022/12/20
4080
前端高频手写面试题
Object.is不会转换被比较的两个值的类型,这点和===更为相似,他们之间也存在一些区别
helloworld1024
2022/12/15
1.2K0
前端面试必须掌握的手写题
前端面试题视频讲解封装异步的fetch,使用async await方式来使用(async () => { class HttpRequestUtil { async get(url) { const res = await fetch(url); const data = await res.json(); return data; } async post(url, data) {
alice11fe
2022/07/29
6220
web前端面试题及答案2023_2023-03-15
首先,定义了一个Promise,来异步执行函数runAsync,该函数传入一个值x,然后间隔一秒后打印出这个x。
aync_sync
2023/03/15
7110
滴滴前端一面高频手写面试题汇总_2023-02-28
浅拷贝是指,一个新的对象对原始对象的属性值进行精确地拷贝,如果拷贝的是基本数据类型,拷贝的就是基本数据类型的值,如果是引用数据类型,拷贝的就是内存地址。如果其中一个对象的引用内存地址发生改变,另一个对象也会发生变化。
用户10358576
2023/02/28
7600
前端面试高频20道手写题
该方法的参数是 Promise 实例数组, 然后其 then 注册的回调方法是数组中的某一个 Promise 的状态变为 fulfilled 的时候就执行. 因为 Promise 的状态只能改变一次, 那么我们只需要把 Promise.race 中产生的 Promise 对象的 resolve 方法, 注入到数组中的每一个 Promise 实例中的回调函数中即可.
helloworld1024
2022/08/02
3650
阿里前端高频面试题合集
做完这道题目,我们就需要格外注意,每个定时器的时间,并不是所有定时器的时间都为0哦。
helloworld1024
2022/09/13
4330
大厂前端面试考什么?
一个拥有 length 属性和若干索引属性的对象就可以被称为类数组对象,类数组对象和数组类似,但是不能调用数组的方法。常见的类数组对象有 arguments 和 DOM 方法的返回结果,还有一个函数也可以被看作是类数组对象,因为它含有 length 属性值,代表可接收的参数个数。
loveX001
2022/09/26
3740
滴滴前端高频面试题
O.length >>> 0 是什么操作?就是无符号右移 0 位,那有什么意义嘛?就是为了保证转换后的值为正整数。其实底层做了 2 层转换,第一是非 number 转成 number 类型,第二是将 number 转成 Uint32 类型
gogo2027
2022/09/13
1.2K0
2021JavaScript面试题(最新)不定时更新(2021.11.6更新)
js 一共有六种基本数据类型,分别是 Undefined、Null、Boolean、Number、String,还有在 ES6 中新增的 Symbol 类型。 Symbol 代表创建后独一无二且不可变的数据类型,它的出现我认为主要是为了解决可能出现的全局变量冲突的问题。
全栈程序员站长
2022/09/07
2.6K0
2022必会的前端手写面试题
要求写出 区号+8位数字,或者区号+特殊号码: 10010/110,中间用短横线隔开的正则验证。 区号就是三位数字开头。
buchila11
2022/05/01
7870
拿到大厂前端offer的前端开发是怎么回答面试题的_2023-02-28
Nginx 是一款轻量级的 Web 服务器,也可以用于反向代理、负载平衡和 HTTP 缓存等。Nginx 使用异步事件驱动的方法来处理请求,是一款面向性能设计的 HTTP 服务器。
aync_sync
2023/02/28
4890
腾讯前端高频手写面试题
函数柯里化概念: 柯里化(Currying)是把接受多个参数的函数转变为接受一个单一参数的函数,并且返回接受余下的参数且返回结果的新函数的技术。
helloworld1024
2022/11/15
5960
相关推荐
2022前端面试遇到的手写题总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档