ROS入门教程(五)

本文为原创博客, 转载请注明出处:https://blog.csdn.net/q_z_r_s

机器感知
一个专注于SLAM、三维重建、机器视觉等相关技术文章分享的公众号

参考自:http://wiki.ros.org/ROS/Tutorials
【Beginner Level】ROS入门教程(一)
【Beginner Level】ROS入门教程(二)
【Beginner Level】ROS入门教程(三)
【Beginner Level】ROS入门教程(四)
【Beginner Level】ROS入门教程(五)

【Beginner Level】ROS入门教程(五)

17. 记录并回放数据

本节告诉你如何将来自一个正在运行的ROS系统的数据记录在一个*.bag文件中. 然后在系统中回放数据, 是系统产生和之前相似的动作. 关键词: data, rosbag, record, play, info, bag.

17.1 记录数据(创建一个bag文件)

topic data将被放在bag file.

$ roscore
$ rosrun turtlesim turtlesim_node 
$ rosrun turtlesim turtle_teleop_key
$ mkdir ~/bagfiles
$ cd ~/bagfiles
#记录所有`topic`的`messages`
$ rosbag record -a

在记录完数据之后, 通过Ctrl-C结束rosbag指令

17.2 测试并回放bag文件
#Usage: 查看*.bag文件信息
$ rosbag info <your bagfile>
#回放数据; `-r 2`两倍回放数据
$ rosbag play <your bagfile>

rosbag play默认 2 秒延时播放, 因为如果立即进行数据publish的话, Subscriber来不及立即接收消息, 因为它被告知有Publisher需要一定的时间, 这样才能确保它能接收到完整的消息; 加速回放数据的轨迹会跟之前不一样, 这是因为附加的参数把键盘指令加速到了两倍.

17.3 记录数据的子集
#关闭所有的turtlesim节点, 重新运行程序
$ rosrun turtlesim turtlesim_node 
$ rosrun turtlesim turtle_teleop_key
$ rosbag record -O subset /turtle1/cmd_vel /turtle1/pose
17.4 robag record/play的局限性

从以上实验可以发现, turtle并不能准确的复现原始键盘输入的轨迹, 大致轮廓是相同的, 其原因是, turtlesim跟踪的路径对时序上的小小改变很敏感, 切rosbag准确复制running system的能力也有限. 对诸如turtlesim这类的节点, 微小的时序变化就会改变behavior, 用户不应该期望完美的模仿behavior.

18. roswtf工具

本节开始之前, 请确保roscore 没在运行, 与之前不同, 这里要求roscore不处于运行状态! 可通过如下指令进行测试:

$ ps -ef | grep -i rosmaster
#1.
$ roscd rosmaster
$ roswtf
#2.
$ roscd
$ roswtf
#3.
$ roscd
$ ROS_PACKAGE_PATH=bad:$ROS_PACKAGE_PATH roswtf

roswtf可以发现很多其他类型的问题, 当你被编译或通信问题搞得找不到北时, 试试运行roswtf, 也许它会给你指明方向.

19. ROS wiki 导航

本节讨论 ROS wiki 的布局, 并探讨如何找到你所需要的东西.

你可能感兴趣的:(ROS,ROS入门教程)