学习资料参考ROS2入门21讲图文教程.
回到命令行来,一系列的命令都是通过字符的方式输入的,怎么输入呢,并不是使用写字本,而是使用专门的软件,叫做Terminal,终端。
启动终端的方式有很多种:
我们先来体验一下Linux的常用命令,找找感觉。
cd
pwd
mkdir
ls
rm
sudo
ROS2命令行的操作机制与Linux相同,不过所有操作都集成在一个ros2的总命令中,后边第一个参数表示不同的操作目的,比如node表示对节点的操作,topic表示对话题的操作,具体操作干什么,还可以在后边继续跟一系列参数内容。
想要运行ROS2中某个节点,我们可以使用ros2 run命令进行操作,例如我们要运行海龟仿真节点和键盘控制节点:
$ ros2 run turtlesim turtlesim_node
$ ros2 run turtlesim turtle_teleop_key
当前运行的ROS系统中都有哪些节点呢?可以这样来查看:
$ ros2 node list
如果对某一个节点感兴趣,加上一个info子命令,就可以知道它的详细信息啦:
$ ros2 node info /turtlesim
![在这里插入图片描述](https://img-blog.csdnimg.cn/ee93c1406d6542f8a0752f5b094d2f35.png#pic_center
当前系统中都有话题呢,使用如下命令即可查看:
ros2 topic echo /turtle1/pose
想要控制海龟动起来,我们还可以直接通过命令行发布话题指令:
$ 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}}"
一只海龟太孤单,仿真器还提供改了一个服务——产生海龟,我们试一试服务调用,再来一只海龟:
$ ros2 service call /spawn turtlesim/srv/Spawn "{x: 2, y: 2, theta: 0.2, name: ''}"
直接通过命令行发布话题指令, 让第二个乌龟也运动起来
$ 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}}"
想要让海龟完成一个具体动作,比如转到指定角度,仿真器中提供的这个action可以帮上忙,通过命令行这样发送动作目标:
$ ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute "theta: 1.57"
系统运行中的数据有很多,如果想要把某段数据录制下来,回到实验室再复现这段数据如何?ROS2中的rosbag功能还是很好用的,轻松实现数据的录制与播放:
$ ros2 bag record /turtle1/cmd_vel
$ ros2 bag play rosbag2_2022_04_11-17_35_40/rosbag2_2022_04_11-17_35_40_0.db3
以上就是ROS2中我们常用的命令啦,每一个命令的子命令还有很多,大家可以自己尝试看看。