EIS functionality
-
Hi! I'm noticing some difference in functionality when I switch
eis_modefromhorizon-leveltofull-follow.I built
voxl-camera-serveroff theeisbranch and followed the instructions. everything seems to be working correctly including stabilization other than the final output rotation that I am looking for.My
imu_appstohiresextrinsics are set up correctly and I want to apply this additional transform to the output:{ "parent": "hires", "child": "hires_eis", "T_child_wrt_parent": [0.066, 0.009, -0.012], "RPY_parent_to_child": [0, 0, -90] }I'm noticing that if I set
"eis_mode": "full-follow"the transform isnt applied but if i set"eis_mode": "horizon-level"it rotates the output window as expected. Here's what I see onvoxl-portalwhen I switcheis_modeand leave the extrinsics file untouched."eis_mode": "full-follow":

"eis_mode": "horizon-level":

Hoping to find a way to get the output rotation working in
full-followmode. Thanks! -
@SKA , I thought i fixed that issue a while ago, let me double check. Are you using
voxl-camera-serverfromeisbranch or an official release from an SDK?Alex
-
@Alex-Kushleyev I'm building from the
eisbranch not the official release. Thanks!(Note: The images I included in my post are labeled backwards. first image is
"eis_mode": "horizon-level"and the second image is"eis_mode": "full-follow") -
@SKA , OK, so what you are saying is that in
full-followmode, the rotation parameter in the extrinsicshires->hires_eisfor the -90 degree rotation is not respected, correct? -
@Alex-Kushleyev yes, that's correct!
-
@SKA ,
In your case, the issue should be solved by commenting out one line in https://gitlab.com/voxl-public/voxl-sdk/services/voxl-camera-server/-/blob/eis/src/misp.cpp :
//TODO: FIXME //in roll following mode, the roll is not stabilized to the horizon, so it does not need to be flipped //need to resolve this in a better way because Rout is meant for another purpose if (!follow_roll) rc_matrix_right_multiply_inplace(&eis_ctx.H.m, eis_ctx.Rout.m); //rotate the image according to desired output rotation (nominally identity)Specifically, comment out the
ifstatement :if (!follow_roll), so that theRoutmatrix is always applied to the full transform H.The issue is that I tried to solve another use case by using this parameter (when the voxl2 / IMU is flipped upside down while camera is right side up). I just tested and it appears to be working.
I will figure out a better way of handling the upside down IMU in this case so that the output transform can be used correctly, but for now you can just comment out that
ifstatement.Can you please let me know if that fix worked for you?
Alex