ROS 数据可以以Bag形式也可以存储在Parameter Service上

ROS Parameter:

我们在实现一个机器人的时候,我们一定会遇到需要存储很多参数的情况,当这些参数不断增加的时候我们可能会需要将这些参数存储在文件中,在某些时刻还需要在多个程序间共享这些参数,ROS 为了满足这种需求提供了一个参数服务器,它是一个共享的服务器,所有的ROS节点都可以共享这些参数,任何一个节点都可以对参数服务器上的参数进行增删查改操作。参数服务器可以存储各种类型的数据,并且还可以设置访问的范围是否只有当前的节点可以访问或者全部节点都可以访问。

  • 32-bit integers
  • Booleans
  • strings
  • doubles
  • iso8601 dates
  • lists
  • base64-encoded binary data

我们还可以存储字典参数:

/camera/name:’nikon’ #string type
/camera/fps : 30 #integer
/camera/exposure:1.2 #float
/camera/active : true #boolean

和参数服务器相关的命令:

$ rosparam set parameter value :这个命令用于将某个参数设置为某个值
$ rosparam get parameter_name : 获得某个参数的值
$ rosparam load [YAML file] :YAML文件中加载参数到参数服务器
$ rosparam dump [YAML file] : 这个命令将会将参数服务器中的数据存储到YAML文件
$ rosparam delete [parameter_name] : 将会从参数服务器中删除某个参数
$ rosparam list : 将会列出所有的参数名


ROS Bags:

ROS bag用于存储来自topic和service的消息数据,它是通过rosbag命令创建的,它会订阅一个或者更多的topic并且以它接收到的方式存储起来。
下面是rosbag的常用方法:

$rosbag	record  [topic_1] -o [bag_name]: 这个命令将会将指定的topic记录到一个bag文件中,我们还可以使用-a作为参数记录所有的topic

$rosbag play [bag_name] :这个会回放存在的bag文件.

下面推荐一个很好用的bag回放GUI工具:
http://wiki.ros.org/rqt

Contents