1.创建工作空间:demo04_ws(见书1.4.2,视频p025)
图1
创建工作空间
进入工作空间
进行编译
mkdir -p xxx_ws/src(必须得有 src)
cd xxx_ws
catkin_make
2.使用vscode打开,因为vscode里需要频繁编译ros程序,所以需要配置编译相关的参数和命令
图2
(1)选择快捷键 ctrl + shift + B 调用编译,选择:catkin_make:build
可以点击配置设置为默认,修改.vscode/tasks.json 文件
图3 原本
图4 更改后
此后按ctrl+shift+b ,默认编译整个工作空间
3.在src创建功能包tf01_static,并添加依赖
图5
图6
Ctrl+shift+b编译,查看导入的包是否出错,本次没有异常
4.本次导入功能包的介绍
表1
find_package(catkin REQUIRED COMPONENTS geometry_msgs #封装坐标点和坐标系相关关系 roscpp rospy std_msgs #tf2相关 tf2 tf2_geometry_msgs tf2_ros ) |
(1)roscpp;rospy;std_msgs
roscpp是使用C++实现的库,而rospy则是使用python实现的库,std_msgs是标准消息库,ROS 中通过 std_msgs 封装了一些原生的数据类型,比如:String、Int32、Int64、Char、Bool、Empty.... 创建ROS功能包时,一般都会依赖这三个库实现。
(2)geometry_msgs
geometry_msgs 是 ROS(Robot Operating System)中的一个标准消息包,它包含了多种消息类型,用于在不同的 ROS 节点之间传递关于几何形状和变换的信息。这个包是 ROS 中的基础组件,因为它提供了描述机器人和物体在空间中位置与方向所需的基本工具。
以下是 geometry_msgs 包中一些常用的消息类型:
Point: 表示一个三维空间中的点,包含 x、y 和 z 三个坐标值。
Quaternion: 表示一个四元数,用于表示三维空间中的旋转。四元数比欧拉角更加强大,因为它们不仅可以表示任何旋转,而且可以避免万向节死锁问题。
Vector3: 表示一个具有三个分量的向量,通常用于表示力、速度、加速度等。
Pose: 结合了一个 Point 和一个 Quaternion,表示物体在空间中的位置和方向。
PoseArray: 一个 Pose 的数组,用于表示多个物体的位置和方向。
Transform: 表示从一个坐标系到另一个坐标系的变换,包含一个 Vector3 平移分量和一个 Quaternion 旋转分量。
TransformStamped: Transform 的时间戳版本,它包含时间戳、坐标系的名称和坐标变换。
Twist: 表示速度,结合了线性速度 (linear) 和角速度 (angular)。
Wrench: 表示一个力和扭矩,通常用于描述作用在物体上的力和力矩
Accel: 类似于 Twist,但表示加速度而不是速度。
这些消息类型是构建更高级功能的基础,如导航、运动规划、物体跟踪和机器人控制。它们使得 ROS 节点能够以标准化的方式交换关于几何形状、位置、方向和运动的信息。
(3)tf2;tf2_geometry_msgs;tf2_ros
在ROS中坐标变换最初对应的是tf,不过在 hydro 版本开始, tf 被弃用,迁移到 tf2,后者更为简洁高效,tf2对应的常用功能包有:
tf2_geometry_msgs:可以将ROS消息转换成tf2消息。
tf2: 封装了坐标变换的常用消息。
tf2_ros:为tf2提供了roscpp和rospy绑定,封装了坐标变换常用的API。
参考资料
1.5.1 TF坐标变换 · Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程
2.使用kimi.ai询问