惟愿言行合一,砥砺前行

0%

ROS|②基本命令

ROS基本命令

右键新标签页查看大图!

have to do

Command

Command Result 中文解释 图示
roscore Open the core of the ROS. 启动ROS Master。
sudo apt install python3-ros+ Install the ros+ command. 下载需要用到的命令,如rosservice(如果你的python版本不是python3,用python-ros+就行)

Error

Error Whose Solution
roscore gedit ~/.bashrc
export ROS_MASTER_URI=http://localhost:11311
export ROS_HOSTNAME=localhost
export ROS_IP=’hostname -I’
source ~/.bashrc
“正在等待缓存锁:无法获得锁……” apt install use ‘sudo -i’ and install with root
若之后的指令运行不了,检查是否有右侧所示包,有关ros系统的安装问题参考Ubuntu 20.04安装Ros Noetic及Ubuntu 18.04安装ROS Melodic(两版本详细填坑) rosrun turtlesim等等 sudo apt-get install ros-noetic-rospy、sudo apt install ros-noetic-roslaunch、sudo apt install ros-noetic-rosbash、sudo apt install ros-noetic-turtlesim、sudo apt-get install ros-noetic -teleop-twist-keyboard(注意我的版本是ubuntu20.04,因此对应ros-noetic系统)

need to run

rosrun: ros-run

Command Result 中文解释 图示
rosrun turtlesim Show you all the turtlesim commands. 列出所有可用的turtlesim命令。
rosrun turtlesim turtlesim-node Create and run a turtle node. 启动小海龟结点、小海龟仿真器。
rosrun turtlesim turtle_teleop_key Create and run a control node to control turtle with keyboard. 启动小海龟控制结点。

Error

Error Whose Solution
rosrun turtlesim 打完指令之后,不要回车,tab两次就能出结果。

how to know

rqt_

Command Result 中文解释 图示
rqt_graph Show a graph contained nodes, topics and so on. 利用基于qt的可视化工具显示系统当前的结点和话题信息。
rqt_plot rqt_plot /turtle1/pose/x:y: A plot show just-in-time turtle1’s pose. 基于qt的用于显示某信息的坐标工具。

ros+

Command Add Result 图示
rosnode list,info,ping,machine,kill,cleanup rosnode list: Show the names of all the nodes.
rosnode info ABC: Show the information of the node named ABC, such as Publications, Subscriptions, Services and some Low-level communication information.
/rosout is a default active node.
rostopic bw,delay,echo,find,hz,info,list,pub,type rostopic list: Show the names of all the topics.
rostopic pub ABC content[tab,tab]: Publish the content of ABC. Tab twice will make the content show.
rostopic hz: 用来检测消息标题的发布频率。
rosmsg show,info,list,md5,package,packages rosmsg show [tab,tab]: Show message description. Tab twice will make the message description show.
rosservice list,call,args,find,info,type,uri rosservice list: Show the names of all the services.
rosservice call ABC content[tab,tab]: Open a service named ABC, whose content can be shown by tab twice.
/spwan是产卵的意思。
rosbag record,play rosbag record: Start recording messages.
rosbag play ABC: Play the messages of the bag named ABC.

附录

  ROS可以通过在shell环境中输入命令来进行文件系统的使用、源代码编辑、构建、调试和功能包管理等。为了正确使用ROS,除了基本的Linux命令之外,还需要熟悉ROS专用命令。为了熟练掌握ROS的各种命令,我们对每个命令的功能进行了简单的描述,并给出了例子。在介绍每条命令时,考虑到使用的频率和重要性,标了星级评分。虽然很难从一开始就很熟练地使用所有的命令,但是随着使用的次数增多,读者会发现越来越方便快捷地使用各个ROS命令。

ROS功能包命令

roscd:移动功能包

roscd [功能包名称]
这是一个移动到保存有功能包的目录的命令。该命令的基本用法是在roscd命令之后将功能包名称写入参数。在以下示例中,turtlesim功能包位于安装ROS的目录中,但是,如果将创建的功能包名称(例如,在上一章中创建的your_pkg)作为参数,则会移至您指定的功能包的目录。这是在使用基于命令行的ROS时常用的命令。

1
2
3
4
$ roscd turtlesim
/ opt / ros / kinetic / share / turtlesim
$ roscd your_pkg
~/ catkin_ws / src / your_pkg

rosls: ROS文件列表

