Our implementation of a very simple Kinematic Dynamic Library. For more information go to the official documentation. Because this is still in development you will need to generate the documentation yourself. Go to the documentation section for that.
For the API documentation visit this page.
Execute:
cargo build --lib
Execute:
cargo test
Execute:
cargo doc
For testing a default chain was created. To compare against orocos-kdl, it can be created with:
```python from PyKDL import Frame, FrameVel, Rotation, Vector, Segment from PyKDL import Chain, JntArray, Joint, JntArrayVel from PyKDL import ChainFkSolverPosrecursive, ChainFkSolverVelrecursive
def createsegment(x, y, z, roll, pitch, yaw, jointtype=Joint.RotZ): return Segment(Joint(joint_type), Frame(Rotation.RPY(roll, pitch, yaw), Vector(x,y,z)))
def createangles(anglelist): jointarray = JntArray(len(anglelist)) for index,angle in enumerate(anglelist): jointarray[index] = angle return joint_array
segments = [ createsegment(0.1, -0.2, 0.3, -0.1, -0.2, 0.3, Joint.None), createsegment(0.2, 0.5, 0.1, 0.58, -1.2, 2.3), createsegment(0.02, 0.3, -0.81, 3.0, -1.7, 1.3), createsegment(0.4, -0.27, 0.19, 1.57 ,-1.57, 0.0), createsegment(0.24, -0.18, 0.16, 0.01, 0.0, -0.01), createsegment(1.0, -0.5, -0.01, 0.05, -1.02, 0.34), createsegment(0.02, 0.58, -0.87, 0.95, -1.74, 0.68), createsegment(0.2, 0.1, -0.1, -0.76, -0.94, 0.25) ]
chain = Chain() for segment in segments: chain.addSegment(segment)
solver = ChainFkSolverPosrecursive(chain) diffsolver = ChainFkSolverVel_recursive(chain)
result = Frame() diffresult = FrameVel() jointarray = createangles([0.1, -0.95, 0.57, 0.68, -0.27, 0.39, 0.47]) qdotsarray = createangles([1.0, -0.65, 0.87, 0.01, -0.41, -0.98, 0.24]) solver.JntToCart(jointarray, result) diffsolver.JntToCart(JntArrayVel(jointarray, qdotsarray), diffresult) print(result) print(diff_result.deriv()) ```