general questions about 6dof system
- sibelius
- Topic Author
- Visitor
I was thinking for a while to build out of aluminium a 6dof manipulator with the intention to equip this robot with a spindle for wood carving porpoise.
So over time I drew different type of robots trying to minimize costs of materials, maximize simplicity, rigidity and payload accordingly with my potential capacity to physically build the machine.
My porpoise is actually not to build a toy but a working industrial machine with the same philosophy that guide me in the realization of my 3d router.
Anyway I was thinking to use linuxCNC and a mesa card 7i76e with additional modules that help me to control the robot.
In my understanding linuxCNC can control up to 9 axis and the robot has only 6 axis so linuxCNC should not have any particular problem in controlling the robot.
Now some questions.
Do you think mesa card with some addiction modules could be suitable for such type of controller?
Can anyone suggest some documentation on this topic?
Can I find somewhere an hal example of this kind of kinematic ?
Does linuxCNC build the kinematic to control the robot in the same way build the kinematic for a router after homing the joints?
Well I have to many questions that I cannot fit in one single post so I think I have to face one problem at the time.
Thanks in advance for any help.
Regards,
V.
Please Log in or Create an account to join the conversation.
- tommylight
- Online
- Moderator
- Posts: 19485
- Thank you received: 6533
It can do 9 axis but each of those axis can also have more than one joint or motor per axis, i think 8 but not sure.
Do a search for scara and puma there are some robots working under LinuxCNC control on this forum, there are also simulations of them included with LinuxCNC, so download the ISO from the downloads in the main page and write it to a USB using win32diskimager, boot the PC from it and test as much as you like, it will not delete the hard drive as a Live session. Oh and it also has 3D animation of those robots and what they are actually doing when moving them.
Please Log in or Create an account to join the conversation.
- sibelius
- Topic Author
- Visitor
Beautiful, I will have a go.
Regards,
V.
Please Log in or Create an account to join the conversation.
- Aciera
- Offline
- Administrator
- Posts: 4025
- Thank you received: 1734
forum.linuxcnc.org/10-advanced-configura...nfig-with-simulation
It works but with severe limitations. I would say that it can handle simple tasks like materials handling. But for anything that needs the tool to follow exact trajectories at constant speeds (as in 3D milling) I think we are still a long way from a usable solution.
If I were to build a 3D milling machine I would tend to prefer a more conventional kinematics with cartesian XYZ and rotary AB. One of the main reasons being the availability of CAD/CAM systems to create GCODE that can be used in LCNC.
Please Log in or Create an account to join the conversation.
- andypugh
- Offline
- Moderator
- Posts: 23170
- Thank you received: 4860
It works but with severe limitations..
What are the limitations? With the correct kinematics a LinuxCNC robot should simply run G-code in XYZABC space.
It is certainly _meant_ to work that way.
Please Log in or Create an account to join the conversation.
- sibelius
- Topic Author
- Visitor
Thanks for your help.
I need to read much more on this topic; I know the mathematics behind and actually my main problem so far is in the physical realization of the robot.
My router is capable to machine aluminum but I never did so this is a long journey.
My approach is to go little steps at the time in the hope that the direction I am going is the right one.
In any case I will post here any step or question that will eventually comes.
Thanks again for your contribution.
Regards,
V.
Please Log in or Create an account to join the conversation.
- sibelius
- Topic Author
- Visitor
I understood.
Regards,
V.
Please Log in or Create an account to join the conversation.
- Aciera
- Offline
- Administrator
- Posts: 4025
- Thank you received: 1734
Unfortunately it's not quite as simple as that when it comes to serial manipulators.What are the limitations? With the correct kinematics a LinuxCNC robot should simply run G-code in XYZABC space.
It is certainly _meant_ to work that way.
These are limitations that I am certain about:
1. Limitation: We need to be able to switch kinematics from inside gcode and we cannot do that in regular LinuxCNC-master. We need to build Dewey Garrett's 'switch-kins-branch' since his work was not allowed to be merged with master. So we are already out on a limb. (This by the way was developed for the use in 5-axis machining so it's by no means limited to serial manipulators)
Why do we need to be able to switch kinematics?
Because due to the mathematical model used to calculate the joint positions for a requested position and orientation in cartesian space (ie the inverse kinematic) there are discontinuities in the results (gimbal lock, singularities) that the physical robot simply cannot execute. This is NOT limited to LinuxCNC it plagues ALL robot contollers and manufacturers have spent millions trying to get a handle on this. So what this means is that we cannot use a robot properly just by using the correct kinematics because we KNOW that the inverse kinematics WILL fail in certain areas of the work envelope.
Because the calculation of the position and orientation for a given set of joint angles (ie the forward kinematic) is not plagued by such problems we can always control the robot by commanding joint angles directly and the kinematic model will accurately calculate the cartesian values. But this means that we need to be able to switch from our (non-trivial) kinematic that needs to fit our robot model to the trivial kinematics that maps the XYZABC of our gcode to the joints. (Note that velocity and acceleration limit also need to be changed when switching the kinematics, but this can be handled in HAL)
2. Limitation: The Kinematic (genserkins) used in LinuxCNC
I found that the inverse kinematic model in genserkins is less robust that what is available in other software like ROS or RoboDK. This means that, even if you write a post processor to translate the output of a more powerful 3rd party software the generated GCODE will likely not work because genserkins inverse kinematic model fails.
3. Limitation: The motion planner in LinuxCNC knows nothing about the kinematics used.
Because the motion planner does not take the kinematics into account there can be no look ahead in the gcode to check for limit violations. It should however stop code execution with an error when reaching a line that would exceed a Joint limit.
4. Limitation: There is no jerk control in LinuxCNC
For a robot and particularly a larger one the lack of jerk limitation will limit your acceleration.
These are limitations that I'm not entirely sure about as I don't have enough insight into LinuxCNC source code:
- As I understand it the new motion planner will fall back to one line look ahead for anything other than XYZ moves.
- Not sure if LinuxCNC really handles the definitions of joints as LINEAR or ANGULAR correctly as it seems that linear speeds always apply to XYZ and angular to ABC regardless of the definition in the INI.
Please Log in or Create an account to join the conversation.
- Roiki
- Offline
- Premium Member
- Posts: 116
- Thank you received: 19
Forward kinematics is the most basic control. No tcp or coordinated moves. Putting all this in would require a big rewrite of the underlying code base.
Please Log in or Create an account to join the conversation.
- andypugh
- Offline
- Moderator
- Posts: 23170
- Thank you received: 4860
It has several kinematics modules that solve forward and reverse kins. Genserkins might be a bit brittle, but it exists. I think that Pumakins is less brittle, but less adapable, and there is Scarakins too, which I think "just works".You're about right. Linuxcnc currently has no inverse kinematics solver for robots
posemath contains quaternion supporttheres no radian or quarternion support.
github.com/LinuxCNC/linuxcnc/blob/2e75b0.../posemath/posemath.h
And TCP _is_ supported.
Please Log in or Create an account to join the conversation.