rosbag 的常用命令

2023-11-01 11:15
文章标签 常用命令 rosbag

本文主要是介绍rosbag 的常用命令,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

      • 1、录制数据包
      • 2、查看数据包信息
      • 3、数据包播放
      • 4、数据包过滤
      • 5、切割数据包

1、录制数据包

// cd到目标文件夹下
rosbag record –a					// 录制所有topic的数据包,不光包括正在播的bag里有的
rosbag record /topic_a /topic_2			// 录制topic_1/topic_2的数据包
rosbag record -O bag_name.bag /topic1	// 录制topic_1,指定生成数据包的名字,否则都是 日期.bag
rosbag record -o bag_name.bag /topic1	// 录制topic_1,指定生成数据包的名字,格式会自动变成 bag_name_时间.bag
rosbag record -a -o bag_name.bag		// 录制所有topic// 录包时间没对齐的话,需要设置rosparam set /use_sim_time true
// 然后播包时加 --clockrosbag record --duration=30	/topic	// 录制topic,录制时长30s;还可设置为--duration=5m 或 --duration=2h
rosbag record --split --duration=30	/topic_1 /topic_2	// 录制topic_1和2,录制持续30s后分文件存储
rosbag record --split --duration=5m	/topic_1 /topic_2	// 录制topic_1和2,录制持续5m后分文件存储
rosbag record --split --duration=2h	/topic_1 /topic_2	// 录制topic_1和2,录制持续2h后分文件存储
rosbag record --split --size=1024	/topic	// 录制topic,录制大小1024M后分文件存储
rosbag record -l 1000	/topic				// 录制topic满1000个消息

2、查看数据包信息

rosbag info xx.bag 	 // 查看数据包信息

3、数据包播放

rosbag play xx.bag  					// 播放xx数据包
rosbag play *.bag	 					// 播放目录下所有数据包
rosbag play bag1 bag2					// 播放多个bag包
rosbag play --bags=bag1 bag2			// 同上,播放多个bag包rosbag play –s 10 –r 0.7 –l *.bag		// -s指定从几秒开始,-r指定播放速度,-l循环播放
rosbag play –s 10 –r 0.7 -u 60 *.bag	// 从10s开始0.7倍速播包,持续播60srosbag play --pause *.bag				// 以暂停方式启动
// 等播放到topic_1、topic_2相关话题的时候暂停播放,等待命令行输入空格时继续播放
rosbag play xxx.bag --pause-topics /topic_1 /topic_2rosparam set /use_sim_time time			// 设置使用仿真时间,播包或者录包时间戳对不上时
rosbag play xx.bag --clock				// 系统以msg对应的仿真时间运行,而不是wall clock time(UTC);避免在做msg的tf转换时把更早时间的msg丢掉rosbag play xxx.bag --topic /topic_name1 /topic_name2	// 只播放特定topic1/2
rosbag play xxx.bag --topics /topic_1 /topic_2			// 同上

4、数据包过滤

  • 根据时间过滤
    rosbag filter命令可以用python指令来过滤包,能够使用的内置变量为topic, m , t.secs和t.nsecs。按时间过滤的时候,需要注意的是应该用UNIX时间,这个时间可以用rosbag info来确定。
rosbag filter input.bag output.bag "t.to_sec() <= 1284703931.86"rosbag filter input.bag output.bag "t.to_sec() <= 1284703931.86 and t.to_sec()>=1284703935.86"	// 如果需要截取一段时间,可以用and来连接:
  • 按话题过滤
rosbag filter input.bag output.bag "topic == '/tf'"		// 过滤单个topic// 只保留/velodyne_point_cloud和/visensor/imu,使用or和==:
rosbag filter input.bag output.bag "topic == '/velodyne_point_cloud' or topic =='/visensor/imu' "// 过滤两个topic:/velodyne_point_cloud和/visensor/imu,使用and和!=:
rosbag filter input.bag output.bag "topic != '/velodyne_point_cloud' and topic !='/visensor/imu' "

5、切割数据包

  • 根据topic进行切割/过滤
// 根据topic过滤/切割
rosbag filter my.bag only-tf.bag "topic == '\tf'"// 根据多个topics进行过滤/切割
rosbag filter my.bag output.bag "topic == '/velodyne_point_cloud' or topic =='/visensor/imu'"
  • 根据时间段进行切割/过滤
