ROS可以通过在shell环境中输入命令来进行文件系统的使用、源代码编辑、构建、调试和功能包管理等。为了正确使用ROS,除了基本的Linux命令之外,还需要熟悉ROS专用命令。为了熟练掌握ROS的各种命令,我们对每个命令的功能进行了简单的描述.
文件管理工具
程序代码散落在许多ROS包中。使用Linux内置命令行工具(如ls和cd)来进行查找和导航可能非常繁琐,因此ROS提供了专门的命令工具来简化这些操作
- rospack 
 rospack允许你获取软件包的有关信息- rospack find [ package_name ] 
- roscd 
 roscd是rosbash命令集的一部分,它允许你直接切换目录(cd)到某个软件包或者软件包集当中- roscd [ locationname[ /subdir ] ] 
roscd log将带您进入存储ROS日志文件的目录。需要注意的是,如果你没有执行过任何ROS程序,系统会报错说该目录不存在
roscd log
- rosls
 它允许你直接按软件包的名称执行 ls 命令(而不必输入绝对路径)rosls [ locationname[ /subdir ] ] 
ROS节点
节点是一个可执行文件,它可以通过ROS来与其他节点进行通信
- roscore 
 roscore是你在运行所有ROS程序前首先要运行的命令- roscore 
- rosnode 
 打开一个新终端,可以使用rosnode看看roscore运行时干了些什么…… 记得要保持以前的终端开着,比如打开一个新的标签页,或者最小化之前的窗口
 rosnode list命令会列出这些活动的节点- rosnode list 
rosnode info命令返回的是某个指定节点的信息
rosout在ROS中相当于stdout/stderr(标准输出/标准错误)    
rosnode info / rosout
- rosrun
 rosrun可以让你用包名直接运行软件包内的节点(而不需要知道包的路径)rosrun [ package_name ] [ node_name ] 
使用另外一个rosnode指令,ping,来测试它是否正常
rosnode ping [ node_name ]
ROS话题
节点可以将消息发布到话题,或通过订阅话题来接收消息
- 使用rqt_graph 
 rqt_graph用动态的图显示了系统中正在发生的事情- rosrun rqt_graph rqt_graph 
- rostopic 
 rostopic命令工具能让你获取ROS话题的信息,你可以使用帮助选项查看可用的rostopic的子命令- rostopic -h 
返回信息如下:
| 1 | rostopic is a command-line tool for printing information about ROS Topics. | 
- rostopic echo 
 rostopic echo可以显示在某个话题上发布的数据- rostopic echo [ topic ] 
- rostopic list 
 rostopic list能够列出当前已被订阅和发布的所有话题- rostopic list -h 
返回信息如下:
| 1 | Usage: rostopic list [/topic] | 
- rostopic pub 
 rostopic pub可以把数据发布到当前某个正在广播的话题上
 rostopic pub [ topic ] [ msg_type] [ args ]
- rostopic hz 
 rostopic hz报告数据发布的速率- rostopic hz [ topic ] 
ROS消息
话题的通信是通过节点间发送ROS消息实现的。为了使发布者(turtle_teleop_key)和订阅者(turtulesim_node)进行通信,发布者和订阅者必须发送和接收相同类型的消息。这意味着话题的类型是由发布在它上面消息的类型决定的。使用rostopic type命令可以查看发布在话题上的消息的类型。
- rostopic type 
 rostopic type命令用来查看所发布话题的消息类型。- rostopic type [ topic ] 
- rosmgs 
 我们可以使用rosmsg查看消息的详细信息- rosmgs show [ msg_type] 
使用rqt软件包
- 使用rqt_plot 
 rqt_plot命令可以在滚动时间图上显示发布到某个话题上的数据。例如我们可以使用rqt_plot命令来绘制正被发布到/turtle1/pose话题上的数据- rosrun rqt_plot rqt_plot 
- 使用rqt_console 
 rqt_console连接到了ROS的日志框架,以显示节点的输出信息- rosrun rqt_console rqt_console 
- 使用rqt_logger_level 
 rqt_logger_level允许我们在节点运行时改变输出信息的详细级别,包括Debug、Info、Warn和Error
