ROS常用命令 & roscpp常用函数

1、查看ROS_PACKAGE_PATH环境变量

$ echo $ROS_PACKAGE_PATH

2、roscore 命令

roscore 命令是你在运行所有ROS程序前首先要运行的命令。

$ roscore

3、rosrun 命令

rosrun 允许你使用包名直接运行一个包内的节点(而不需要知道这个包的路径)。

用法:

$ rosrun [package_name] [node_name]

例如:现在我们可以运行turtlesim包中的 turtlesim_node节点,你会看到打开了一个 turtlesim 窗口:

$ rosrun turtlesim turtlesim_node

再次使用下面的命令,即可运用键盘“前后左右”控制海龟运动:

$ rosrun turtlesim turtle_teleop_key 

4、rqt_graph 命令

rqt_graph 能够创建一个显示当前系统运行情况的动态图形。rqt_graph是rqt程序包中的一部分。如果你没有安装,请通过以下命令来安装:

$ sudo apt-get install ros-indigo-rqt
$ sudo apt-get install ros-indigo-rqt-common-plugins

用法:

rqt_graph

在这里插入图片描述

5、rosnode 命令

rosnode 显示当前运行的ROS节点信息

rosnode list                  获得运行节点列表
rosnode info node-name        获得特定节点的信息
rosnode ping node-name        测试节点是否连通
rosnode kill node-name        终止节点

5.1、rosnode list 子命令

rosnode list能够列出所有运行节点。

rosnode list

得到:

/rosout
/teleop_turtle
/turtlesim

rosout节点是只要运行了ros就会有的一个节点,其余节点与使用rqt_graph命令得到的节点一样。

5.2、rosnode info 子命令

rosnode info命令可以显示特定节点的信息。

$ rosnode info /turtlesim 

得到:

--------------------------------------------------------------------------------
Node [/turtlesim]
Publications: (发布者)
 * /rosout [rosgraph_msgs/Log]
 * /turtle1/color_sensor [turtlesim/Color]
 * /turtle1/pose [turtlesim/Pose]

Subscriptions: (订阅者)
 * /turtle1/cmd_vel [geometry_msgs/Twist]

Services: (服务)
 * /clear
 * /kill
 * /reset
 * /spawn
 * /turtle1/set_pen
 * /turtle1/teleport_absolute
 * /turtle1/teleport_relative
 * /turtlesim/get_loggers
 * /turtlesim/set_logger_level


