-
Notifications
You must be signed in to change notification settings - Fork 296
9 Axis UVW Operation
As of firmware build {fb:101.00}
a limited form of 9 axis motion control has been added to g2. The U, V and W axes have been added as secondary linear axes corresponding to X, Y and Z, respectively. Externally visible axis numbers have been extended to accommodate UVW:
Axis | Axis # | Description (by convention) |
---|---|---|
X | 0 | +X motion moves left to right when facing the machine |
Y | 1 | +Y motion moves front to back when facing the machine |
Z | 2 | +Z motion moves up to the top when facing the machine; Z is by convention the tool-holding axis (cutting or actuating) |
A | 3 | +A rotates clockwise around X as viewed from the positive end (right side of the machine) |
B | 4 | +B rotates clockwise around Y as viewed from the positive end (back side of the machine) |
C | 5 | +C rotates clockwise around Z as viewed from the positive end (top of the machine) |
U | 6 | U is a secondary X axis and moves by the rules of the X axis |
V | 7 | V is a secondary Y axis and moves by the rules of the Y axis |
W | 8 | W is a secondary Z axis and moves by the rules of the Z axis |
Motors can be mapped to any of the 9 axes. This allows a machine to have as many as six linear axes that are independent of each other and obey coupled kinematics.
The primary use case for the UVW axes are to support a secondary 'Z' axis. Some machines have two toolheads - One can be operated as Z, the other as W.
-
Coordination Between XYZ and UVW Axes There is no coupling between the X/U, Y/V or Z/W axis pairs. I.e. they define independent linear axes. Movement in X will not change position in U, or vice versa.
-
The feedhold actions support Z lift only - they do not currently support movement in W as a feedhold action.
(Only useful if you are actually working in the code)
Legacy axis numbering is XYZABC as 0 through 5. Adding UVW by convention extend this to XYZABCUVW as 0 through 8.
This mapping is provided in g2core.h as the X_AXIS_EXTERNAL - W_AXIS_EXTERNAL enumeration. Settings files must use the external forms (as if they were being provided from an external interface).
Internally the 6 element axis array has been expanded to 9 elements ordered as [X,Y,Z,U,V,W,A,B,C]. This allows the lower 6 positions to carry the linear axes and the upper 3 the rotary axes. The main array can then be split into indexable linear and rotary sub-arrays.
Mapping between external and internal forms has been provided for data entry and display via the axis mapping set and get functions, which is the only place the API actually addresses axes by number. In the future we could make the AM parameter work to letter to make this even more transparent.
Getting Started Pages
- Home
- What is g2core?
- Who uses g2core?
- Jerk-Controlled Motion
- Getting Started with g2core
- Connecting to g2core
- Configuring g2core
- Flashing g2core
- Troubleshooting
Reference Pages
- Gcodes
- Mcodes
- Text Mode
- JSON Communications
- GPIO Digital IO
- Alarms & Exceptions
- Power Management
- Coordinate Systems
- Status Reports
- Status Codes
- G2 Communications
- Tool Offsets and Selection
- Probing
- Feedhold, Resume, Job Kill
- Marlin Compatibility
- 9 Axis UVW Operation
- gQuintic Specs
Discussion Topics
- Roadmap
- GPIO for 1.X Releases
- Toolheads
- Raster Streaming Prototol
- g2core REST Interface
- Gcode Parsing
- G2 3DP Dialect
- Consensus Gcode
- Digital DRO
- Overview of Motion Processing
Developer Pages
- Development & Contribution
- Branching and Release - DRAFT
- Getting Started with g2core Development
- Project Structure & Motate
- Compiling G2
- OSX w/Xcode
- OSX/Linux Command Line
- Windows10 w/AtmelStudio7
- Debugging G2 on OSX
- Board and Machine Profiles
- Arduino Due Pinout
- Arduino DUE External Interfaces
- Diagnostics
- Debugging w/Motate Pins
- Development Troubleshooting
- g2core Communications
- Git Procedures
- Windows 10 / VMware 8 Issues
- Dual Endpoint USB Internals
- G2core License
- VSCode Setup
- Compatibility Axioms
- Wiki History