I'm currently working on configuring a custom drone and need to configure the cameras and body to be in the right location with respect to the imu's. The configure extrinsics doc found here is a little confusing. I have two questions.

**"The Translation vector should represent the center of the child coordinate frame with respect to the parent coordinate frame in units of meters."**

This line is a little confusing. Should the translation be in terms of the child or the parents coordinate frame?

(parent:*A* child:*B*)

Following a normal homogenous transformation matrix, the translation is in terms of the child's coordinate frame (as above where *l* is the *x* translation in terms of the child), is this correct? (my inclination is no in this case)

Also is it the translation * from* the center of the parent

The imu1 and imu0 default extrinsics are noted as not correct but I am still confused

```
"RPY_parent_to_child": [0, 0, 0]
```

from

```
"extrinsics": [{
"parent": "imu1",
"child": "imu0",
"T_child_wrt_parent": [-0.0484, 0.037, 0.002],
"RPY_parent_to_child": [0, 0, 0]
}
```

Even though it is clear from the diagram that imu1 and imu0 do not share a common frame

The docs seems to address this by saying:

**"NOTE that voxl-imu-server rotates the IMU data into a common and more useful orientation such that both IMUâ€™s appear to be oriented in FRD frame for the VOXL M500, flight deck, and Starling reference platforms. In the top image of the diagram above, this corresponds to X pointing Left, Y pointing to the right, and Z pointing out of the diagram. This conveniently allows the rotation matrix between IMU and body frame to be identity for most use cases."**

So my question is, why is the imu1-imu0 transformation setting even there if it is a constant, and to which imu should I orient all of my cameras? Which frame is that?

Any help would be much appreciated transformation matrices can get quite tricky at times!

Best,

Jamie

https://docs.modalai.com/configure-extrinsics/

Best,

James

Through a lot of trial and error I was able to answer most of what I was curious about.

**1.** Translation seems to be from parents frame center to child center. So if the child center is 10mm away from the parent in the x direction. You use the parents frame to travel 10mm along the x axis. Then a rotation is applied. **This is NOT like the picture I posted**

**2.** In terms of the frames for imu0 and imu1 it is best to ignore the diagrams above. I worked backwards from

```
"extrinsics": [{
"parent": "imu1",
"child": "imu0",
"T_child_wrt_parent": [-0.0484, 0.037, 0.002],
"RPY_parent_to_child": [0, 0, 0]
}
```

more specifically

```
"T_child_wrt_parent": [-0.0484, 0.037, 0.002],
```

**Facing** imu1, with it in the **Bottom Left**, Its coordinate frame looks like

X: Left

Y: Up

Z: Backwards **(into the Board)**

**This is only after whatever voxl-imu-server does I suppose.**

imu0 should be in the same coordinate frame, but remember the picture is flipped!

**Take this lightly. If any of this is wrong, someone let me know. **