Hello,
I am trying to make a realtime inverse kinematics system using kdl in python. However i am having a hard time trying to understand how it works. Unfortunately the examples and api documentation didnt get me much further.
What i am trying to accomplish:
- Simulate a human arm
- 3d visualisation of the arm using cones (with panda3d, panda3d.org)
- using a 3d position (which i am getting trought a wiimote) to inverse calculate the arm bones position/rotation
As i understand, kdl should be able to calculate this for me.
What i currently understand (correct me if im wrong):
- a chain is built up from segments
- a segment contains a joint, which handles the rotation, and a frame, which defines the distance to the next segment.
- if i need a joint which rotates in multiple directions, i define multiple joints with a frame (0,0,0)
What i dont understand:
- how do i define a point to which the tip of the chain should move to (and thus calculate the pos/rot of the bones)
- how do i let it calculate the inverse kinematics
- how do i assign the results to the chain
- how do i get the position of the bones out of kdl to import it in another system (best would be Vec3-rotation, Vec3-position, relative to the previous segement, but could be Mat3x3 or Mat4x4 as well)
Tnx Hypnos


Hard time
On Thu, 27 Mar 2008, Hypnos wrote:
> I am trying to make a realtime inverse kinematics system using kdl in python.
Python and realtime....? maybe that doesn't go together too well :-)
> However i am having a hard time trying to understand how it works.
> Unfortunately the examples and api documentation didnt get me much further.
>
> What i am trying to accomplish:
> - Simulate a human arm
> - 3d visualisation of the arm using cones (with panda3d, panda3d.org)
> - using a 3d position (which i am getting trought a wiimote) to inverse
> calculate the arm bones position/rotation
>
> As i understand, kdl should be able to calculate this for me.
>
> What i currently understand (correct me if im wrong):
> - a chain is built up from segments
> - a segment contains a joint, which handles the rotation, and a frame, which
> defines the distance to the next segment.
> - if i need a joint which rotates in multiple directions, i define multiple
> joints with a frame (0,0,0)
Yes.
> What i dont understand:
> - how do i define a point to which the tip of the chain should move to (and
> thus calculate the pos/rot of the bones)
KDL currently only covers _instantaneous_ kinematics, so no trajectories,
but only velocities.
> - how do i let it calculate the inverse kinematics
There are abstract classes for all instantaneous kinematics routines, which
you have to implement for each particular chain.
> - how do i assign the results to the chain
The "state" of a chain is kept separate from the description of the chain.
> - how do i get the position of the bones out of kdl to import it in another
> system (best would be Vec3-rotation, Vec3-position, relative to the previous
> segement, but could be Mat3x3 or Mat4x4 as well)
Herman
Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm