This repository uses the git-flow branching model. You can find more about git-flow here.
We have put our best effort into documenting and testing the entire library.
This library is under the license Apache 2.0. Consult the license file for more information.
This library is compatible with Java 17+ and Gradle 7.5+.
This library main source depends on the matrix library EJML here and Euclid here.
Mecano provides algorithms for rigid-body dynamics and a framework to define multi-body systems articulated with joints. The library is born from the need of having a base library for whole-body control that is well tested, flexible, and meant for real-time environment where garbage generation is not allowed. This library is meant to be the base of the control framework that is still in development at IHMC and will be released progressively in the near future.
TODO
Any control engineer wanting to implement whole-body controller or implement a simulator is susceptible to use this library as the base to simplify the math involved.
The goal for Mecano is to become the most flexible and easy to use, so it results in great increase in development productivity. It is unclear yet the extent of this library in the future.
Please read CONTRIBUTING.md.
This library includes the following:
- The definition of spatial vectors used to represent 6D velocity, i.e. Twist, 6D acceleration, i.e. SpatialAcceleration, etc.
- The definition of joints, e.g. RevoluteJoint, SixDoFJoint, and rigid-bodies, i.e. RigidBody, to create multi-body systems.
- Algorithms to compute:
- Center of mass position and velocity: CenterOfMassCalculator, CenterOfMassJacobian.
- Rigid-body spatial acceleration: SpatialAccelerationCalculator.
- Centroidal momentum matrix: CentroidalMomentumCalculator and CentroidalMomentumRateCalculator.
- Geometric Jacobian: GeometricJacobianCalculator.
- Inverse and forward dynamics: InverseDynamicsCalculator, ForwardDynamicsCalculator.
- The mass matrix: CompositeRigidBodyMassMatrixCalculator.
- Response to external disturbance (wrench or impulse): MultiBodyResponseCalculator.
The releases .jars for Mecano are hosted on Maven repository. You can browse the IHMC release packages at https://mvnrepository.com/artifact/us.ihmc.
At a minimum, you will need to have the following repository declared in your build script to use the Mecano .jars:
repositories {
mavenCentral()
}
Here is an example for adding the dependency to Mecano using your build script:
dependencies {
compile group: "us.ihmc", name: "mecano", version: "x.x"
}