hello,
does the KDL::Twist decribes the end effector velocities concerning a tool coordinate system or a world coordinate system?
The Orocos ProjectSmarter control in robotics & automation! |
|
KDL::Twist
hello, does the KDL::Twist decribes the end effector velocities concerning a tool coordinate system or a world coordinate system? |
KDL::Twist
On Tue, 22 Jul 2008, threelight wrote:
> does the KDL::Twist decribes the end effector velocities concerning a tool
> coordinate system or a world coordinate system?
>
A Twist does not have an absolutely fixed reference frame: you use it to
represent the velocity of one frame with respect to another frame,
expressed with respect to still another third frame. What these three
frames are is up to you to define. (So, don't forget to write that
information down in your code documentation! :-))
Herman
Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm
> especially I'm interested
> especially I'm interested in the KDL::Twist-input parameter of
> KDL::ChainIkSolverVel_pinv::CartToJnt (const JntArray &q_in, const Twist
> &v_in, JntArray &qdot_out)
> Ah, this is the tricky part, it is the velocity of the end-effector-frame with
> expressed int the base-frame of the chain (right before the first joint) but
> with it's reference point at the end-effector(to make sure that rotations are
> around the endeffector point)
ok, but is the reference point at the end-effector equal to the third frame according to this message:
"A Twist does not have an absolutely fixed reference frame: you use it to
represent the velocity of one frame with respect to another frame,
expressed with respect to still another THIRD frame"
or is it a reference frame which is composed of the translational part of the base frame and the rotational part of the end-effector frame, linke this:
Frame(Vector(translational component of base frame),Rotation(rotational component of end effector frame))?
Another question would be:
Can I put the output-Twist of KDL::Path_Line:: Twist Vel (double s, double sd) directly into the input-Twist-Parameter of KDL::ChainIkSolverVel_pinv::CartToJnt (const JntArray &q_in, const Twist &v_in, JntArray &qdot_out) or is ist necessary to transform first?
> No it is the velocity
> No it is the velocity with it's reference frame the base, it's reference point
> the endeffector, from the endeffector to the THIRD frame
this part of your sentence is not clear:
"...from the endeffector to the THIRD frame"
that means, the reference point is the end effector frame expressed in still another third frame?
Or can you give me an example for that?
thanks! especially I'm
thanks!
especially I'm interested in the KDL::Twist-input parameter of
KDL::ChainIkSolverVel_pinv::CartToJnt (const JntArray &q_in, const Twist &v_in, JntArray &qdot_out)
So, this KDL::Twist describes the velocity of end effector-frame with respect to which frame??? expressed with respect to which third frame??? :-)
--> The frame of end effector with respect to the last joint-frame expressed with respect to the frame of the first joint???
KDL::Twist
thanks for this reply!
But I have some questions:
- Which operator* do you mean?
- qdot = joint velocities??
> -----Ursprüngliche Nachricht-----
> Von: "Ruben Smits" <smits [dot] ruben [..] ...>
> Gesendet: 23.07.08 09:26:46
> An: orocos-users [..] ...
> CC: threelight <manuelbirlo [..] ...>
> Betreff: Re: [Orocos-users] KDL::Twist
> On Tuesday 22 July 2008 16:58:37 threelight wrote:
> > hello,
> >
> > does the KDL::Twist decribes the end effector velocities concerning a tool
> > coordinate system or a world coordinate system?
>
> The KDL::Twist does not contain information about in what coordinate system it
> is described. It only contains 6 values that express translational and
> rotational velocity in _a_ coordinate system. The operator* can be used to
> transform the Twist to different coordinate systems.
>
> For instance: if you have a translational joint Joint::TransX the velocity at
> the base of this joints is t_B=[1,0,0,0,0,0]'*qdot, if the base of your joint
> is located at a B and you want it to be expressed in a base A you need the
> pose KDL::Frame F_A_B (this expressed the pose of coordinate system B in the
> coordinate system A) and t_A=F_A_B*t_B.
>
> Ruben
>