rosls [功能包名称]
该命令查看指定的ROS功能包的文件列表。您可以使用roscd命令移动到功能包,然后使用正常的ls命令执行相同的功能,但有时需要立即查看。实际中并不经常使用。

1
2
$ rosls turtlesim
cmake images msg srv package.xml

ROS执行命令

ROS执行命令管理ROS节点的运行。最重要的是,roscore被用作节点之间的名称服务器。执行命令是rosrun和roslaunch。rosrun运行一个节点,当运行多个节点或设置各种选项时使用roslaunch。rosclean是删除节点执行时记录的日志的命令。

roscore: 运行roscore

roscore [选项]
roscore命令会运行主节点,主节点管理节点之间的消息通信中的连接信息。主节点是使用ROS时必须首先被运行的必要元素。ROS 主节点由roscore运行命令来驱动,并作为XMLRPC服务器运行。主节点接收多种信息的注册,如节点的名称、话题和服务名称、消息类型、URI地址和端口号,并在收到节点的请求时将此信息通知给其他节点。此外,会运行rosout ,这个命令用于记录ROS中使用的ROS标准输出日志,例DEBUG、INFO、WARN、
ERROR和FATAL。它还运行一个管理参数的参数服务器。当执行roscore时,将用户设置的ROS_MASTER_URI作为主URI,并且驱动主节点,用户可以在~/.bashrc文件中设置。ROS_MASTER_URI。

rosrun:运行ROS节点

rosrun [功能包名称] [节点名称]
rosrun是执行指定的功能包中的一个节点的命令。以下例子运行turtlesim功能包的turtlesim_node节点。请注意,屏幕上出现的乌龟图标是随机选择并运行的。你也可以敲击[Tab] 观察turtlesim下的其他程序功能。

1
$ rosrun turtlesim turtlesim_node

roslaunch:运行多个ROS节点

roslaunch [功能包名称] [ launch 文件名]
roslaunch是运行指定功能包中的一个或多个节点或设置执行选项的命令。使用launch文件启动的方式对于运行多个节点非常有用,这是ROS中常用的执行方法。实例见实验六。

rosclean:检查及删除ROS日志

rosclean [选项]
该命令检查或删除ROS日志文件。在运行roscore时,对所有节点的记录都会写入日志文件,随着时间的推移,需要定期使用rosclean命令删除这些记录。以下是检查日志使用情况的示例。

1
2
3
$ rosclean check
320K ROS node logs
→ 意味着 ROS 日志一共占 320KB

当运行roscore时,如果显示以下警告信息,则意味着日志文件超过1GB,如果用户觉得会让系统不堪重负,请使用rosclean命令将其删除。

1
WARNING : disk usage in log directory [/ xxx /. ros / log ] is over 1GB .

以下是删除ROS日志存储库(笔者是/home/rt/.ros/log)的所有日志的示例。如果要删除它,请按y按钮将其删除。

1
2
3
4
5
6
$ rosclean purge
Purging ROS node logs .
PLEASE BE CAREFUL TO VERIFY THE COMMAND BELOW !
Okay to perform :
rm -rf /home/pyo/.ros/log
( y / n )?

ROS信息命令

ROS信息命令用于识别话题、服务、节点和参数等信息。尤其是rostopic、rosservice、
rosnode和rosparam经常被使用,并且rosbag是ROS的主要特征之一,它具有记录数据和回放功能,务必要掌握。

运行节点

我们将使用下面的命令,利用ROS提供的turtlesim来了解相关的节点、话题和服务。在使用ROS信息命令进行测试之前,需要做好以下准备工作。为确保顺利进行,关闭所有以前运行的终端。然后打开一个新的终端并运行以下命令。

1
$ roscore

为了运行turtlesim功能包中的turtlesim_node节点,打开一个新的终端并运行以下命令。这将从turtlesim功能包运行turtlesim_node。用户会在一个蓝色的屏幕上看到乌龟。

1
$ rosrun turtlesim turtlesim_node

运行turtlesim功能包中的turtle_teleop_key节点,打开一个新的终端并运行以下命令。这将在turtlesim功能包中运行turtle_teleop_key。一旦执行,可以在该终端窗口上,用键盘上的方向键控制乌龟。请自己尝试。当您按下方向键时,屏幕上的乌龟会移动,这是一个简单的仿真,但这是将驱动机器人所需的移动速度(m/s)和旋转速度(rad/s)用消息传送的。

