简介:开发者说|对比Rosbag和Cyber Record
下面是由社区开发者——王方浩提供的文章,本文主要介绍 对比Rosbag和Cyber Record。
关于作者
王方浩,社区布道师,武汉大学电子信息专业,先后在华为和阿里从事固件、驱动、操作系统和后台相关的开发工作,目前主要从事L4级别自动驾驶的开发,喜欢研究技术,分析源码和解答问题,目前活跃于Apollo自动驾驶开源社区,平时喜欢做一些户外运动,对自动驾驶的前景担心的同时又充满激情,“莫愁前路无知己,天下谁人不识君”,希望更多的人一起!
本文将主要从以下几个方面来介绍:
Bag格式对比
数据管理
下图分别对Rosbag和Cyber Record的格式进行了详细的介绍。
主要的区别在于Chunk的设计,由于Cyber采用了Protobuf,需要一次读取一整个Chunk,目前默认一个Chunk的大小在200M字节,文件会按照2G大小进行切片,也就是说一个文件最多有10个Chunk,读取一个Chunk的时延分为两部分:
1、读取200M文件到内存的时间,操作系统读取文件的延迟。
2、Protobuf解析200M字节码的时间,这部分有待测试。
也就是说当缓冲区的消息播放时间小于上述延迟的时候,就会出现卡顿,可以通过增加缓冲大小解决。
关于数据的管理和可视化方式。
时序数据库InfluxDB
通过文件块的方式对数据进行整理对查询不是非常友好,因此计划通过时序数据库InfluxDB来对传感器数据进行管理,首先可以提高随机读写性能,其次根据tag和时间戳对数据进行查询也非常方便,例如查询1-3s之内激光雷达的数据,通过时序数据库很快的完成。还有待确认的点在于单条数据的读写性能,因为自动驾驶单条数据的Size可能差距很大,例如一帧激光雷达可能有2M,而一个定位信息可能只有几百个字节,不同字节混合的读写性能不知道是否足够好。
数据可视化
数据可视化比较简单的方式是通过浏览器来查看,也可以安装独立的程序例如通过QT来完成,对于保存文件来说后台采用数据库的优势更加大。
本文部分内容参考链接