$ cd ~/dev_ws/src
$ ros2 pkg create --build-type ament_cmake learning_pkg_c # C++
$ ros2 pkg create --build-type ament_python learning_pkg_python # Python
--packages-select:编译工作空间下面的某一个功能包
colcon build --packages-select <package_name>
| 功能 | 命令 |
|---|---|
| 录制话题 | ros2 bag record <topic1> <topic2> ... |
| 回放数据 | ros2 bag play <bag_path> |
| 查看信息 | ros2 bag info <bag_path> |
| 转换格式 | ros2 bag convert <bag_path> |
| 压缩 / 解压 | --compression-mode, --compression-format |
ros2 bag record /topic1 /topic2 //只录制了指定的话题
| 选项 | 说明 |
|---|---|
| -o | 指定输出文件夹名 |
| -a | 记录所有话题 |
ros2 bag record -o my_bag /scan /tf --compression-mode file --compression-format zstd
ros2 bag play my_bag
| 选项 | 说明 |
|---|---|
| --rate | 以 n 倍速度播放(默认 1.0) |
| --loop | 循环播放 |
| --topics | 指定回放话题 |
| --clock | 发布 /clock 话题(支持 use_sim_time |
ros2 bag play my_bag --rate 0.5 --loop --clock
ros2 bag play my_lidar_bag --remap /scan:=/my_scan
意思是:播放时把 bag 文件里的 /scan 映射为 /my_scan 来发出
可以映射多个:
ros2 bag play my_lidar_bag \
--remap /scan:=/lidar_undistorted \
--remap /odom:=/odom_filtered
ros2 bag info my_bag
| 选项 | 说明 |
|---|---|
| list | 查看当前所有话题 |
| echo | 实时打印话题内容 |
| info | 查看某个话题的消息类型和接收发布数量 |
| type | 查看某个话题的消息类型 |
示例:
ros2 topic list
输出:
/tf
/odom
/scan
/camera/image_raw
示例:
ros2 topic type /odom
输出:
nav_msgs/msg/Odometry
示例:
ros2 topic echo /odom
输出:
header:
stamp:
sec: 1646903840
nanosec: 123456789
frame_id: "odom"
child_frame_id: "base_link"
pose:
pose:
position:
x: 1.0
y: 2.0
z: 0.0
orientation:
x: 0.0
y: 0.0
z: 0.0
w: 1.0
...
示例:
ros2 topic info /odom
输出:
Type: nav_msgs/msg/Odometry
Publisher count: 1
Subscription count: 2
ros2 topic echo /tf
ros2 topic echo /tf_static
ros2 run tf2_tools tf2_echo <frame1> <frame2>
ros2 run tf2_tools tf2_monitor
ros2 interface show <消息类型>
示例:
ros2 interface show sensor_msgs/msg/LaserScan
输出:
std_msgs/Header header
builtin_interfaces/Time stamp
string frame_id
float32 angle_min
float32 angle_max
float32 angle_increment
...