Hi, in some instances of my recording using the new svo2, there is imu being recorded.
However, there are some instances where imu failed to get recorded, any reason what might trigger it. I am using the same settings to record the files.
I am running the zed_ros2_wrapper node and triggering the svo record service after 5sec delay.
./ZED_SVO_Editor -inf 20251228_085427.svo2 -inf option detected SVO Infos : SVO v 2 Image Size : [ 1280 x 720 ] Framerate : 30 Number of Frames : 12510 ZED Serial Number : 34562445 Compression mode : " H265 Lossless (GPU) compression" Camera model : “ZED 2i” Camera Fw version : 1523 ZED SDK version that generated this file : 5.1.2
./ZED_SVO_Editor -inf 20251228_082257.svo2 [2026-01-14 11:42:54.133] [WARNING] [SVOGen2Reader.cpp:101] [Init] No inertial data detected in this SVO. This could create unexpected behavior. SVO Infos : SVO v 2 Image Size : [ 1280 x 720 ] Framerate : 30 Number of Frames : 10812 ZED Serial Number : 34562445 Compression mode : " H265 Lossless (GPU) compression" Camera model : “ZED 2i” Camera Fw version : 1523 ZED SDK version that generated this file : 5.1.2
I only tried with ROS 2 and the service call, have not try with ZED Explorer.
Following is a minimal launch file and bash script I used to record the .svo2 file with a ZED2i. The config file remain the same as default zed_ros2_wrapper. I am using ZED sdk v5.1.2 on Jetson Orin Jetpack 6.2.
#!/bin/bash
set -e
source /home/$USER/handheld_mapper/install/setup.bash
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
SVO_OUTPUT_DIR="/home/$USER/Desktop/data/svo_${TIMESTAMP}"
SVO_OUTPUT_PATH="${SVO_OUTPUT_DIR}/zed_recording.svo2"
mkdir -p ${SVO_OUTPUT_DIR}
# Start ROS2 launch file in background
setsid ros2 launch handheld_bringup handheld_svo.launch.py &
ROS_PID=$!
# Wait for nodes to initialize
sleep 5
echo "Waiting for ZED SVO recording service..."
# Wait for service to be available (max 60 seconds)
timeout=120
while [ $timeout -gt 0 ]; do
if ros2 service list | grep -q "/zed_node/start_svo_rec"; then
echo "Service available!"
sleep 1
break
fi
sleep 0.5
timeout=$((timeout-1))
done
if [ $timeout -eq 0 ]; then
echo "ERROR: ZED service did not become available"
zenity --error --text="Error: ZED service not available.\n\nCannot start recording." --width=400
kill -SIGINT -${ROS_PID} 2>/dev/null || true
exit 1
fi
# Start SVO recording
echo "Starting SVO recording to: ${SVO_OUTPUT_PATH}"
ros2 service call /zed_node/start_svo_rec zed_msgs/srv/StartSvoRec \
"{svo_filename: '${SVO_OUTPUT_PATH}', compression_mode: 4, bitrate: 60000}"
if [ $? -eq 0 ]; then
echo "SVO recording started successfully!"
else
echo "Failed to start SVO recording"
zenity --error --text="Error: Failed to start SVO recording.\n\nStopping..." --width=400
kill -SIGINT ${ROSBAG_PID} 2>/dev/null || true
kill -SIGINT -${ROS_PID} 2>/dev/null || true
exit 1
fi
# Show recording dialog
zenity --info --text="Recording in progress.\nZED SVO: ${SVO_OUTPUT_PATH}\n\nClick OK to stop recording." --ok-label="Stop Recording" --width=450
echo "Stopping recording..."
# Stop SVO recording
echo "Stopping SVO recording..."
ros2 service call /zed_node/stop_svo_rec std_srvs/srv/Trigger 2>/dev/null || true
sleep 1
echo "SVO recording stopped"
# Send SIGINT to entire ROS2 launch process group
kill -SIGINT -${ROS_PID} 2>/dev/null || true
# Wait for shutdown
sleep 5
zenity --info --text="Recording stopped successfully!\nZED SVO: ${SVO_OUTPUT_PATH}" --width=450