Closed SKYnSPACE closed 3 years ago
One can certainly use a geometric numerical integrator on SO(3), such as
T. Lee, M. Leok, N. H. McClamroch, "A Lie group variational integrator for the attitude dynamics of a rigid body with application to the 3D pendulum," Proceedings of the IEEE Conference on Control Application, pp. 962--967, Toronto, Canada, August 2005.
Using ode45
is okay for a short term simulation, especially when the error tolerance is sufficiently small. For example, in the given numerical example, the deviation of rotation matrix from SO(3), measured by || I_{3\times 3} - R^T R ||
is less than 2.6e-5.
Thanks for the marvelous reference paper by Prof. Lee. However, solving the implicit function for every step to derive the next step F
seems burdensome to my on-board computer.
How small should the tolerance be in terms of the SO(3) manifold?
Would a simple Euler method
be also meet the criteria?
Thank you :)
No problem at all. Glad I could be of help.
I personally have never tested the minimum tolerance levels as the default options in Matlab ode45
never gave me any issues. Also, I do not have any idea about the accuracy of using Euler method (though I highly doubt a simple Euler method would work well).
Is there any reason why you need to solve the ODE inside an onboard computer? I assume you are trying to implement this in a real time application, such as a UAV. If so, you don't have to solve the ODE right? I am just curious.
Thanks for your opinion.
I'm just trying to test an online parameter estimation method on SO(3) x S^2 configuration space, such as a UAV with a spherical pendulum, by using ideas from
Chen, Ricky TQ, et al. "Neural ordinary differential equations." Advances in neural information processing systems. 2018.
This requires the back-propagation of measurement errors deviated from estimated dynamics, which needs a proper ODESolver()
.
I was led into this repository by searching actual implementations of geometric approaches in which you guys are specialized. Hope to see your new fancy works soon!
Many thanks :)
Thank you π
This seems like a difficult problem. If the calculation speed is your concern, may be you are trying to use C++. In that case, if you have not already came across, maybe boost odeint is worth a try (I haven't used this before, but boost has extremely useful stuff). Also, if you are using C++, we have the geometric controllers as standalone C++ classeshere.
Good luck with your research! βΊοΈ
Great! I should try the boost library then. Seems like you guys built a lot of good stuff. Guess I should check the entire repositories π€£ Thanks again and have a good night π
p.s. Let me close this issue since the ode45
gives sufficient tolerance.
Q. Is it okay to integrate the dynamics using ode45, which may cause deviations from the SO(3)?
Ref.
https://github.com/fdcl-gwu/decoupled-yaw-controller-comparison/blob/1d067d5339546a3bc106daaefffd72b2090293cd/FDCL/run.m#L80