ntu-viral
NTU-VIRAL (https://ntu-aris.github.io/ntu_viral_dataset/): a drone with two Ouster OS1-16 (one horizontal, one vertical), a VectorNav VN100 IMU, cameras and UWB, one ROS 1 bag per sequence (eee_01..spms_03).
There is no /tf in the bags, so every sensor pose is fixed here, from the
dataset's own calibration (lidar_horz.yaml, lidar_vert.yaml, imu_v100.yaml).
Their "Body" frame is the IMU's, and it points down (z-down), so base_link
here is that body frame turned upside down, a 180 deg pitch:
horizontal LiDAR T_Body_Lidar = [I | (-0.050, 0, 0.055)]
=> in base_link: 0.050 0 -0.055, pitch 180
IMU T_Body_Imu = I => in base_link: 0 0 0, pitch 180
Only the horizontal LiDAR is used. The vertical one would sit at 0.550 0.030 -0.050, roll -90 in base_link, but the offline CLI gives every LiDAR the same fixed pose.
The ground truth is the position of a Leica prism, not a pose: to score against it, move the estimate to the prism, which is at (0.293656, -0.012288, 0.273095) in this base_link (T_Body_Prism in leica_prism.yaml, turned the same way).
Running it
Online replay with the 3D GUI:
mola-lo-gui-ntu-viral /path/to/eee_01.bag [additional flags]
Offline batch run, writing a trajectory file:
mola-lo-cli-ntu-viral /path/to/eee_01.bag [additional flags]
What this profile sets, and why
These are defaults, not overrides: exporting any of these variables before running the wrapper takes precedence.
MOLA_LIDAR_TOPIC
Default: /os1_cloud_node1/points
MOLA_IMU_TOPIC
Default: /imu/imu
The IMU helps a little (eee_03 / sbs_01 prism ATE: 119 / 90 mm without it, 112 / 84 mm with it); IMU deskew on top did not improve further.
MOLA_TF_BASE_LINK
Default: body
The IMU helps a little (eee_03 / sbs_01 prism ATE: 119 / 90 mm without it, 112 / 84 mm with it); IMU deskew on top did not improve further.
MOLA_CAMERA_TOPIC
Default: /left/image_raw
MOLA_USE_FIXED_CAMERA_POSE
Default: 1
MOLA_USE_FIXED_IMU_POSE
Default: 1
MOLA_USE_FIXED_LIDAR_POSE
Default: 1
LIDAR_POSE_X
Default: 0.050
LIDAR_POSE_Y
Default: 0.000
LIDAR_POSE_Z
Default: -0.055
LIDAR_POSE_YAW
Default: 0
LIDAR_POSE_PITCH
Default: 180
LIDAR_POSE_ROLL
Default: 0
IMU_POSE_X
Default: 0}" ; : "${IMU_POSE_Y:=0}" ; : "${IMU_POSE_Z:=0
IMU_POSE_YAW
Default: 0}" ; : "${IMU_POSE_PITCH:=180}" ; : "${IMU_POSE_ROLL:=0
MOLA_MINIMUM_RANGE_FILTER_L_INFINITY
Default: false
A small drone close to walls: a spherical minimum-range filter, as in the hand-held profiles.
Under the hood
Online launch file |
|
Offline CLI input |
|
Profile source |