先学习一下基础操作
bag包的录制(创建一个bag文件)
以小海龟为例,首先我们要明白bag包中记录了ROS系统运行时的***话题***数据
首先,执行以下命令:
$ roscore
$ rosrun turtlesim turtlesim_node
$ rosrun turtlesim turtle_teleop_key
这时按下键盘上的方向键应该会让turtle运动起来
现在让我们录制所有发布的话题
首先让我们看看目前有哪些话题:
$ rostopic list -v
/turtle1/command_velocity话题是 teleop_turtle 节点所发布的命令消息并作为 turtlesim 节点的输入。
/turtle1/color_sensor和/turtle1/pose是 turtlesim 节点发布出来的话题消息
开始录制:
打开新的终端,输入
$ mkdir ~/savebag //创建新的文件夹
$ cd ~/savebag //到这个文件夹下
$ rosbag record -a //录制 -a表示录制了所有节点发布的话题
录制完成后 Ctrl-C 退出该命令,检查看 ~/savebag 目录,会有一个以年份、日期和时间命名并以 .bag 作为后缀的文件。、
此处有一个需要注意的点,小海龟是一个很经典的小程序,他运行的节点数量是比较少的。当我们运行一些比较复杂的系统时我们可以选择只录取一部分话题,即不使用-a。
$ rosbag record -O setbagname /turtle1/cmd_vel /turtle1/pose
上述命令中的 -0 参数告诉rosbag record将数据记录保存到名为setbagname.bag的文件中,同时后面的话题参数告诉rosbag record只能录制这两个指定的话题cmd_vel和pose
回放bag包内容
rosbag play xxxxx.bag //你想回放的bag包的名字
此处如果你只是想查看bag包里的内容,并不需要回放可以这样做(bag 文件中所包含话题的名称、类型和消息数量)
在 bag 文件所在的目录下执行以下命令:
rosbag info xxxxxx.bag //你想查看的bag包的名字
尝试用ZED2录制bag包
命令行
cd ~/catkin_ws
source ./devel/setup.bash
roscore
//另开一个命令行
cd ~/catkin_ws
source ./devel/setup.bash //不知道为什么不执行这一步就无法找到zed.launch
roslaunch zed_wrapper zed.launch
//另开一个命令行
cd ~/catkin_ws/src/ORB_SLAM2
rosrun ORB_SLAM2 zed_Stereo_rect Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml false
//另开一个命令行
rosbag record /zed/zed_node/left/image_rect_color /zed/zed_node/right/image_rect_color /ORB_SLAM/pose
录制完成回放
命令行
cd ~/catkin_ws
source ./devel/setup.bash
roscore
//另开一个命令行
cd ~/catkin_ws/src/ORB_SLAM2
rosrun ORB_SLAM2 Stereo Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml false
//另开一个命令行
cd ~/rosbag
rosbag play --pause *****.bag /zed/zed_node/left/image_rect_color:=/camera/left/image_raw /zed/zed_node/right/image_rect_color:=/camera/right/image_raw