Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Modle][Control][Navigation] refactor the whole system from XYZ-Euler angles to true SO(3) #671

Open
wants to merge 20 commits into
base: master
Choose a base branch
from

Conversation

tongtybj
Copy link
Collaborator

@tongtybj tongtybj commented Feb 9, 2025

What is this

Handle the robot orientation with SO(3) rotation matrix. So far, the orientation is described in XYZ-Euler angles, and the singularity
leads the limitation to handle omni-directional motion for our robots.

Details

  • The orientation is mangaed by using rotation matrix in both spinal and ros.
  • Spinal publishes quaternion instead of euler angles to ensure the consistence of SO(3) orientation
  • Devide rotation matrix into three orthogonal unit vectors (wx_b, wy_b, wz_b): wz_b is solely related to gravity, and thus it is possible to estimated from accelerometer and gyrometer. While wx_b can be obtaind from magnetometer and gyrometer ( and a assistance of wz_b). Them, wy_b can be calcualted from the cross-production of wx_b and wz_b. This is the bacis concept to obtain rotation matrix using 9-axis IMU in Spinal. Also refer to the Fig.1
  • A smater fusion between VIO/Mocap and Spinal IMU in terms of orientation: rotation matrix from VIO/Mocap can be also be devided into wx_b, wy_b and wz_b. Then wx_b can be soley used to update rotation matrix. Please check these API and usage in codes. Fig.2 can be also helpful for understanding.

Fig.1
Fig1

Fig.2
Fig2

TODO

  • Test with simulation (hydrus, dragon)
  • Test with rosbag (mini quadrotor)
  • Test with in-flight experiment (mini quadrotor)

sugikazu75 and others added 20 commits July 18, 2024 17:03
…method. use actual baselink orientation for coordinate transformation.
…(i.e., wx_b and wz_b), and refactor the roles of different sensor plugins to indepedently update these vectors.
@tongtybj
Copy link
Collaborator Author

tongtybj commented Feb 9, 2025

@sugikazu75

This is the latest progress of SO(3) orientation system.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants