Question about IK Solver

Hey,

Below is my question about the ChainIkSolverPos_NR class. I'm not sure if
it's clear....if not I'll try to explain it again more clearly.

In my chain I have segments A,B,C,D,E. (I'm using CartToJnt (const JntArray
&q_init, const Frame &p_in, JntArray &q_out))

I want to be able to solve for an IK solution for a pose of 'E' in frame 'A'
and allow the solver to search for a solution but without using joint 'A'. I
want it to search for a solution by just changing the joint angles
corresponding to B,C,D,E in q_init. (So, 'A' in q_out will be guaranteed to
be the same as the value for 'A' in q_init.) I know this may result in
situations where it won't be able to find a solution but I that shouldn't be
often for my use case.

Is there a way to do this?

thank you for your time,
-- ben

p.s. I've been using the KDL for over a year now and It made my life a whole
bunch easier. thanks!

Ruben Smits's picture

Question about IK Solver

On Tue, Mar 9, 2010 at 4:18 AM, Benjamin Cohen <bencohen2 [..] ...> wrote:
> Hey,
> Below is my question about the ChainIkSolverPos_NR class. I'm not sure if
> it's clear....if not I'll try to explain it again more clearly.
> In my chain I have segments A,B,C,D,E. (I'm using CartToJnt (const JntArray
> &q_init, const Frame &p_in, JntArray &q_out))
> I want to be able to solve for an IK solution for a pose of 'E' in frame 'A'
> and allow the solver to search for a solution but without using joint 'A'. I
> want it to search for a solution by just changing the joint angles
> corresponding to B,C,D,E in q_init. (So, 'A' in q_out will be guaranteed to
> be the same as the value for 'A' in q_init.) I know this may result in
> situations where it won't be able to find a solution but I that shouldn't be
> often for my use case.
> Is there a way to do this?

There is no intelligent way to tackle this without changing the code
of the ChainIkSolverPos_NR and even the ChainIkSolverVel class to take
into account locked joints.

What you can do is create a chain that only contains joints for
segments BCDE and a Joint::None for segment A, but this would probably
only make sense if the value of joint angle A does not change.

Ruben

> thank you for your time,
> -- ben
>
> p.s. I've been using the KDL for over a year now and It made my life a whole
> bunch easier. thanks!