inverse kinematics using pseudo inverse jacobian

714 views
Skip to first unread message

Priyadarshini Ravichandran

unread,
Mar 22, 2017, 6:07:53 PM3/22/17
to Robotics & Machine Vision Toolboxes
Dear all,

I have a problem in my code. I calculated inverse kinematics for 8 dof (RPRRRRRR)robot arm using pseudo inverse jacobian, I get the theta angle values for prismatic joint is above the limit 
these are my limit ranges
L(1).qlim = [0 pi]; %revolute joint 

L(2).qlim = [0 2];   %prismatic joint

L(3).qlim = [-2.96706 2.96706]; %revolute joint 

L(4).qlim = [-3.31613 0.785398]; %revolute joint 

L(5).qlim = [-2.094395 2.722714]; %revolute joint 

L(6).qlim = [-3.22886 3.22886]; %revolute joint 

L(7).qlim = [-2.094395 2.094395]; %revolute joint 

L(8).qlim = [-6.108652 6.108652];%revolute joint 


I have to get delta theta values within the limit range, can anyone please help me in this...


tr2.m

Erik van Oene

unread,
Mar 23, 2017, 3:06:44 AM3/23/17
to Robotics & Machine Vision Toolboxes
Hi,

a saturation on the output is one thing which you 'need'to to. However, doing this, the Jacobian inverse (IK algorithm) still doesn't cope with the limits. So it will try to go in that saturated direction again in the next iteration.
Here are a few things you can try:
  • You can perform a weighted pseudo inverse, where the weighting is dependent of the current distance to each joint limit. For the first try, Use a diagonal weighting matrix. not that W = I  (eye) gives the same results as the normal pinv
  • you can use the internal motion of the robot (null space of the Jacobian) to avoid joint limits:
    So qdot = pinv(J)*xdot + null(J)*qd_limit. where qd_limit is a joint velocity which wants to stay away from the limits... i.e. go to the middle of the range and perferable weight them with the distance to the limit.
  • A combination of the above.

these methods work quite well, especially for redundant manipulators.

google these methods will give you plenty results which help you implement them.


Good luck,


Erik

Op woensdag 22 maart 2017 23:07:53 UTC+1 schreef Priyadarshini Ravichandran:

Priyadarshini Ravichandran

unread,
Mar 23, 2017, 7:59:21 AM3/23/17
to Robotics & Machine Vision Toolboxes
hi,
Thank you so much. so I have to use qdot=weighted pseudo inverse+null space(projected gradient) methods.

I have trouble in finding the weighting factors to be used in weighted pseudo inverse and 
qd_limit (or q0 = delq H(q) said in few books) and I have attached a file for null space method, please take a look (page no-21 and 22). do i have to use those formulas for null space method. 
Kinematic redundancy-2.pdf

Erik van Oene

unread,
Mar 26, 2017, 3:53:47 AM3/26/17
to Robotics & Machine Vision Toolboxes
Hi,

You found the right info!
The formula on page 21 is correct. However make sure that you use the weighted pinv for the r term and the normale pinv for the qnul term. For the weighting Matrix start with a diagonal matrix of ones (identity) and set one of them to a higher value, e.g. 100. You will see what will happen if you do so. If you get the picture you will know what to put on the diagonal as a function of the distance to the limits.

q0 is chosen to go away from the limits.. I.e. towards the middle of the range. On page 22 they give an example for this. However, note you have tot take the partial derivative of that formula as shown on page 21. I believe that qM en qm are resp. the upper and Lower limits and qi is the middel value of that range.

I am sure you will get it working! But to understand them better please try them seperatly. It gives a beter picture on there behavior.

Reply all
Reply to author
Forward
0 new messages