ROS服务
服务(Services)是节点之间通讯的另一种方式。服务允许节点发送一个请求(request)并获得一个响应(response)。
rosservice   可以很容易地通过服务附加到ROS客户端/服务器框架上。rosservice有许多可用于服务的命令,如下:  
| 1 | rosservice list 输出活跃服务的信息 | 
- rosservice type
 输出服务类型,返回的服务类型为empty(空),这表明调用这个服务时不需要参数(即,它在发出请求时不发送数据,在接收响应时也不接收数据)rosservice type [ service ] 
再让我们看看服务具有参数的情况。例如查看spawn(产卵)服务的信息:
rosservice type /spawn | rossrv show
使用rosparam
rosparam能让我们在ROS参数服务器(Parameter Server)上存储和操作数据。参数服务器能够存储整型(integer)、浮点(float)、布尔(boolean)、字典(dictionaries)和列表(list)等数据类型。rosparam使用YAML标记语言的语法。一般而言,YAML的表述很自然:1是整型,1.0是浮点型,one是字符串,true是布尔型,[1, 2, 3]是整型组成的列表,{a: b, c: d}是字典。
rosparam有很多命令可以用来操作参数,如下所示:  
| 1 | rosparam set 设置参数 | 
- rosservice get 
 也可以用rosparam get /来显示参数服务器上的所有内容:- rosparam get [param_name] 
 rosparam get /
- rosparam set 
 通过指令修改了参数的值,现在我们需要调用clear服务使得参数的修改能生效:- rosparam set [param_name] [ args ] 
 rosservice call /clear
- rosservice dump / load - rosparam dump [file_name] [namespace] 
 rosparam load [file_name] [namespace]
ROS命令
- 使用roslaunch 
 roslaunch可以用来启动定义在launch(启动)文件中的节点- ~/catkin_ws 
 source devel/setup.bash
 roslaunch [ package ] [ filename.launch ]
- 使用rosed 
 rosed是rosbash套件的一部分。利用它可以直接通过软件包名编辑包中的文件,而无需键入完整路径,- rosed [ package_name ] [ filename ] 
- 使用roscp 
 roscp是一个实用的命令行工具,用于将文件从一个包复制到另一个包- roscp [ package_name] [ file_to_copy_path] [ copy_path] 
- 使用rosbag 
 这里我们只是创建了一个临时目录来记录数据,然后运行 rosbag record 带选项-a,表明所有发布的话题都应该积累在一个bag文件中- mkdir ~/bagfiles 
 cd ~/bagfiles
 rosbag record -a
 fd
使用 rosbag info 查看录制bag文件的详细信息
rosbag info < bagfiles_name >
使用 rosbag paly 回放bag文件以再现系统运行过程
rosbag paly < bagfiles_name >
- 使用roswtf工具
 roswtf will examine your ROS setup, such as your environment variables, and look for configuration issues. If you have a ROS system online, it will look at it and check for any potential issues.简单来说就是一个问题检测工具
创建ROS消息和服务
具体过程请参考如下
msg(消息):msg文件就是文本文件,用于描述ROS消息的字段。它们用于为不同编程语言编写的消息生成源代码。
srv(服务):一个srv文件描述一个服务。它由两部分组成:请求(request)和响应(response)。  
msg文件就是简单的文本文件,每行都有一个字段类型和字段名称。可以使用的类型为:int8, int16, int32, int64 (以及 uint*)、float32, float64、string、time,duration、其他msg文件、variable-length array[] 和 fixed-length array[C]、Header,它含有时间戳和ROS中广泛使用的坐标帧信息
srv文件和msg文件一样,只是它们包含两个部分:请求和响应。这两部分用一条—线隔开。下面是一个srv文件的示例,A和B是请求, Sum是响应:
| 1 | int64 A | 
- 创建msg  roscd beginner_tutorials 
 mkdir msg
 echo “int64 num” > msg/Num.msg
- 使用rosmsg - rosmsg show [message type] 
- 创建svr - roscd [ package_name ] 
 mkdir srv
 roscp rospy_tutorials AddTwoInts.srv srv/AddTwoInts.srv
- 使用rossrv - rossrv show < server_type > 
总结
这里参考了CSDN博主JUNJUN~进行了总结.




 
   
