【ROS】1.1 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时常用的命令。
$ roscd turtlesim
/ opt / ros / kinetic / share / turtlesim
$ roscd your_pkg
~/ catkin_ws / src / your_pkg
rosls: ROS文件列表
rosls [功能包名称]
该命令查看指定的ROS功能包的文件列表。您可以使用roscd命令移动到功能包,然后使用正常的ls命令执行相同的功能,但有时需要立即查看。实际中并不经常使用。
$ 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下的其他程序功能。
$ rosrun turtlesim turtlesim_node
roslaunch:运行多个ROS节点
roslaunch [功能包名称] [ launch 文件名]
roslaunch是运行指定功能包中的一个或多个节点或设置执行选项的命令。使用launch文件启动的方式对于运行多个节点非常有用,这是ROS中常用的执行方法。实例见实验六。
rosclean:检查及删除ROS日志
rosclean [选项]
该命令检查或删除ROS日志文件。在运行roscore时,对所有节点的记录都会写入日志文件,随着时间的推移,需要定期使用rosclean命令删除这些记录。以下是检查日志使用情况的示例。
$ rosclean check
320K ROS node logs
→ 意味着 ROS 日志一共占 320KB
当运行roscore时,如果显示以下警告信息,则意味着日志文件超过1GB,如果用户觉得会让系统不堪重负,请使用rosclean命令将其删除。
WARNING : disk usage in log directory [/ xxx /. ros / log ] is over 1GB .
以下是删除ROS日志存储库(笔者是/home/rt/.ros/log)的所有日志的示例。如果要删除它,请按y按钮将其删除。
$ 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信息命令进行测试之前,需要做好以下准备工作。为确保顺利进行,关闭所有以前运行的终端。然后打开一个新的终端并运行以下命令。
$ roscore
为了运行turtlesim功能包中的turtlesim_node节点,打开一个新的终端并运行以下命令。这将从turtlesim功能包运行turtlesim_node。用户会在一个蓝色的屏幕上看到乌龟。
$ rosrun turtlesim turtlesim_node
运行turtlesim功能包中的turtle_teleop_key节点,打开一个新的终端并运行以下命令。这将在turtlesim功能包中运行turtle_teleop_key。一旦执行,可以在该终端窗口上,用键盘上的方向键控制乌龟。请自己尝试。当您按下方向键时,屏幕上的乌龟会移动,这是一个简单的仿真,但这是将驱动机器人所需的移动速度(m/s)和旋转速度(rad/s)用消息传送的。
$ rosrun turtlesim turtle_teleop_key
rosnode:ROS节点
rosnode list:列出正在运行中的所有节点
这是列出连接到roscore的所有节点的命令。如果已经运行了roscore和之前准备好的节点(turtlesim_node,turtle_teleop_key),则可以看到终端中列出了用于在roscore进行日志记录的rosout,以及teleop_turtle和turtlesim节点。
$ rosnode list
/rosout
/teleop_turtle
/turtlesim
rosnode info [节点名称]:检查指定节点的信息
使用rosnode info命令可以查看指定节点的信息。基本上,用户可以检查发布者、订阅者和服务等。此外,还可以检查关于节点运行URI和话题输入/输出的信息。由于会显示大量信息,因此省略了内容,所以请务必亲自运行。
$ rosnode info / turtlesim
------------------------------------------------
Node [/ turtlesim ] Publications :
* / turtle1 / color _ sensor [ turtlesim / Color ]
rosnode kill [节点名称]:终止指定节点的运行
这是一个终止正在运行的节点的命令。您可以在运行节点的终端窗口中使用[Ctrl+c]直接终止节点,但也可以指定要结束的的节点,如下所示。
$ rosnode kill /turtlesim
killing /turtlesim
killed
如果使用该命令终止了节点,则会在运行该节点的终端窗口上显示如下警告消息,并关闭该节点。
[ WARN ] [ 1499668430 . 215002371 ]: Shutdown request received .
[ WARN ] [ 1499668430 . 215031074 ]: Reason given for shutdown : [ user request ]
rostopic: ROS话题
在运行ROS话题示例之前,请先关闭所有节点。通过在不同的终端窗口中分别运行以下命令来运行turtlesim_node和turtle_teleop_key。
$ roscore
$ rosrun turtlesim turtlesim_node
$ rosrun turtlesim turtle_teleop_key
rostopic list:显示当前正在发送和接收的所有话题的列表。
$ rostopic list
/ rosout
/ rosout_agg
/ turtle1/cmd_vel
/ turtle1/color_sensor
/ turtle1/pose
rostopic echo [话题名称]:实时显示指定话题的消息内容
以下示例实时显示组成/turtle1/pose话题的x、y、theta、linear_velocity和angular_velocity的数据。
$ 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节点,并且没有实际订阅的话题。
$ 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的消息的示例
$ 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功能包。
$ catkin_create_pkg my_package roscpp std_msgs
catkin_make:基于catkin 构建系统的构建
catkin_make [选项]
catkin_make是构建用户创建的功能包或构建下载的功能包的命令。以下示例是构建~/catkin_ws/src目录中所有功能包的示例。
$ cd ~/catkin_ws
$ catkin_make
如果要只构建一部分功能包,而不是全部功能包,请使用“--pkg [包名]”选项来运行,如下所示:
$ catkin_make -- pkg my_package