Newer College
Newer College Dataset (https://ori-drs.github.io/newer-college-dataset/): a handheld rig walked around New College, Oxford. The most-cited handheld LiDAR benchmark, and one of the few that ships a survey-grade prior map, so it serves trajectory and map-quality scoring from the same recording.
Two collections, two different rigs. This profile is written for the 2020 one and says so:
2020 Ouster OS1-64 + RealSense D435i /os1_cloud_node/points, /os1_cloud_node/imu
2021 Ouster OS0-128 + Alphasense different topics entirely
NEWER_COLLEGE_YEAR selects between them. Only 2020 has been exercised against real bags here; the 2021 branch is written from its published topic naming and must be checked against a bag before it is trusted.
THE ONE THING THAT WILL BITE YOU: these 2020 bags carry ROS 1-era frame ids WITH A LEADING SLASH – “/os1_lidar”, “/os1_imu” – while tf2 canonicalizes names on insertion, so the tf tree holds them unslashed and no lookup matched. Every observation was dropped, and until mola_input_rosbag1 08a5754 the warning about that dropped observation segfaulted the process. With that fix in, tf resolves normally and this profile needs no workaround; without it, set the fixed poses below.
The sequences are split across MANY bags (10 for 01_short, 16 for 02_long). mola_lo_bag_slots() caps at 4 because the GUI launch files expose four slots, so the gui wrapper cannot replay a full sequence; the offline CLI takes a comma-separated list of any length and is what the eval uses.
Running it
Online replay with the 3D GUI:
mola-lo-gui-newer-college /path/to/rooster_*.bag [more bags ...] [additional flags]
Offline batch run, writing a trajectory file:
mola-lo-cli-newer-college /path/to/rooster_*.bag [more bags ...] [additional flags]
What this profile sets, and why
These are defaults, not overrides: exporting any of these variables before running the wrapper takes precedence.
NEWER_COLLEGE_YEAR
Default: 2020
MOLA_LIDAR_TOPIC
Default: /os1_cloud_node/points
MOLA_IMU_TOPIC
Default: /os1_cloud_node/imu
MOLA_CAMERA_TOPIC
Default: /camera/infra1/image_rect_raw
MOLA_USE_FIXED_CAMERA_POSE
Default: 1
MOLA_LIDAR_TOPIC
Default: /os_cloud_node/points
NOT yet verified against a bag on this machine – only the 2021 prior maps were downloaded, not its sequences. Check with `–list`-style inspection before trusting these.
MOLA_IMU_TOPIC
Default: /os_cloud_node/imu
NOT yet verified against a bag on this machine – only the 2021 prior maps were downloaded, not its sequences. Check with `–list`-style inspection before trusting these.
MOLA_TF_BASE_LINK
Default: os1_lidar
base_link is the lidar, which is also the frame the published ground truth is expressed in, so the estimate lands in the reference’s own frame and needs no offset composed afterwards.
The extrinsics are left to /tf_static rather than pinned here: these bags
DO carry it (os1_sensor -> os1_lidar, os1_sensor -> os1_imu), and with
the slash-canonicalization fix it resolves. Setting MOLA_USE_FIXED_*_POSE
is the escape hatch for an older mola_input_rosbag1; the values, composed
from that same /tf_static, are:
T_lidar_imu = (-0.006253, 0.011775, -0.028535), yaw 180 deg
The 180 deg matters -- a translation-only version of this is wrong twice
over, the same trap grand-tour had.
MOLA_LO_INITIAL_LOCALIZATION_METHOD
Default: InitLocalization::PitchAndRollFromIMU
Handheld, so the motion is faster and rotates harder than a vehicle’s: lean on the IMU both for deskewing and for the initial pitch/roll, as conslam and hilti2022 do.
MOLA_DESKEW_METHOD
Default: MotionCompensationMethod::IMU
Handheld, so the motion is faster and rotates harder than a vehicle’s: lean on the IMU both for deskewing and for the initial pitch/roll, as conslam and hilti2022 do.
MOLA_LINK_FIRST_POSE_SIGMA
Default: 1e-6
No GNSS: pin the first pose or the smoother’s graph is rank-deficient and it gives up after two scans with “underconstrained variables”.
Under the hood
Online launch file |
|
Offline CLI input |
|
Profile source |