Quantcast

Dear All, Help on Jacobian matrix of left arm(also its Pseudo-inverse matrix and Transposed matrix ).

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Dear All, Help on Jacobian matrix of left arm(also its Pseudo-inverse matrix and Transposed matrix ).

zhenli
Dear All.
    I want to get some help on how to get the Jacobian
matrix of left arm.
    From the following website I can get the DH parameters
for the left arm.
    http://eris.liralab.it/wiki/Image:DHnotation_Left.jpg

    So how can I get the expression for the Jacobian
matrix of left arm?
    Thus based on the Jacobian matrix of left arm, I can
get the expression of its Pseudo-inverse matrix and
Transposed matrix.
    Best regards.
    Zhenli Lu
   
 

------------------------------------------------------------------------------
Storage Efficiency Calculator
This modeling tool is based on patent-pending intellectual property that
has been used successfully in hundreds of IBM storage optimization engage-
ments, worldwide.  Store less, Store more with what you own, Move data to
the right place. Try It Now! http://www.accelacomm.com/jaw/sfnl/114/51427378/
_______________________________________________
Robotcub-hackers mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/robotcub-hackers
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: Dear All, Help on Jacobian matrix of left arm(also its Pseudo-inverse matrix and Transposed matrix ).

Maxime Cheramy
Hi Zhenli!

I can help you for that! But before to give you the steps to follow could you tell me what kind of Jacobian do you need? I mean the kinematic (analytical/geometrical) or dynamic (geometrical/COM) one?

Bests,

Max
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: Dear All, Help on Jacobian matrix of left arm(also its Pseudo-inverse matrix and Transposed matrix ).

zhenli
In reply to this post by zhenli
Dear Max.
    Thank you very much for your email.
    I am not so clear about the difference between
kinematic (analytical/geometrical) or dynamic
(geometrical/COM) one?
   I guess I need the  kinematic (analytical/geometrical)
Jacobian  matrix. But I also like to know how to get the
dynamic (geometrical/COM) one.
   Thanks in advance.
   Best regards.
   Zhenli

> Message: 7
> Date: Mon, 25 Jul 2011 04:21:07 -0700 (PDT)
>From: Maxime Cheramy <[hidden email]>
> Subject: Re: [rc-hackers] Dear All, Help on Jacobian
>matrix of left
> arm(also its Pseudo-inverse matrix and Transposed
>matrix ).
> To: [hidden email]
> Message-ID: <[hidden email]>
> Content-Type: text/plain; charset=us-ascii
>
> Hi Zhenli!
>
> I can help you for that! But before to give you the
>steps to follow could
> you tell me what kind of Jacobian do you need? I mean
>the kinematic
> (analytical/geometrical) or dynamic (geometrical/COM)
>one?
>
> Bests,
>
> Max
>

 

------------------------------------------------------------------------------
Storage Efficiency Calculator
This modeling tool is based on patent-pending intellectual property that
has been used successfully in hundreds of IBM storage optimization engage-
ments, worldwide.  Store less, Store more with what you own, Move data to
the right place. Try It Now! http://www.accelacomm.com/jaw/sfnl/114/51427378/
_______________________________________________
Robotcub-hackers mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/robotcub-hackers
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: Dear All, Help on Jacobian matrix of left arm(also its Pseudo-inverse matrix and Transposed matrix ).

Maxime Cheramy
Hi Zhenli!

So I will give the step to follow:

1. Create interfaces through pointers:
For the kinematic:
        iCubArm *arm;
        iKinChain *chain;
        arm = createArm("right_arm", 0);
        chain = arm->asChain();
For the dynamic:
        iCubArmDyn armTorsoDyn("right");
        iDynChain *dynChain;
And to calculate the Jacobian for the actual value of the angles you have to create (via the remote control board) an IEncoders interface:
        IEncoders *encod;

2. Get the actual angles values and set them to the chain:
                Vector fb, encodervalues;
                encodervalues.resize(m);
                encod -> getEncoders(encodervalues.data());
                cout << "Angles values  from encoders: " << encodervalues.toString() << endl;
                fb = Vector(m, encodervalues.data());
                fb = (M_PI*fb)/180; //Conversion to radians
                cout << "Angles in radian: " << fb.toString() << endl;

                chain->setAng(fb); //kinematic
                dynChain->setAng(fb); //dynamic

3. Use the needed method to get the Jacobian you need:
For example:
                Matrix foo2 = dynChain->computeGeoJacobian();
                cout << "iDyn geometrical Jacobian : " << foo2.toString() << endl;
Or:
                Matrix foo = chain->AnaJacobian();
                cout << "Analytical Jacobian : " << foo.toString() << endl;
                Matrix fooG = chain->GeoJacobian();
                cout << "Geometrical Jacobian : " << fooG.toString() << endl;

4.Finally if you need the transpose or anything else look at the Matrix class:

                Matrix TgeoJacob;
                TgeoJacob = foo2.transposed();

Don't forget to set the actual angles values each time you want to calculate the Jacobian!
I hope that will be useful for you!
If you have more questions do not hesitate! ;)

Best regards,

Max

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: Dear All, Help on Jacobian matrix of left arm(also its Pseudo-inverse matrix and Transposed matrix ).

zhenli
In reply to this post by zhenli
Dear Max.
    Thank you very much for your email.
    That works fine.
    If I meet more question,I will put the information
here.
    Best regards.
    Zhenli

