- Posts: 53
- Thank you received: 0
Puma 560 simulation using pumakins
Before I'm ready with the boards I'm trying to setup the right kinematics. For this I installed the Puma 560 simulation (e.g. from github linuxcnc/configs/puma with the nice simulation window.
The configuration uses the general genserkins kinematics with hal parameters for the Puma 560. Basically it works but it has some issues. The source code of the genserkins seems to be very complicated if you don't understand the DH logic. Additionally it freezes the whole LinuxCNC if the robot comming to a singularity (or somethimes out of range). Only a restart of the whole system can solve it.
I tried to exchange the genserkins with the pumakins kinematics and uses the default parameters for pumakins. The pumakins looks a lot easier and does not freezes the systems in the situations out of range/singularity.
Unfortunately I missed to set up correctly. If I try simple G1 moves in Axis (e.g. G1 X100 F100) it does not do a linear move on the X-axis but a move in all axis X,Y,Z (incorrect move). Additionally the F100 is much much slower than with the genserkins. For me it looks like an error in the setup (e.g. parameters). All the parameter A2, A3, D3, D4 I found in the internet for the pumakins are the same as the default values.
Unfortunately I do not understand enough of the LinuxCNC, DH kinematics approach and how to use genserkins and pumakins to find the issue.
Any help appreiciated.
Please Log in to join the conversation.
robottom wrote: Unfortunately I missed to set up correctly. If I try simple G1 moves in Axis (e.g. G1 X100 F100) it does not do a linear move on the X-axis but a move in all axis X,Y,Z (incorrect move).
Are you sure that this is incorrect?
There are two operation modes, "Joint Mode" and "World Mode". In the former mode you can move a single joint, and all moves will be arcs in XYZ space. In the latter mode the moves will be straight lines in XYZ space and more than one motor will move.
So, it might just be that you are not in the mode you think you are in.
Please Log in to join the conversation.
The correct diplay in the AXIS GUI I guess is only because the direct kinematics fits to the inverse kinematics. So any kinematics of any robot would lead to the same result. But the wrong move in the simulation window leads me to the conclusion that there is something wrong (e.g. the calculated join values for the Puma are not fitting to the requested move). Or is my conclusion wrong?
Please Log in to join the conversation.
robottom wrote: The correct diplay in the AXIS GUI I guess is only because the direct kinematics fits to the inverse kinematics. So any kinematics of any robot would lead to the same result. But the wrong move in the simulation window leads me to the conclusion that there is something wrong (e.g. the calculated join values for the Puma are not fitting to the requested move). Or is my conclusion wrong?
Do the joint-lengths in the pumakins setup match the "physical" joint lengths in the Vismach model? If the Axis display and the Vismach model display disagree then this seems like the most likely explanation.
Please Log in to join the conversation.
I don't understand enough of the Vismach and the DH convention of the kinematics (genserkins and the pumakins) to judge where the issue is. If I compare the parameter Setup for the genserkins and the pumakins I don't see how this can match.
The genserkins Parameters are:
setp genserkins.A-0 0
setp genserkins.A-1 0
setp genserkins.A-2 17
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 26.45
setp genserkins.D-1 -5.5
setp genserkins.D-2 0
setp genserkins.D-3 17.05
setp genserkins.D-4 0
setp genserkins.D-5 2.2
and Defaults for the pumakins are only:
/* the default values for a PUMA 560 type robot, these can be changed as HAL parameters */
#define DEFAULT_PUMA560_A2 300.0
#define DEFAULT_PUMA560_A3 50.0
#define DEFAULT_PUMA560_D3 70.0
#define DEFAULT_PUMA560_D4 400.0
just take the A2, A3, D3, D4 from the genserkins and put it in the corresponding Parameters of the pumakins is not working (no surprise). Any other idea. The pumakins Parameters are the only I could find.
Please Log in to join the conversation.
git.linuxcnc.org/gitweb?p=linuxcnc.git;a...194a4d06bed8a3a42d1f
Please Log in to join the conversation.
I think you have to read a Hal & Integrator manual, the key is in the Signal's HAL. I am currently working with a real Robotic Arm, and I got link 1 DOF of my Robotic Arm with Vismach simulation (PUMA 560). It's easy, but you must read a properly documentation. Regards.
Please Log in to join the conversation.
sorry for my late reply. Thanks for your comments. Can you please give me some more hints where you would expect the issue or mismatch? To my best knowledge the Signal's HAL is basically caring about the definition of the signals and how they are wired up.
This part of the configuartion is the same for both kinematics modules I'm using. I just reuse all parts of the working configuration with the working kinematics (genserkins). I only exchanged the kinematics module to the simpler one (pumakins). Currently I don't see where the HAL signals could have an influence on this. The input/output for the kinematics is just the joint angles and the coordinates (depending on the direction of the kinematics: direct or inverse).
Maybe there is a mismatch with the home coordinates and home joint angles for the different modules - what do you think?
Please Log in to join the conversation.
I dont klnow if you still need help about this topic. Anyway, this is like I did the link with vismach and one servomotor(with enconder and gecko drive). Only remember that the acis scale chages with the gear relation between motor and joint.
Regards.
Please Log in to join the conversation.
thanks a lot for your reply. Still I need some help. In the meanwhile I have connected all the 6 axis of my Puma robot arm to the linuxcnc and this is basically working fine (my real robot arm and the simulation is running simultaneously). So I don't think that there is any issue with the HAL connections. I can control the robot with G-code commands. But my current issue is very similar to the original one:
When I do straight moves in the x- or y- direction the Puma in the simulation is doing a straight move and my Puma is slightly deviating from a straight line. Also the length of the move is not the same as indicated in the G1 command (e.g. a 800mm move is on the real Puma a 900mm move). Only a move in the z-directions seems to be correct (straight line and correct length - roughly measured).
I also checked the single joint controls in LinuxCNC and it seems that the settings for axis seems to be correct (gear relation, resolution of the encoder). There a 90 degree move is also a 90 degree on the puma.
I assume that there is either an issue with the genserkins calculation or the parameter set is no fitting with my Puma. I'm owning 3 Puma arms from different productions (an old brown one (I guess before 1985), a white one when the company was just taken over by Stäubli (end of 80th - I guess 1988) and a newer one that is slightly different in the construction (from 1992 - I guess one of the last models). From the dimensions they all seems to be the same (or very similar - hard to measure with normal measurement possibilities).
Since the x,y having issues while the z seems to work as intended it looks like the parameters for joint 1 might cause trouble. But I can't find the issue there. I took the same parameters as in your hal file (same as you can find nearly everwhere in the net).
Any hints you can give to find the root cause.
Many thanks, Thomas
Please Log in to join the conversation.
