38 lines
704 B
Bash
38 lines
704 B
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
if [ "$#" -lt 2 ]; then
|
||
|
|
echo "Usage: merge_ros1.sh OUT.bag IN1.bag [IN2.bag ...]"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
OUT_BAG="$1"
|
||
|
|
shift
|
||
|
|
IN_BAGS=("$@")
|
||
|
|
|
||
|
|
source /opt/ros/noetic/setup.bash
|
||
|
|
|
||
|
|
echo "[ROS] start roscore"
|
||
|
|
roscore >/tmp/roscore.log 2>&1 &
|
||
|
|
ROSCORE_PID=$!
|
||
|
|
sleep 3
|
||
|
|
|
||
|
|
echo "[ROS] start record -> $OUT_BAG"
|
||
|
|
rosbag record -a -x "/rosout.*" -O "$OUT_BAG" >/tmp/rosbag_record.log 2>&1 &
|
||
|
|
REC_PID=$!
|
||
|
|
sleep 2
|
||
|
|
|
||
|
|
for b in "${IN_BAGS[@]}"; do
|
||
|
|
echo "[ROS] play $b"
|
||
|
|
rosbag play "$b" >/tmp/rosbag_play.log 2>&1
|
||
|
|
done
|
||
|
|
|
||
|
|
echo "[ROS] stop record"
|
||
|
|
kill -INT "$REC_PID" || true
|
||
|
|
wait "$REC_PID" || true
|
||
|
|
|
||
|
|
echo "[ROS] stop roscore"
|
||
|
|
kill -INT "$ROSCORE_PID" || true
|
||
|
|
|
||
|
|
echo "[ROS] merge done -> $OUT_BAG"
|