睡前ROS学习之ROS 数据存储
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 :这个命令用于将某个参数设置为某个值 |
ROS Bags:
ROS bag用于存储来自topic和service的消息数据,它是通过rosbag命令创建的,它会订阅一个或者更多的topic并且以它接收到的方式存储起来。
下面是rosbag的常用方法:
$rosbag record [topic_1] -o [bag_name]: 这个命令将会将指定的topic记录到一个bag文件中,我们还可以使用-a作为参数记录所有的topic |
下面推荐一个很好用的bag回放GUI工具:
http://wiki.ros.org/rqt