1
$ rosrun turtlesim turtle_teleop_key

rosnode:ROS节点

rosnode list:列出正在运行中的所有节点

这是列出连接到roscore的所有节点的命令。如果已经运行了roscore和之前准备好的节点(turtlesim_node,turtle_teleop_key),则可以看到终端中列出了用于在roscore进行日志记录的rosout,以及teleop_turtle和turtlesim节点。

1
2
3
4
$ rosnode list
/rosout
/teleop_turtle
/turtlesim

rosnode info [节点名称]:检查指定节点的信息

使用rosnode info命令可以查看指定节点的信息。基本上,用户可以检查发布者、订阅者和服务等。此外,还可以检查关于节点运行URI和话题输入/输出的信息。由于会显示大量信息,因此省略了内容,所以请务必亲自运行。

1
2
3
4
$ rosnode info / turtlesim
------------------------------------------------
Node [/ turtlesim ] Publications :
* / turtle1 / color _ sensor [ turtlesim / Color ]

rosnode kill [节点名称]:终止指定节点的运行

这是一个终止正在运行的节点的命令。您可以在运行节点的终端窗口中使用[Ctrl+c]直接终止节点,但也可以指定要结束的的节点,如下所示。

1
2
3
$ rosnode kill /turtlesim
killing /turtlesim
killed

如果使用该命令终止了节点,则会在运行该节点的终端窗口上显示如下警告消息,并关闭该节点。

1
2
[ WARN ] [ 1499668430 . 215002371 ]: Shutdown request received .
[ WARN ] [ 1499668430 . 215031074 ]: Reason given for shutdown : [ user request ]

rostopic: ROS话题

在运行ROS话题示例之前,请先关闭所有节点。通过在不同的终端窗口中分别运行以下命令来运行turtlesim_node和turtle_teleop_key。

1
2
3
$ roscore
$ rosrun turtlesim turtlesim_node
$ rosrun turtlesim turtle_teleop_key

rostopic list:显示当前正在发送和接收的所有话题的列表。

1
2
3
4
5
6
$ rostopic list
/ rosout
/ rosout_agg
/ turtle1/cmd_vel
/ turtle1/color_sensor
/ turtle1/pose

rostopic echo [话题名称]:实时显示指定话题的消息内容

以下示例实时显示组成/turtle1/pose话题的x、y、theta、linear_velocity和angular_velocity的数据。

1
2
3
4
5
6
$ rostopic echo /turtle1/pose
x:5.35244464874
y:5.544444561
theta:0.0
linear_velocity:0.0
angular_velocity:0.0

rostopic info [话题名称]:显示指定话题的信息

在以下示例中,用户可以看到/turtle1/pose话题使用turtlesim/Pose消息类型,发布到/turtlesim节点,并且没有实际订阅的话题。

1
2
3
4
$ rostopic info /turtle1/pose
Type:turtlesim/Pose
Publishers:*/turtlesim(http://192.168.1.100:42443/)
Subscribers:None

rostopic pub [话题名称] [消息类型] [参数]:使用指定的话题名称发布消息

以下是使用/turtle1/cmd_vel话题名称发布类型为geometry_msgs/Twist的消息的示例

1
2
$ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- ‘[2.0, 0.0 ,0.0 ]’ ‘[0.0 ,0.0 ,1.8 ]’
publishing and latching message for 3 . 0 seconds

每个选项的描述如下:

ROS catkin命令

ROS的catkin命令用于使用catkin 构建系统来构建功能包。

catkin_create_pkg:自动生成功能包

catkin _ create _ pkg [功能包名称] [依赖性功能包 1 ] [依赖性功能包 2 ] …
catkin_create_pkg是创建一个包含CMakeLists.txt和package.xml文件的空功能包的命令。以下例子显示了使用catkin_create_pkg命令创建一个依赖于roscpp和std_msgs的my_package功能包。

1
$ catkin_create_pkg my_package roscpp std_msgs

catkin_make:基于catkin 构建系统的构建

catkin_make [选项]
catkin_make是构建用户创建的功能包或构建下载的功能包的命令。以下示例是构建~/catkin_ws/src目录中所有功能包的示例。

1
2
$ cd ~/catkin_ws
$ catkin_make

如果要只构建一部分功能包,而不是全部功能包,请使用“–pkg [包名]”选项来运行,如下所示:

1
$ catkin_make -- pkg my_package