## arcos-kdl

ARCOS-Lab Kinematics and Dynamics Library

### 7 releases

 0.3.0 Sep 8, 2020 Sep 7, 2020 Jul 23, 2020 Jun 25, 2019 Jun 21, 2019

#36 in Robotics

135KB
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.

• 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
``````

## 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
``````