After 7 years (!!) from the first public commit, and 8 years of development (when it was called Rotations.jl, clashing with the Rotations.jl package), I am glad to tag v1.0.0 of ReferenceFrameRotations.jl. This package now contains stable API to work with reference frame rotation representations. Currently, we support the following representations:
Direction cosine matrices;
Euler angles;
Euler angle and axis; and
Quaternion.
This package was extensively used at the Brazilian National Institute for Space Research during the development of Amazona 1 satellite, as I reported here. I recently modified the tests so that we have 100% of coverage. Given this, I hope the users will not face any major problems
Very cool, congratulations on such a mature project!
Could you explain a bit the differences, andvantages / disadvantages between ReferenceFrameRotations.jl and Rotations.jl for those of us lacking context?
ReferenceFrameRotations.jl uses passive rotations, whereas Rotations.jl uses active rotations. It means that, by default, the former always assumes you are rotating the reference frame, and the latter assumes that you are rotating vectors.
For applications related to attitude control, you work with reference frame rotations 99% of the time instead of vector rotations.
Another thing I had in mind when I developed ReferenceFrameRotations.jl was to keep the API as close as possible to that used by MATLAB, but following Julia conventions. It was important in my case for people that were used to this software.
I still face some discussions about Julia, since it is a very new language. I hear a lot “you should you FORTRAN”, “you should use MATLAB”, etc. However, after Amazonia-1, I was able to show how Julia helped me. I did at least 6 presentations showing everything we developed. People are truly changing the thinking
On the other side, my students are using Julia for many research tasks related to the attitude and orbit control subsystem! This kind of application was only possible due to ReferenceFrameRotations.jl and SatelliteToolbox.jl.