Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
RoboDK-Matlab robot configuration
#1
Sometimes when robot is moving on a specific path we get a sudden change of configuration because it goes through singularity. I would like to try to fix a desired robot configuration for some tasks with the help of RoboDK API for Matlab. 

When I am calculating Inverse kinematics in Matlab I get 8 unique solutions, but when I use RoboDK IK solver I get up to 21 solutions. So my first question is, how can I return only 8 unique solutions with robodk ik solver into Matlab? Then I went checking how robodk is showing different configurations. Please take a look at the attached document and confirm if my intepration is correct (with those green lights).

For the last question. It seems that there is already a solution for Python which can recognize different configurations (last page in the attached document). Is it possible to implement this in Matlab? If not, where can I find the program which uses function JointsConfig?

To summarize. When I get 8 unique IK solutions I would like to know for each solution in which configuration (f,r,u,d,f,nf) the robot is (in Matlab). I am already trying to manually limit joints for each configuration, but I think RoboDK can handle this better.


Thank you in advance. Best regards.

I solved the first question. I put a limit on joints from -180 to +180 in Robodk and now it returns only 8 unique solutions. Now I only need to classify those solutions - extract configuration.


Attached Files
.pdf   robodk ik en.pdf (Size: 301.17 KB / Downloads: 15)
#2
Solved also other questions. Sorry for unnecessary posting. At the end it was quite a simple program. I'll write the solution if anyone will be facing with the same problem.
Since I was using UR5 I checked its singular values. We have wrist singularity, elbow singularity and shoulder singularity. Most uncomfortable is shoulder singularity, I will not write this in details because it is better explained in this link: https://www.mecademic.com/en/what-are-si...-robot-arm .

From the programming point of view, for Shoulder singularity you have to check if x value is positive or negative in Transformation matrix T5_1= inv(T1_0)*T5_0
T5_1- transformation from Joint5 to Joint1
T1_0- inverse transformation from Joint1 to base (I wrote T, but it is actually matrix A which we get from DH parameters where each subsequent matrix is based on previous one, but here it is the same as T because we are looking at the base)
T5_0- transformation from Joint5 to base (you get this values from FK solver - T1,T2,T3,T4,T5,T6, they are all relative to base)

For Elbow singularity we just check if Joint3 is positive/negative and the same goes for Wrist singularity where we check Joint5. Calculation is working and I get returned the same configuration as in RoboDK. It would still be nice to test this Python version.
  




Users browsing this thread:
1 Guest(s)