Issues with Geneserkins and trajectory planning

More
03 Oct 2016 11:12 #81173 by robottom
Hi,

I'm using a Puma 560 robot with linuxcnc using genserkins as the kinematics module. So far it is working successfully if I'm only working with world coordinates XYZ. The moves are correct and the TCP orientation stays stable.
For my next project I need to control the hand/TCP orientation angles (ABC) with coordinates/angles but the kinematics module together with the trajectory planning causes trouble (at least I do not understand what is going wrong).
To understand the things first before going to the real robot I'm using the Puma 560 simulation that comes with linuxcnc (using the standard version of genserkins). My setting is on mm (not inch) and using the following mm config for the genserkins (as on my robot):
setp genserkins.A-0 0
setp genserkins.A-1 0
setp genserkins.A-2 431.8
setp genserkins.A-3 0
setp genserkins.A-4 0
setp genserkins.A-5 0

setp genserkins.ALPHA-0 0
setp genserkins.ALPHA-1 1.570796326
setp genserkins.ALPHA-2 0
setp genserkins.ALPHA-3 1.570796326
setp genserkins.ALPHA-4 -1.570796326
setp genserkins.ALPHA-5 1.570796326

setp genserkins.D-0 671.83
setp genserkins.D-1 -149.09
setp genserkins.D-2 0
setp genserkins.D-3 433.07
setp genserkins.D-4 0
setp genserkins.D-5 56.25

After starting and homing the JT1-6 are at (0,0,0,0,90,0) - standard configuration. The world coordinates are on XYZABC: (488.05, 149.09, 238.76, 91.222, -90.0, 88.778)
When I now want to move the hand to the right (from the simulation front view) via:
G0 A0.1 B-90 C88.7 it ends up with a XYZABC config of (488.05, 149.09, 238.76, 137.976, -90.0, -49.187). This might be a similar position but the behavior is somehow strange. When I now enter G0 A137.976 B-90 C-49.187 F1500 linuxcnc does not recognize that it is already there (or do a very little move) but shows a DTG on A and C of >130 and moves the 2 values to 143.488 and -55.577. All this might be similar positions and might be acceptable.
In other cases I got moves where JT4 really is doing a 360 deg. turn what is not acceptable on the real robot. Afterwards also the behavior of B-values result in totally different changes of the joints even having the same starting point. Overall I don't know what is actually going on.
Is there something wrong with genserkins or something wrong with my understanding?
How is the trajectory planning working when I enter a G0 command that should not result in any move but actually doing something? How does this system is calculating a DTG>0 in this case and really planning a move? One explanation might be that my G0 command is feeded into the direct kinematics subroutine what calculates a different result on the JT angles than the current position is. This would mean the direct kinematics and the inverse kinematics calculating different results - or if I put in some parameters into direct kinematics and put the outcome into the inverse kinematics it comes very often to different results than my initial parameters. I'm getting these issues with different setups and the moves are also not changes the basic orientation of the robot (e.g. lefty/righty ...). This happens also for positions where no singularity are near by. (I tried the same using XYZABC values that differ from 0,90 or 180 degeree to prevent singularities).
I'm confused on the behavior and not sure how I can translate my hand orientation coordinates correctly into ABC so the robot is doing what I want him to do.

Please Log in or Create an account to join the conversation.

Time to create page: 0.083 seconds
Powered by Kunena Forum