contacting node http://wyz-vpc:36233/ ...
Pid: 3033
Connections:
 * topic: /rosout
    * to: /rosout
    * direction: outbound (51933 - 127.0.0.1:43790) [24]
    * transport: TCPROS
 * topic: /turtle1/cmd_vel
    * to: /teleop_turtle (http://wyz-vpc:42245/)
    * direction: inbound (53744 - wyz-vpc:40637) [32]
    * transport: TCPROS

6、rostopic 命令

rostopic命令能让你获取有关ROS话题的信息。
可以使用帮助选项查看rostopic的子命令:

$ rostopic -h

$ rostopic --help

可以看到:

Commands:
        rostopic bw     display bandwidth used by topic (显示话题使用的带宽)
        rostopic delay  display delay of topic from timestamp in header (从标题中的时间戳显示话题的延迟)
        rostopic echo   print messages to screen (将消息打印到屏幕)
        rostopic find   find topics by type (按类型查找话题)
        rostopic hz     display publishing rate of topic (显示话题的发布率)  
        rostopic info   print information about active topic (打印有关运行中的话题的信息)
        rostopic list   list active topics (列出运行中的话题)
        rostopic pub    publish data to topic (将数据发布到话题)
        rostopic type   print topic or field type (打印话题或字段类型)

6.1、rostopic list 子命令

rostopic list能够列出所有当前订阅和发布的话题。

6.1.1、查看帮助

可以使用帮助选项查看rostopic的子命令:

$ rostopic list -h

可以看到:

Usage: rostopic list [/namespace]

Options:
  -h, --help            show this help message and exit(显示此帮助消息并退出)
  -b BAGFILE, --bag=BAGFILE
                        list topics in .bag file(列出.bag文件中的主题)
  -v, --verbose         list full details about each topic(列出每个主题的完整详细信息)
  -p                    list only publishers(仅列出发布商)
  -s                    list only subscribers(仅列出订阅者)
  --host                group by host name(按主机名分组)

6.1.2、列出完整信息

rostopic list 中使用 verbose 选项,这会显示出有关所发布和订阅的话题及其类型的详细信息。

$ rostopic list -v

可以得到:

Published topics:
 * /rosout_agg [rosgraph_msgs/Log] 1 publisher
 * /rosout [rosgraph_msgs/Log] 2 publishers
 * /turtle1/pose [turtlesim/Pose] 1 publisher
 * /turtle1/color_sensor [turtlesim/Color] 1 publisher
 * /turtle1/cmd_vel [geometry_msgs/Twist] 1 publisher

Subscribed topics:
 * /rosout [rosgraph_msgs/Log] 1 subscriber
 * /turtle1/cmd_vel [geometry_msgs/Twist] 1 subscriber

6.1.3、仅列出发布者和订阅者:

$ rostopic list

得到:

$ rostopic list
/rosout
/rosout_agg
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose

6.1.4、仅列出发布者:

$ rostopic list -p

得到

/rosout
/rosout_agg
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose

6.1.5、仅列出订阅者

$ rostopic list -s

得到:

/rosout
/turtle1/cmd_vel

6.2、rostopic echo 子命令

rostopic echo 可以显示在某个话题上发布的数据。

$ rostopic echo /turtle1/color_sensor

6.3、rostopic type 子命令

rostopic type 命令用来查看所发布话题的消息类型。

$ rostopic type /turtle1/color_sensor
turtlesim/Color
$ rostopic type /turtle1/cmd_vel
geometry_msgs/Twist

6.4、rostopic pub 子命令

rostopic pub可以把数据发布到当前某个正在广播的话题上。

用法:

rostopic pub [topic] [msg_type] [args]

实例:(打完rostopic pub -1 /turtle1/cmd_vel命令后即可按TAB键补全代码)

rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist "linear:
  x: 1.0
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 1.0" 

以上命令会发送一条消息给turtlesim,告诉它以沿x轴方向以1.0大小的线速度和沿z轴方向以1.0大小的角速度开始运动。

rostopic pub -r 1 /turtle1/cmd_vel geometry_msgs/Twist "linear:
  x: 1.0
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 1.0" 

这条命令以1Hz的频率发布速度命令到速度话题上。

使用 CTRL+C 可以中断发送

6.5、rostopic hz 子命令

rostopic hz命令可以用来查看数据发布的频率。

用法:

rostopic hz [topic]

实例:

rostopic hz /turtle1/pose

得到:

subscribed to [/turtle1/pose]
average rate: 62.486
        min: 0.015s max: 0.017s std dev: 0.00047s window: 60
average rate: 62.476
        min: 0.015s max: 0.018s std dev: 0.00045s window: 122
average rate: 62.514
        min: 0.014s max: 0.020s std dev: 0.00057s window: 185
average rate: 62.506
        min: 0.013s max: 0.020s std dev: 0.00061s window: 248

现在我们可以知道了turtlesim正以大约 60Hz 的频率发布数据给turtle1。我们也可以结合rostopic typerosmsg show命令(这个命令将在后面详细介绍)来获取关于某个话题的更深层次的信息。

rostopic type /turtle1/cmd_vel | rosmsg show

得到:

geometry_msgs/Vector3 linear
  float64 x
  float64 y
  float64 z
geometry_msgs/Vector3 angular
  float64 x
  float64 y
  float64 z

到此我们已经完成了通过rostopic来查看话题相关情况的过程。

7、rosmsg 命令

我们可以使用rosmsg命令来查看消息的详细情况。

rosmsg show geometry_msgs/Twist

得到:

geometry_msgs/Vector3 linear
  float64 x
  float64 y
  float64 z
geometry_msgs/Vector3 angular
  float64 x
  float64 y
  float64 z

8、rossrv 命令

我们可以使用rossrv命令来查看服务的详细情况。

rossrv show std_srvs/Trigger

得到:

---
bool success
string message

其中---上方的request(请求)的内容,---下方的response(响应)的内容,并且允许为空。比如上面得到的srv信息中---上方没有东西,即request内容为空。

9、rosservice 命令

rosservice命令能让你获取有关ROS服务的信息。
可以使用帮助选项查看rosservice的子命令:

rosservice -h

可以看到:

Commands:
	rosservice args	  print service arguments (打印服务参数)
	rosservice call	  call the service with the provided args (使用提供的参数调用服务)
	rosservice find	  find services by service type (按服务类型查找服务)
	rosservice info	  print information about service (打印服务信息)
	rosservice list	  list active services (列出运行中的服务)
	rosservice type	  print service type (打印服务类型)
	rosservice uri	  print service ROSRPC uri (打印服务ROSRPC uri)

9.1、rosservice list 子命令

rosservice list命令能够列出所有当前的服务。

rosservice list

9.2、rosservice call 子命令

rosservice call命令用于请求服务
用法:

rosservice call /service [args...]

实例:(可通过TAB键补全坐标代码)

$ rosservice call /spawn "x: 2.0
y: 2.0
theta: 0.0
name: 'turtle2'" 

以上命令会生成一个小海龟,名字为:turtle2,坐标[2,2],左下角为原点。
在这里插入图片描述
之后可通过rostopic命令控制turtle2运动了。

10、rosbag 命令

10.1、rosbag record 子命令

rosbag record 命令将ROS系统运行过程中的数据录制到一个.bag文件中,然后可以通过回放数据来重现相似的运行过程。退出录制时按Ctrl+C退出该命令,你应该会看到在当前目录下一个以.bag作为后缀的文件。

用法:

rosbag record TOPIC1 [TOPIC2 TOPIC3 ...]

实例:

rosbag record -a -O cmd_record

其中
-a 选项,表示录制所有发布的话题
-O cmd_record 选项,表示将bag文件命名为cmd_record.bag。

10.2、rosbag play 子命令

rosbag play命令用于回放一个或多个包文件的内容。

用法:

rosbag play BAGFILE1 [BAGFILE2 BAGFILE3 ...]
rosbag play -r 2 (以某一频率发布消息,即控制bag包播放的频率))
rosbag play -s 2 (从某一时间节点开始播放发布消息)