// 根据时间过滤/切割
rosbag filter my.bag output.bag "t.to_sec() <= 1659100376.473893"// 根据某个时间段过滤/切割
rosbag filter my.bag output.bag "t.to_sec() >= 1659100335.039506 and t.to_sec() <= 1659100376.473893"
  • 切割/过滤某个时间段内的多个topics
// 根据topic和时间过滤/切割
rosbag filter my.bag output.bag "topic == '/odometry/gps' and t.to_sec() <= 1659100376.473893"// 过滤/切割某个时间段内的多个topics
rosbag filter my.bag output.bag "(topic == '/velodyne_point_cloud' or topic =='/visensor/imu')and (t.to_sec() >= 1659100335.039506 and t.to_sec() <= 1659100376.473893)"

这篇关于rosbag 的常用命令的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/322572

相关文章

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令

maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令 在日常的工作中由于各种原因,会出现这样一种情况,某些项目并没有打包至mvnrepository。如果采用原始直接打包放到lib目录的方式进行处理,便对项目的管理带来一些不必要的麻烦。例如版本升级后需要重新打包并,替换原有jar包等等一些额外的工作量和麻烦。为了避免这些不必要的麻烦,通常我们

ROS - C++实现RosBag包回放/提取

文章目录 1. 回放原理2. 回放/提取 多个话题3. 回放/提取数据包,并实时发布 1. 回放原理 #include <ros/ros.h>#include <rosbag/bag.h>#include <std_msgs/String.h>int main(int argc, char** argv){// 初始化ROS节点ros::init(argc, argv,

ROS - C++实现RosBag包录制

文章目录 1. 录制原理2. 录制多个话题3. 订阅ROS消息,实时录制 1. 录制原理 #include <ros/ros.h>#include <rosbag/bag.h>#include <std_msgs/String.h>int main(int argc, char** argv){// 初始化ROS节点ros::init(argc, argv, "reco

linux运维排查常用命令(开发专享)

cd: 进入到某个目录下 cd hikvision ll:详细展示该目录下有的文件 ll su 用户名:切换用户名 例子: su root 根据字符串在文件中查找信息:Grep –a –i 字符串 文件名 例子: grep -a -i 'indexCode=4a28a0dfe0244c0cbabcd9b2c3b60327' nms.nmsweb.debug.log cat 文

Linux概述、远程连接、常用命令

Linux介绍 Linux操作系统介绍 Linux操作系统的特点 开源免费安全稳定可移植性好 Linux可以安装在不同的设备上 高性能 Linux的使用领域 应用服务器数据库服务器网络服务器虚拟化云计算嵌入式领域个人PC移动手机 Linux文件系统和目录 /:根目录,唯一/home:用户目录/root:系统管理员root目录/usr:应用程序/etc:系统配置boot:内核文件/tm

maven学习笔记【常用命令】

mvn构建web项目 mvn archetype:create -DgroupId=com.mycompany.webapp -DartifactId=myweb -DarchetypeArtifactId=maven-archetype-webapp mvn依赖管理 例:加入servlet-api.jar   <dependency>       <groupId>javax.servl

cmd 常用命令总结

尽管图形用户界面已成为常态,但命令行工具仍然在许多场景下不可或缺。下面是 Windows 命令提示符(CMD)中的一些常用命令及其用法。 1. 导航命令 cd:改变当前工作目录。 cd /?:获取 cd 命令的帮助信息。 cd \:回到当前驱动器的根目录。 cd ..:返回上一级目录。 cd /d E:\software:切换到另一个驱动器并进入指定的目录。 D::切换到 D 驱动器

【linux 常用命令】查看gpu、显卡常用命令

1.查看显卡基本信息 lspci | grep -i nvidia 2.查看显卡驱动版本 nvidia-smi -a 3.查看gpu使用情况 nvidia-smi (spam) [dongli@dt-gpu-1 train]$ nvidia-smi Fri Sep 27 16:42:33 2019 +----------------------------------------

【linux 常用命令】常用命令整理

linux的命令操作1、日常操作命令 **查看当前所在的工作目录pwd**查看当前系统的时间 date**查看有谁在线(哪些人登陆到了服务器)who 查看当前在线last 查看最近的登陆历史记录2、文件系统操作**ls / 查看根目录下的子节点(文件夹和文件)信息ls -al -a是显示隐藏文件 -l是以更详细的列表形式显示**切换目录cd /home**创建文件