Skip to the content
FixTheRobot Explore Robotics / UAV / Module 4 / M4-L1

UAV Systems Engineering · M4-L1 · Hands-on lab (runs on your machine)

Run ORB-SLAM3

Reproduce a published result on a public dataset, then understand what each sensor configuration buys.

  • SLAM and Autonomous Localization
  • Research-level
  • About 150 minutes

What you will do

You will build ORB-SLAM3 following its README, run three sensor configurations on one EuRoC sequence, and evaluate the trajectories. Build details change with the commit and your operating system: follow the README and its issue tracker for the version you use; the steps below give the structure and the checks. The code is GPLv3.

Before you start

  • A Linux machine with the dependencies named in the ORB-SLAM3 README (Pangolin, OpenCV, Eigen3, a C++ compiler), about 10 GB of disk and the EuRoC MAV dataset sequence MH_01_easy (ASL format) from the ETH dataset page.
  • Lessons M4-T2, M4-T3 and the lab “Analyze trajectory drift”.

Steps

  1. Clone the repository, read its README and install the listed dependencies; build with the provided build.sh.
  2. Download MH_01_easy in ASL format and note the path.
  3. Run monocular, stereo and stereo-inertial EuRoC examples (executable names and arguments are in the README); keep the output trajectory file of each.
  4. Convert the trajectories to TUM format if needed (the ORB-SLAM3 outputs are in TUM-like format for the keyframe and full trajectories), then evaluate each with evo_ape tum gt.txt est.txt -va --align (add --correct_scale for monocular).
  5. Record ATE, whether the system lost tracking (watch the viewer output) and the average frame processing time.
# structure of the commands (check the README of your commit for exact paths and arguments)
./Examples/Monocular/mono_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml PATH/MH01 ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt dataset-MH01_mono
./Examples/Stereo-Inertial/stereo_inertial_euroc ./Vocabulary/ORBvoc.txt ./Examples/Stereo-Inertial/EuRoC.yaml PATH/MH01 ./Examples/Stereo-Inertial/EuRoC_TimeStamps/MH01.txt dataset-MH01_stereoi
evo_ape tum MH01_gt_tum.txt f_dataset-MH01_stereoi.txt -va --align --plot --plot_mode xy
Typical invocation; verify against your commit.

Experiments

  • Disable the IMU on the stereo run (use the stereo example) and compare drift.
  • Halve the image resolution and the feature count in the settings file and record accuracy and speed.
  • Run on a harder sequence (MH_04_difficult) and note where tracking is lost.

How to know it worked

  • Three trajectories, each with an ATE number and the alignment option stated.
  • A table of ATE and processing time per configuration.
  • A statement of where tracking failed and why, from the viewer and the feature counts.

If it does not work

Troubleshooting
SymptomLikely causeWhat to check
Build fails on Pangolin or OpenCV versionsDependency version mismatchUse the versions the README or issues recommend; build in a container
Monocular scale wrongExpected: scale is unobservableUse --correct_scale in evo and explain why
Poor accuracy in stereo-inertialSettings file missing the right IMU noiseUse the EuRoC settings for EuRoC; for your sensor derive noise (lesson M3-T7)

References

Record your progress

Saved in this browser. This lab runs on your own machine, so the site cannot check it for you.