实例:

rosbag play cmd_record.bag

10.3、rosbag info 子命令

rosbag info命令用于查看bag文件信息,可以查看到版本、时长、录制时间、文件大小、录制的话题和类型等信息。

用法:

rosbag info [options] BAGFILE1 [BAGFILE2 BAGFILE3 ...]

实例:

rosbag info cmd_record.bag

10.4、录制数据子集

rosbag record命令支持只录制某些特别指定的话题到单个bag文件中,这样就允许用户只录制他们感兴趣的话题。

在bag文件所在目录下执行以下命令:

rosbag record -O 2018-12.bag /turtle1/command_velocity /turtle1/pose

上述命令中的-O参数表示将数据记录保存到名为 2018-12.bag 的文件中,同时后面的话题参数表示只能录制这两个指定的话题。

可以使用rosbag info 2018-12.bag命令查看录制时指定话题的信息。

也可以只指定bag包的文件名,录制所有数据:
$ rosbag record -a -O 2018-12.bag
录取指定topic,并且每五分钟分割一次, -e为正则匹配:
$ rosbag record --split --duration=5m -e /radar/back_targets /vehicle_speed /imu_data

11、rosls 命令

rosls命令是rosbash命令集中的一部分,它允许你直接按软件包的名称而不是绝对路径执行ls命令(罗列目录).

用法:

rosls [ 本地包名称[/子目录] ]

12、roscd 命令

roscd命令是rosbash命令集中的一部分,它允许你直接切换(cd)工作目录到某个软件包或者软件包集当中。

用法:

roscd [ 本地包名称[/子目录] ]

示例:

$ roscd roscpp
$ pwd
/opt/ros/kinetic/share/roscpp

13、roscd log 命令

使用roscd log命令可以切换到ROS保存日记文件的目录下。需要注意的是,如果你没有执行过任何ROS程序,系统会报错说该目录不存在。

如果你已经运行过ROS程序,那么可以尝试:

roscd log

14、rosed 命令

rosed 命令是 rosbash 的一部分。利用它可以直接通过package名来获取到待编辑的文件而无需指定该文件的存储路径了。

用法:

rosed [package_name] [filename]

例子:

rosed roscpp Logger.msg

这个实例展示了如何编辑roscpp package里的Logger.msg文件。

15、rospack 命令

rospack命令允许你获取软件包的有关信息

用法:

