实现功能:
在录制rosbag包过程中,发现在某一时刻有异常数据,接收到信号后,需要得到当前时刻的前1s数据和后20s数据,所以需要做一个分片功能。
搭建环境:
QT5.12.2+ROS1
需要python脚本:merge.bag
实现思路:
/*1、获取当前文件夹路径*/
fs::path currentPath = fs::current_path();
/*2、每隔一分钟录制一个数据包*/
"rosbag record --split --duration=1m -o " + newestFolder.string() + "/ -e";
/*3、将1.bag分片切开只保留最后10秒的数据到新的_temp.bag中*/
rosbag filter 1.bag _temp.bag \"t.to_sec() >= $(rosbag info -y 1.bag | grep \"end:\" | awk '{print $2}' | awk -F '.' '{print $1}') - 10\" &
/*4、删除除了最新创建的_temp.bag以外的其他bag*/
ls -t *.bag | tail -n +2 | xargs rm
/*5.每隔20分片录制一个rosbag*/
rosbag record -a --split --duration=1m -o " + newestFolder.string() + "/ -e &
/*6.合并当前路径下所有bag*/
python merge_bag.py -v merge.bag *.bag
/*1、获取当前文件夹路径*/
fs::path currentPath = fs::current_path();
/*2、每隔一分钟录制一个数据包*/
"rosbag record --split --duration=1m -o " + newestFolder.string() + "/ -e";
/*3、将1.bag分片切开只保留最后10秒的数据到新的_temp.bag中*/
rosbag filter 1.bag _temp.bag \"t.to_sec() >= $(rosbag info -y 1.bag | grep \"end:\" | awk '{print $2}' | awk -F '.' '{print $1}') - 10\ &
/*4、删除除了最新创建的_temp.bag以外的其他bag*/
ls -t *.bag | tail -n +2 | xargs rm
/*5.每隔20分片录制一个rosbag*/
rosbag record -a --split --duration=1m -o " + newestFolder.string() + "/ -e &
/*6.合并当前路径下所有bag*/
python merge_bag.py -v merge.bag *.bag