In case anyone else comes on this thread --
https://gitlab.com/voxl-public/voxl-sdk/core-libs/libmodal-pipe/-/blob/master/library/include/modal_pipe_interfaces.h#L848 defines the VIO messages within MPA.
float T_imu_wrt_vio; contains the translation in x, y, z and is what is printed in the overlay within VOXL Portal.
- Positive X = Forward
- Positive Y = Left
- Positive Z = Increase in Altitude
If you then look in the Odometry messages used by PX4 or run
voxl-inspect-pose these coordinates will be in FRD/NED frame of reference which is:
Positive X = Forward
Positive Y = Right
Positive Z = Decrease Altitude
(I think I've got this right -- hopefully someone from Modal can confirm)
https://gitlab.com/voxl-public/voxl-sdk/services/voxl-vision-px4/-/blob/master/src/vio_manager.c#L350-393 walks through the publication of the odometry MAVLINK message to PX4 and rotation into appropriate frame for processing.
TLDR; Most of my issues for this platform were solved by disabling the QVIO server, keeping
voxl-vision-px4 running, and dialing in PID for PX4 without any external inputs from vision or GPS. Once tuned, you can focus on calibrating cameras and
etc/modalai/extrinsics.conf to ensure consistency in VIO inputs.
Shoutout to @wilkinsaf for tips and tricks on tuning.