You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am developing an attitude mode to align a vector in ECI (N) frame with the b2 axis, similar to what the Sunsafe mode does.
To move from the inertial frame to the body frame I need to retrieve the inertial quaternion of the body, which should be provided by the Star Tracker in the generic_adcs/fsw/src/generic_adcs_ingest.c script as:
In particular, the QxQ method should move from the Sensor frame to the Body frame, by using the quaternion specified in generic_adcs/fsw/cfg/Inp_DI.txt as :
!!!!!!!!!!!!!!! Star Tracker !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-0.5510871 -0.4059919 -0.5108982 0.5200544 ! Quaternion from sensor to body frame
As far as I understand, then the resulting quaternion stored in the DI_St_Tlm_Payload data structure should be the body quaternion that I am looking for. However, when I confront this quaternion with the one directly retrieved from 42 in the 42Truth Sim, they are totally different.
This leads to a wrong conversion between my ECI and body frame, while the conversion becomes correct when, instead of retrieving the ST quaternion, I retrieve directly the body quaternion from 42.
Is there something that I am missing, or is perhaps the quaternion specified in Inp_DI the wrong one?
Also, to get the body quaternion from 42, I had to modify the 42 code itself to return the ST quaternion as S->B[O].qn instead of the one computed by the method in the (42sensors.c script).
For some reason, modifying the data_provider.cpp code of the ST in this way:
Hi everyone,
I am developing an attitude mode to align a vector in ECI (N) frame with the b2 axis, similar to what the Sunsafe mode does.
To move from the inertial frame to the body frame I need to retrieve the inertial quaternion of the body, which should be provided by the Star Tracker in the
generic_adcs/fsw/src/generic_adcs_ingest.c
script as:In particular, the QxQ method should move from the Sensor frame to the Body frame, by using the quaternion specified in
generic_adcs/fsw/cfg/Inp_DI.txt
as :As far as I understand, then the resulting quaternion stored in the DI_St_Tlm_Payload data structure should be the body quaternion that I am looking for. However, when I confront this quaternion with the one directly retrieved from 42 in the 42Truth Sim, they are totally different.
This leads to a wrong conversion between my ECI and body frame, while the conversion becomes correct when, instead of retrieving the ST quaternion, I retrieve directly the body quaternion from 42.
Is there something that I am missing, or is perhaps the quaternion specified in Inp_DI the wrong one?
Also, to get the body quaternion from 42, I had to modify the 42 code itself to return the ST quaternion as S->B[O].qn instead of the one computed by the method in the (42sensors.c script).
For some reason, modifying the data_provider.cpp code of the ST in this way:
leads to the collapse of the ST sim.
Thanks in advance for the support, I really appreciate it!
The text was updated successfully, but these errors were encountered: