Important changes in the next major release

27 Jun 2016 15:46 #76714 by andypugh
In a meeting last weekend it was decided to finally merge the "Joints_Axes" branch of LinuxCNC.
This is a fairly fundamental change to LinuxCNC that has been on the sidelines for something like 8 years.

The original EMC software was written with the assumption that the physical axes of the machine had a 1:1 relationship with the Cartesian axes in G-code. So an X-command from G-code goes directly to the X motor. This is OK for some milling machines, but is a bad fit for any non-cartesian robot and even causes problems with gantries.

This assumption lies behind some inconsistencies in the INI file, such that the axes are called [AXIS_0] for the X axis and that a machine with a C-axis (COORDINATES=XYZC) needs to be defined as having 6 joints (and needs dummy entries in the INI for all of them).

In the Joints_Axes branch there is a distinction made between the "Axes" (XYZ, AB, UVW) which are positions in space and the "Joints" which are the actual moving parts of the machine. Typically a joint is a revolving "elbow" in a robot or a sliding "Prismatic joint" like a lathe bed or mill column.

Joints_Axes allows you to have different numbers of joints and Axes. So a gantry machine can have 3 axes and 4 joints without any inconsistency problems. Also a lathe can be defined as an XZ machine with only two joints where X maps to joint 0, and Z to joint 1. (or, if desired, the other way round).

For gantry machines it is now very easy to say that (for example) joint 2 and joint 4 are both driven by Axis Y. A load-time parameter passed to the kinematics module from the HAL file determines whether the tandem joints can be jogged and homed separately.

Perhaps the biggest advantage of this is that the cartesian workspace limits and the joint limits can be different. This isn't a problem for a cartesian machine, but in the case of a hexapod or puma robot the two sets of limits are very different.

The change necessitates significant changes to the INI file format but there is a script that should (in most cases) automatically convert old-format INI files to the new format.

It is expected that the Master branch on the servers and Buildbot will be based on Joints_Axes later this week, this will probably be the subject of a separate announcement.

More details of the INI file changes here:
The following user(s) said Thank You: BigJohnT, Nick, Rick G, PKM, Todd Zuercher, joekline9, akb1212, tommylight, bkt, pommen and 2 other people also said thanks.

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

Time to create page: 0.131 seconds
Powered by Kunena Forum