9 releases
0.3.2 | Nov 20, 2021 |
---|---|
0.3.1 | Nov 8, 2020 |
0.3.0 | Sep 8, 2020 |
0.2.4 | Sep 7, 2020 |
0.1.0 | Jun 21, 2019 |
#751 in Algorithms
145KB
3K
SLoC
ARCOS KDL
Our implementation of a very simple Kinematic Dynamic Library. We were using orocos-KDL at our laboratory, but found that it was better for our research interests to have our own library, so we created arcos-kdl (as similar as possible to orocos-kdl).
Features
- Forward positional chain kinematics
- Forward differential chain kinematics
- Inverse positional chain kinematics
- Inverse differential chain kinematics
- Forward chain dynamics
- Inverse chain dynamics
- Forward Tree kinematics
Right now arcos-kdl is capable of computing forward kinematics (positional and differential) for arbitrary long kinematic chains. It is also capable of computing inverse differential kinematics of arbitrary long chains.
For inverse kinematics we are using a algorithm called by orocos-kdl as weighted damped least squares. The most important aspect of this algorithm is that one can define weight matrices at the task and joint spaces. This weights indicates to the solver how much each (joint/axis) matters for the solution. So, in the task space, the algorithm will priorize to reduce the error on those axes with higher weight. In the joint space the algorithm will move less the joints with lower weight. This is very useful when the joint is approaching a limit or a singularity; one can lower its weight, so that the algorithm uses more the joints without problems.
For more information about this algorithm read the following papers:
-
A. Ben Israel & T.N.E. Greville. Generalized Inverses : Theory and Applications, second edition. Springer, 2003. ISBN 0-387-00293-6.
-
K. L. Doty, C. Melchiorri & C. Boniveto. A theory of generalized inverses applied to Robotics. The International Journal of Robotics Research, vol. 12, no. 1, pages 1-19, february 1993.
ARCOS-KDL supports
Intalling
Execute:
cargo install arcos-kdl
Building
If you do not want to use the official package, you can build it yourself. Make sure you have installed cargo:
cargo build --lib
Testing
For executing the already implemented tests:
cargo test
For benchmarks:
cargo bench -- --noplot
Documentation
The master documentation can be found here If you are looking for the stable API documentation, it can be found here
For generating the documentation yourself execute:
cargo doc
Formatting
If you want to test your formatting do the following (take into consideration that our continuous integration script will check the format and any ill-formatted code will be prevented from merging master):
rustup component add rustfmt
cargo fmt --all -- --check
License
Licensed under the General Public License, version 3.0.
Contributing
Please open an issue or merge request on GitLab to contibute. Code contributions submitted for inclusion in the work by you, as defined in the GPLv3 license, shall be licensed as the above without any additional terms or conditions. Thanks.
Dependencies
~5MB
~101K SLoC