目标:学习如何向 tf2 广播静态坐标系。
教程级别:中级
时间:15 分钟
目录
背景
先决条件
任务
1. 创建一个包
2. 编写静态广播节点
3. 构建
4. 运行
发布静态变换的正确方法
摘要
背景
发布静态变换对于定义机器人基座与其传感器或非移动部件之间的关系非常有用。例如,在激光扫描仪中心的框架内推理激光扫描测量数据是最简单的。
这是一个独立的教程,涵盖了静态变换的基础知识,包括两个部分。在第一部分中,我们将编写代码将静态变换发布到 tf2。在第二部分中,我们将解释如何在 tf2_ros
中使用命令行 static_transform_publisher
可执行工具。
在接下来的两个教程中,我们将编写代码以复现《tf2 入门》教程中的演示。之后,后续教程将专注于使用更高级的 tf2 功能扩展演示。
先决条件
在之前的教程中,您学习了如何创建工作区和创建包。
任务
1. 创建一个包
首先,我们将创建一个包,用于本教程及后续教程。这个名为 learning_tf2_cpp
的包将依赖于 geometry_msgs
、 rclcpp
、 tf2
、 tf2_ros
和 turtlesim
。本教程的代码存储在这里。
打开一个新的终端并且配置你的 ROS 2 安装,以便 ros2
命令能够工作。导航到工作空间的 src
文件夹并创建一个新的包:
ros2 pkg create --build-type ament_cmake --license Apache-2.0 --dependencies geometry_msgs rclcpp tf2 tf2_ros turtlesim -- learning_tf2_cpp
您的终端将返回一条消息,确认您的包 learning_tf2_cpp
及其所有必要的文件和文件夹已创建。
cxy@ubuntu2404-cxy:~/ros2_ws/src$ ros2 pkg create --build-type ament_cmake --license Apache-2.0 --dependencies geometry_msgs rclcpp tf2 tf2_ros turtlesim -- learning_tf2_cpp
going to create a new package
package name: learning_tf2_cpp
destination directory: /home/cxy/ros2_ws/src
package format: 3
version: 0.0.0
description: TODO: Package description
maintainer: ['cxy <cxy@todo.todo>']
licenses: ['Apache-2.0']
build type: ament_cmake
dependencies: ['geometry_msgs', 'rclcpp', 'tf2', 'tf2_ros', 'turtlesim']
creating folder ./learning_tf2_cpp
creating ./learning_tf2_cpp/package.xml
creating source and include folder
creating folder ./learning_tf2_cpp/src
creating folder ./learning_tf2_cpp/include/learning_tf2_cpp
creating ./learning_tf2_cpp/CMakeLists.txt
2. 编写静态广播器节点
让我们首先创建源文件。在 src/learning_tf2_cpp/src
目录中,通过输入以下命令下载示例静态广播代码:
cxy@ubuntu2404-cxy:~/ros2_ws/src$ cd learning_tf2_cpp/src
cxy@ubuntu2404-cxy:~/ros2_ws/src/learning_tf2_cpp/src$ wget https://raw.githubusercontent.com/ros/geometry_tutorials/ros2/turtle_tf2_cpp/src/static_turtle_tf2_broadcaster.cpp
使用您喜欢的文本编辑器打开文件。
// 版权 2021 开源机器人基金会,公司。
//
// 根据Apa