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.
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
- Clone the repository, read its README and install the listed dependencies; build with the provided
build.sh. - Download MH_01_easy in ASL format and note the path.
- Run monocular, stereo and stereo-inertial EuRoC examples (executable names and arguments are in the README); keep the output trajectory file of each.
- 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_scalefor monocular). - 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 xyExperiments
- 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
| Symptom | Likely cause | What to check |
|---|---|---|
| Build fails on Pangolin or OpenCV versions | Dependency version mismatch | Use the versions the README or issues recommend; build in a container |
| Monocular scale wrong | Expected: scale is unobservable | Use --correct_scale in evo and explain why |
| Poor accuracy in stereo-inertial | Settings file missing the right IMU noise | Use 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.