Drobotics Rosbag Management Guide
无人机飞行数据管理指南 · 验证 · 命名 · 提取 · 分析
Rosbag
FAST-LIO
SUPER Planner
PX4
通过 飞行验证
引言
During Drobotics SUPER SLAM flight testing, every flight should create a rosbag record. The rosbag is the main evidence for debugging and validating autonomous behavior.
A good rosbag lets us check:
通过 SLAM odometry
通过 LiDAR registered cloud
通过 PX4 external vision input
通过 PX4 local position
通过 OFFBOARD setpoints
通过 SUPER planner goals
通过 vehicle mode / arming state
通过 SLAM odometry
通过 LiDAR registered cloud
通过 PX4 external vision input
通过 PX4 local position
通过 OFFBOARD setpoints
通过 SUPER planner goals
通过 vehicle mode / arming state
Because many bags are created during testing, it is important to quickly find the correct bag, verify that it is valid, rename it clearly, and extract smaller bags for analysis.
1. Where Rosbags Are Stored
All Drobotics flight rosbags are saved under:
~/rosbags
/home/drobotics/rosbags/indoor_takeoff_20260822_001312
/home/drobotics/rosbags/drobotics_super_auto_0p8m_success_20260822_003000
The latest bag pointer is usually stored here:
~/rosbags/.latest_indoor_hover
cat ~/rosbags/.latest_indoor_hover
2. Find Recent Rosbags
echo "=== RECENT ROSBAGS ==="
find ~/rosbags \
-maxdepth 1 \
-type d \
\( -name 'indoor_takeoff_*' -o -name 'drobotics_super_auto_*' \) \
-printf '%TY-%Tm-%Td %TH:%TM:%TS %p\n' \
| sort \
| tail -15
This shows the latest bag folders by time.
通过 3. Find the Latest Valid Bag
echo "=== LATEST VALID ROSBAG ==="
LATEST_BAG=$(
find ~/rosbags \
-maxdepth 2 \
-name metadata.yaml \
-printf '%T@ %h\n' \
| sort -n \
| tail -1 \
| cut -d' ' -f2-
)
echo "$LATEST_BAG"
du -sh "$LATEST_BAG"
ros2 bag info "$LATEST_BAG"
Expected result:
Files: 通过
Bag size: 通过
Duration: 通过
Messages: 通过
Topic information: 通过
Files: 通过
Bag size: 通过
Duration: 通过
Messages: 通过
Topic information: 通过
If
ros2 bag info works, the bag is valid. 4. Save the Correct Bag as Latest
printf "%s\n" "$LATEST_BAG" > ~/rosbags/.latest_indoor_hover
echo "Saved latest pointer:"
cat ~/rosbags/.latest_indoor_hover
This makes later commands easier because they can use:
cat ~/rosbags/.latest_indoor_hover
5. Rename the Bag Properly
OLD_BAG="$LATEST_BAG"
NEW_BAG=~/rosbags/drobotics_super_auto_0p8m_success_$(date +%Y%m%d_%H%M%S)
mv "$OLD_BAG" "$NEW_BAG"
printf "%s\n" "$NEW_BAG" > ~/rosbags/.latest_indoor_hover
echo "Renamed:"
echo "$NEW_BAG"
ros2 bag info "$NEW_BAG"
Good naming examples:
drobotics_super_auto_0p8m_success_YYYYMMDD_HHMMSS
drobotics_super_auto_slide_success_YYYYMMDD_HHMMSS
drobotics_super_auto_obstacle_blocked_YYYYMMDD_HHMMSS
drobotics_super_auto_hover_only_YYYYMMDD_HHMMSS
drobotics_super_auto_failed_planner_YYYYMMDD_HHMMSS
drobotics_super_auto_bad_altitude_YYYYMMDD_HHMMSS
drobotics_super_auto_0p8m_success_YYYYMMDD_HHMMSS
drobotics_super_auto_slide_success_YYYYMMDD_HHMMSS
drobotics_super_auto_obstacle_blocked_YYYYMMDD_HHMMSS
drobotics_super_auto_hover_only_YYYYMMDD_HHMMSS
drobotics_super_auto_failed_planner_YYYYMMDD_HHMMSS
drobotics_super_auto_bad_altitude_YYYYMMDD_HHMMSS
6. Quick Bag Health Check
source /opt/ros/humble/setup.bash
source ~/slam_ws/install/setup.bash
source ~/super_ws/install/setup.bash
LATEST_BAG=$(
find ~/rosbags \
-maxdepth 2 \
-name metadata.yaml \
-printf '%T@ %h\n' \
| sort -n \
| tail -1 \
| cut -d' ' -f2-
)
printf "%s\n" "$LATEST_BAG" > ~/rosbags/.latest_indoor_hover
echo "=== LATEST VALID BAG ==="
echo "$LATEST_BAG"
du -sh "$LATEST_BAG"
ros2 bag info "$LATEST_BAG"
echo
echo "=== KEY TOPICS ==="
ros2 bag info "$LATEST_BAG" | grep -E \
'/Odometry|/cloud_registered|/mavros/odometry/out|/mavros/local_position/odom|/mavros/setpoint_position/local|/goal_pose|/planning/pos_cmd|/mavros/state'
7. What Each Topic Means
| Topic | Description | Expected Rate |
|---|---|---|
/Odometry | FAST-LIO odometry. Proves LiDAR SLAM is running. | ~10 Hz |
/cloud_registered | FAST-LIO registered point cloud. | ~10 Hz |
/mavros/odometry/out | FAST-LIO-to-MAVROS external vision output. | ~10 Hz |
/mavros/local_position/odom | PX4 local position estimate. | ~30 Hz |
/mavros/setpoint_position/local | OFFBOARD position setpoints. | ~20 Hz |
/goal_pose | SUPER planner goal input. | On publish |
/planning/pos_cmd | SUPER planner trajectory command output. | On publish |
/mavros/state | PX4 state (connected, armed, mode). | ~1-2 Hz |
Expected key topics for a full Drobotics SUPER autonomous test:
/Odometry · /cloud_registered · /mavros/odometry/out · /mavros/local_position/odom · /mavros/setpoint_position/local · /goal_pose · /planning/pos_cmd · /mavros/state
/Odometry · /cloud_registered · /mavros/odometry/out · /mavros/local_position/odom · /mavros/setpoint_position/local · /goal_pose · /planning/pos_cmd · /mavros/state
8. Fix Broken Bag Metadata
source /opt/ros/humble/setup.bash
BAG=/path/to/bag_folder
echo "=== BAG FILES BEFORE REINDEX ==="
ls -lh "$BAG"
echo "=== REINDEX ==="
ros2 bag reindex "$BAG"
echo "=== BAG INFO AFTER REINDEX ==="
ros2 bag info "$BAG"
If reindex works, the bag can be used. If reindex fails, use the previous complete bag.
9. Create a Tiny Bag for Upload
source /opt/ros/humble/setup.bash
source ~/slam_ws/install/setup.bash
source ~/super_ws/install/setup.bash
FULL_BAG=$(cat ~/rosbags/.latest_indoor_hover)
TINY_BAG=~/rosbags/tiny_$(basename "$FULL_BAG")
rm -rf "$TINY_BAG"
cat > /tmp/tiny_bag_filter.yaml <
Copy to Mac:
scp drobotics@172.20.10.3:~/latest_tiny_rosbag_for_codex.tar.gz ~/Desktop/
通过 10. Standard Post-Flight Checklist
After each Drobotics SUPER flight:
1. Stop rosbag cleanly.
2. Find latest valid bag.
3. Run ros2 bag info.
4. Check key topics.
5. Rename the bag clearly.
6. Create tiny bag if analysis is needed.
7. Export point cloud preview if mapping evidence is needed.
1. Stop rosbag cleanly.
2. Find latest valid bag.
3. Run ros2 bag info.
4. Check key topics.
5. Rename the bag clearly.
6. Create tiny bag if analysis is needed.
7. Export point cloud preview if mapping evidence is needed.
source /opt/ros/humble/setup.bash
source ~/slam_ws/install/setup.bash
source ~/super_ws/install/setup.bash
LATEST_BAG=$(
find ~/rosbags \
-maxdepth 2 \
-name metadata.yaml \
-printf '%T@ %h\n' \
| sort -n \
| tail -1 \
| cut -d' ' -f2-
)
printf "%s\n" "$LATEST_BAG" > ~/rosbags/.latest_indoor_hover
echo "=== LATEST VALID BAG ==="
echo "$LATEST_BAG"
du -sh "$LATEST_BAG"
ros2 bag info "$LATEST_BAG"
echo
echo "=== KEY TOPICS ==="
ros2 bag info "$LATEST_BAG" | grep -E \
'/Odometry|/cloud_registered|/mavros/odometry/out|/mavros/local_position/odom|/mavros/setpoint_position/local|/goal_pose|/planning/pos_cmd|/mavros/state'
Conclusion
Correct rosbag naming and validation is essential for Drobotics autonomous flight development.
A properly recorded Drobotics SUPER bag proves:
通过 LiDAR data existed
通过 FAST-LIO odometry worked
通过 PX4 received external vision
通过 SUPER generated trajectory commands
通过 MAVROS sent OFFBOARD setpoints
通过 The drone physically moved
通过 LiDAR data existed
通过 FAST-LIO odometry worked
通过 PX4 received external vision
通过 SUPER generated trajectory commands
通过 MAVROS sent OFFBOARD setpoints
通过 The drone physically moved
The rosbag is the flight's black box. Name it clearly, check it immediately, and preserve the successful runs.
平台:Jetson · ROS2 Humble · FAST-LIO · SUPER · PX4
(c) 卓博泰科技 · Drobotics Rosbag Management Guide
(c) 卓博泰科技 · Drobotics Rosbag Management Guide