> Message: 3
> Date: Tue, 26 Jul 2011 01:43:53 -0700 (PDT)
>From: Maxime Cheramy <[hidden email]>
> Subject: Re: [rc-hackers] Dear All, Help on Jacobian
>matrix of left
> arm(also its Pseudo-inverse matrix and Transposed
>matrix ).
> To: [hidden email]
> Message-ID: <[hidden email]>
> Content-Type: text/plain; charset=us-ascii
>
> Hi Zhenli!
>
> So I will give the step to follow:
>
> *1. Create interfaces through pointers:*
> /For the kinematic:/
> iCubArm *arm;
> iKinChain *chain;
>        arm = createArm("right_arm", 0);
>        chain = arm->asChain();
> /For the dynamic:/
> iCubArmDyn armTorsoDyn("right");
> iDynChain *dynChain;
> /And to calculate the Jacobian for the actual value of
>the angles you have
> to create (via the remote control board) an IEncoders
>interface:/
> IEncoders *encod;
>
> *2. Get the actual angles values and set them to the
>chain:*
> Vector fb, encodervalues;
> encodervalues.resize(m);
> encod -> getEncoders(encodervalues.data());
> cout << "Angles values  from encoders: " <<
>encodervalues.toString() <<
> endl;
> fb = Vector(m, encodervalues.data());
> fb = (M_PI*fb)/180; //Conversion to radians
> cout << "Angles in radian: " << fb.toString() << endl;
>
> chain->setAng(fb); //kinematic
> dynChain->setAng(fb); //dynamic
>
> *3. Use the needed method to get the Jacobian you need:*
> /For example:/
> Matrix foo2 = dynChain->computeGeoJacobian();
> cout << "iDyn geometrical Jacobian : " <<
>foo2.toString() << endl;
> /Or:/
>                Matrix foo = chain->AnaJacobian();
>                cout << "Analytical Jacobian : " <<
>foo.toString() << endl;
>                Matrix fooG = chain->GeoJacobian();
>                cout << "Geometrical Jacobian : " <<
>fooG.toString() <<
> endl;
> *
> 4.Finally if you need the transpose or anything else
>look at the Matrix
> class:*
>                Matrix TgeoJacob;
> TgeoJacob = foo2.transposed();
>
> Don't forget to set the actual angles values each time
>you want to calculate
> the Jacobian!
> I hope that will be useful for you!
> If you have more questions do not hesitate! ;)
>
> Best regards,
>
> Max
>

>
>

------------------------------------------------------------------------------
Magic Quadrant for Content-Aware Data Loss Prevention
Research study explores the data loss prevention market. Includes in-depth
analysis on the changes within the DLP market, and the criteria used to
evaluate the strengths and weaknesses of these DLP solutions.
http://www.accelacomm.com/jaw/sfnl/114/51385063/
_______________________________________________
Robotcub-hackers mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/robotcub-hackers
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: Dear All, Help on Jacobian matrix of left arm(also its Pseudo-inverse matrix and Transposed matrix ).

Alex Smith
Hi there,

 I am also trying to get the analytical jacobian, so far the code you have provided compiles apart from the line:

arm = createArm("right_arm", 0);

I can't find the function anywhere in the headers, has this been replaced by iCubArm()? If so, how is it implemented?

Warm regards,

Alex
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: Dear All, Help on Jacobian matrix of left arm(also its Pseudo-inverse matrix and Transposed matrix ).

pattacini
Hi Alex,

I would honestly need more details to answer your question.

Which code are you referring to?

Anyway, if you're seeking for the analytical Jacobian, the method for you is provided by iKin library from the main branch of iCub SW and is called AnaJacobian().

Link: http://eris.liralab.it/iCub/main/dox/html/classiCub_1_1iKin_1_1iKinChain.html 

Cheers,
Ugo


>-----Original Message-----
>From: Alex Smith [mailto:[hidden email]]
>Sent: venerdì 23 marzo 2012 17:43
>To: [hidden email]
>Subject: Re: [rc-hackers] Dear All, Help on Jacobian matrix of left arm(also
>its Pseudo-inverse matrix and Transposed matrix ).
>
>Hi there,
>
> I am also trying to get the analytical jacobian, so far the code you have
>provided compiles apart from the line:
>
>arm = createArm("right_arm", 0);
>
>I can't find the function anywhere in the headers, has this been replaced by
>iCubArm()? If so, how is it implemented?
>
>Warm regards,
>
>Alex
>
>--
>View this message in context: http://robotcub-
>hackers.2198711.n2.nabble.com/Dear-All-Help-on-Jacobian-matrix-of-left-arm-
>also-its-Pseudo-inverse-matrix-and-Transposed-matrix-tp6617818p7399134.html
>Sent from the RobotCub Hackers mailing list archive at Nabble.com.
>
>-----------------------------------------------------------------------------
>-
>This SF email is sponsosred by:
>Try Windows Azure free for 90 days Click Here
>http://p.sf.net/sfu/sfd2d-msazure
>_______________________________________________
>Robotcub-hackers mailing list
>[hidden email]
>https://lists.sourceforge.net/lists/listinfo/robotcub-hackers
>
>-----
>Nessun virus nel messaggio.
>Controllato da AVG - www.avg.com
>Versione: 2012.0.1913 / Database dei virus: 2114/4889 -  Data di rilascio:
>23/03/2012

------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Robotcub-hackers mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/robotcub-hackers
Loading...