rospack <command> [options] [package]

实例:

要找到一个软件包的目录,使用 rospack find命令:
$ rospack find roscpp
/opt/ros/kinetic/share/roscpp

显示出当前的包信息:
$ rospack list

显示当前包的一级依赖:
$ rospack depends1 beginner_tutorials

显示当前包的所有依赖:
$ rospack depends beginner_tutorials

PS:rospack list命令的另一中奇妙用法:
有时候自定义了功能包后就算已经修改过环境变量,并且可以找到功能包对应的可执行文件,然而执行rosrun命令时也无法自动补全功能包名称,这个时候执行一遍rospack list命令即可。(别问我为什么,我也想知道为啥这么玄学)

16、rosparam 命令

rosparam命令用于从ROS参数服务器获取、设置和删除参数。
可以使用帮助选项查看rosparam的子命令:

$ rosparam -h

可以看到:

Commands:
	rosparam set       set parameter (设置参数)
	rosparam get       get parameter (获得参数值)
	rosparam load      load parameters from file (从文件中加载参数到参数服务器)
	rosparam dump      dump parameters to file (将参数服务器中的参数写入到文件)
	rosparam delete    delete parameter (删除参数)
	rosparam list      list parameter names (列出参数服务器中的参数)

16.1、rosparam list 子命令

实例:
在运行turtlesim_node节点后,输入以下命令就可以获取到节点参数信息:
在这里插入图片描述

16.2、rosparam get 子命令

rosparam get子命令用于获取参数的值。
用法:

rosparam get [options] parameter

其中parameter应为使用rosparam list命令得到的参数,如上图所示。

16.3、rosparam set 子命令

rosparam set子命令用于设置参数。
用法:

rosparam set [options] parameter value

其中parameter应为使用rosparam list命令得到的参数
value为设置后的值。

下面为修改海龟仿真器的背景颜色:
在这里插入图片描述

16.4、rosparam dump 子命令

rosparam dump 子命令用于将参数服务器中的参数写入到文件。
用法:

rosparam dump [options] filename [namespace]

实例:
使用rosparam dump param.yaml命令可以在终端所处路径创建一个名为param.yaml的文件:

在这里插入图片描述

在ROS系统中,参数读写一般通过 xml 或者 yaml 格式的文件,其中 yaml 用得比较多。这是一种可读性高,轻量级的标记语言,简单好用。

16.5、rosparam load 子命令

rosparam load子命令用于从文件中加载参数到参数服务器。
用法:

rosparam load [options] filename [namespace]

实例:
使用rosparam dump param.yaml命令创建一个名为param.yaml的文件,然后打开文件修改其中的参数后保存,然后使用rosparam load param.yaml命令加载参数:
在这里插入图片描述

17、创建ROS工作空间

mkdir catkin_ws
cd catkin_ws/
mkdir src
cd src/
catkin_init_workspace

以上创建了src文件,放置功能包源码,并在src文件夹中创建了一个 CMakeLists.txt 的文件,目的是告诉系统,这个是ROS的工作空间。

18、编译ROS工作空间

所有编译工作都要在catkin_ws文件夹下编译,编译完成后,会发现catkin_ws中多了两个文件 build 和 devel。

cd ~/catkin_ws/
catkin_make

要想文件夹中包含install文件,则需要再输入$ catkin_make install命令。

19、设置环境变量

source devel/setup.bash

也可以将整个ROS系统的环境变量设置到bash脚本中,现在我们需要把我们工作空间的环境变量设置到bash中,并使配置在当前的终端生效:

echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

可使用以下命令查看环境变量:

$ echo $ROS_PACKAGE_PATH

20、创建功能包

需要在src文件夹中创建:

用法:

catkin_create_pkg <package_name> [depend1] [depend2] [depend3]

其中,package_name为功能包名称,depend1、2、3为依赖项

实例:

catkin_create_pkg test_pkg std_msgs rospy roscpp

test_pkg:功能包名称
std_msgs:包含常见消息类型
roscpp:使用C++实现ROS各种功能
rospy:使用python实现ROS各种功能

21、编译功能包

 cd ~/catkin_ws
 catkin_make
 source ~/catkin_ws/devel//setup.bash

22、roscpp 中常用的函数、类以及命名空间

roscpp 中常用的函数、类以及命名空间看这里

  • 4
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值