Skip to content

在小海龟示例上运行命令行

Linux命令行

linux命令默认大家都会

ROS2的命令行工具都以 ros2 开头,后跟命令、动词和参数

运行小海龟节点(node)仿真器

格式:ros2 run <package_name> <executable_name>

bash
ros2 run turtlesim turtlesim_node

回车,则打开了一个有小海龟的图形化界面

新建另一个终端,运行:

bash
ros2 run turtlesim turtle_teleop_key

这样就能通过键盘控制小海龟运动,但注意鼠标光标一定要在该终端里闪烁

bash
ros2 node list #查看正在运行哪些节点
ros2 node info /turtlesim #查看某个特定节点信息

话题(topic)

再新建一个终端运行:

bash
ros2 topic list #查看当前有哪些话题

可以看到输出:

bash
/parameter_events
/rosout
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose

查看某个话题:

bash
ros2 topic echo /turtle1/pose

可以看到终端不断输出海龟的pose信息

也可以通过pub命令发布话题去控制海龟行为

bash
ros2 topic pub --rate 1 /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular:{x: 0.0, y: 0.0, z: 1.8}}"

注意:冒号后面一定要跟空格,少了一个空格都不行

--rate 1 表示一秒发布一次指令

可以看到海龟做圆周运动

服务(Service)

同样有list

我们调用这样一个服务:

bash
ros2 seice call /spawn turtlesim/srv/Spawn "{x: 2,y: 2, theta: 0.2, name: 'abc'}"

可以看到产生了一个新海龟,我们规定了位置和角度,以及名字(abc)

再次运行

bash
ros2 topic list

可以看到输出变为:

bash
/abc/cmd_vel
/abc/color_sensor
/abc/pose
/parameter_events
/rosout
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose

也就是说我们成功添加了新的接口

我们把之前圆周运动的话题命令复制过来,把turtle1 改成 abc

bash
ros2 topic pub --rate 1 /abc/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular:{x: 0.0, y: 0.0, z: 1.8}}"

可以看到现在是新的海龟做圆周运动了

bag

使用这个功能能记录运行的数据:

第三个终端运行:

bash
ros2 bag record /turtle1/cmd_vel

然后在第二个终端键盘用键盘控制海龟走一段路程

当你想要停止的时候,就按下Ctri+C停止第三个终端

可以发现目录下多了一个文件夹

运行:

bash
ros2 bag play rosbag2_2026_06_08-14_38_08/ #play 后面直接按下tab自动补全,这里是我电脑上的文件夹名称!

可以看到海龟在重复我们之前录制的运动