Hi team,
I'm setting up a drone with a Voxl Deck, and I've pulled in the default extrinsic file ("factory_m500_flight_deck") to modify for my needs. I was looking to just leave it as-is except for adding a fixed offset to all the "body" measurements, but a few things about it seem a bit off. I'd like to either correct my understanding or help the team correct the file, depending on whether these errors are in my interpretation or in the file itself.
-
The y-distance between imu0 to imu1 is 0.037m in the file, but it seems like it should be .029m according to the reference drawings (36mm - 2.8mm - 4.25mm) as well as my calipers. And .037m is wider than the board itself.
-
This is a tiny one, but the z distance between IMUs is .002 which makes sense since they're on opposite sides of the PCB. Shouldn't the Z distances for imu-to-body and imu-to-tracking differ by .002 for each IMU? They're each the same in in the config file.
-
The z height of the stereo and tof cameras relative to body are both 0 but they are clearly at different heights on the mount.
-
Per imu-to-body, the body's X is just around the back edge of the PCB (.02m behind imu0). But per tof-to-body and stereo-to-body, it's a few cm behind the board (.1m behind the cameras).
I doubt any of these (save for possibly #1) will significantly affect performance, if at all, but I imagine it's in everyone's interest for the extrinsics to be self-consistent. Should these files be corrected, or am I missing something?
For reference, here's the file I'm looking at (as set by "voxl-configure-extrinsics factory_m500_flight_deck"):
{
"name": "M500_flight_deck",
"extrinsics": [{
"parent": "imu1",
"child": "imu0",
"T_child_wrt_parent": [-0.0484, 0.037, 0.002],
"RPY_parent_to_child": [0, 0, 0]
}, {
"parent": "imu0",
"child": "tracking",
"T_child_wrt_parent": [0.065, -0.014, 0.013],
"RPY_parent_to_child": [0, 45, 90]
}, {
"parent": "imu1",
"child": "tracking",
"T_child_wrt_parent": [0.017, 0.015, 0.013],
"RPY_parent_to_child": [0, 45, 90]
}, {
"parent": "body",
"child": "imu0",
"T_child_wrt_parent": [0.02, 0.014, -0.008],
"RPY_parent_to_child": [0, 0, 0]
}, {
"parent": "body",
"child": "imu1",
"T_child_wrt_parent": [0.068, -0.015, -0.008],
"RPY_parent_to_child": [0, 0, 0]
}, {
"parent": "body",
"child": "stereo_l",
"T_child_wrt_parent": [0.1, -0.04, 0],
"RPY_parent_to_child": [0, 90, 90]
}, {
"parent": "body",
"child": "tof",
"T_child_wrt_parent": [0.1, 0, 0],
"RPY_parent_to_child": [0, 90, 90]
}, {
"parent": "body",
"child": "ground",
"T_child_wrt_parent": [0, 0, 0.1],
"RPY_parent_to_child": [0, 0, 0]
}]
}