Transformed Axes - strChrisLee/openpnp GitHub Wiki
What is it?
Transformed axes take one Machine Axis as input and transform the coordinate into a new one. We are discussing these transformations as forward transformations here, in the sense as they are happening mechanically, from the raw actuator (motor) coordinate to the target coordinate for the machine component that is moved.
But of course, OpenPnP will internally also derive the reverse transformations, from the desired target coordinate for the machine component to be moved, back to the raw coordinate of the actuator (motor). However, you need not concern yourself with those (sometimes difficult) reverse transformations.
ReferenceMappedAxis
The ReferenceMappedAxis can take two coordinate points A and B on the input axis and map those to two corresponding output coordinate points. Any input coordinate is then proportionally interpolated/extrapolated using these two map points.
Using the ReferenceMappedAxis, you can scale, offset, negate or reverse any axis (and more).
Create an Axis
Create an axis in the Machine Setup tab.
Properties
Type and Name are the same as in the ReferenceControllerAxis.
The Type will restrict the input axes to the same Type i.e. only the coordinates are mapped, the geometric axis itself (dimension in space) remains the same.
Axis Mapping
Input Axis denotes the axis where the raw input coordinate is taken from.
Map Point A and Map Point B define the two mapped coordinate points. To explain let's make a few examples:
Negate an Axis
The zero point (origin) of the axis remains the same, but the unit 1 is mapped to unit -1, so proportionally any coordinate is mapped to its negative value.
This mapping can be used for a Rack&Pinion shared Z axis a.k.a. "Peter's Head". If one Nozzle goes up (+Z), the other goes down (-Z).
Image: Pick and place head dual nozzle by Betz Technik.
Reverse an Axis
If for some reason you have an axis that goes the wrong way, you can reverse it by mapping the axis coordinate maximum to the coordinate minimum and vice versa. The coordinates stay positive.
Offset an Axis
The following example adds 100mm to all the raw axis coordinates:
Scale an Axis
As a fantasy example, assume you have salvaged a controller from a printer that works in Twips. We therefore need to map 1440 twips to one inch but in the Driver's length unit Millimeters (25.4mm):
ReferenceCamCounterClockwiseAxis
The ReferenceCamCounterClockwiseAxis is used to transform shared Z axis that work in a seesaw or rocker configuration.
Type and Name are the same as in the ReferenceControllerAxis.
The Type will restrict the input axes to the same Type i.e. only the coordinates are mapped, the geometric axis itself (dimension in space) remains the same.
Input Axis denotes the axis where the raw input coordinate is taken from.
Cam Radius is the important parameter of this transformation. It defines the leverage with which the angular motion of the motor translates into the linear motion of the two nozzles that are typically attached to precision linear rails. One nozzle is pressed down, while the other is typically pulled up using a spring.
Cam Arms Angle defines the angle between the two arms. Normally, a 180° angle is used for straight-across arms. If the angle is 0°, it describes a one-armed design that always only pushes one side i.e nozzle at a time. Other "V-shaped" arms angles could be used to describe designs, that eliminate dead-time, that the 0° one-armed design has.
Cam Wheel Radius and Cam Wheel Gap (⚠️ deprecated) are physical properties of the mechanics. However, they both just add a constant offset to the transformation. Because we relate the target Z coordinate to the nozzle tip rather than the nozzle back (where the cam wheel pushes it), such an offset is not purposeful and you will simply end up compensating for it in the nozzle offset.
⚠️ It is highly recommended to leave both Cam Wheel Radius and Cam Wheel Gap at zero.
ReferenceCamClockwiseAxis
The ReferenceCamCounterClockwiseAxis is really easy. It just takes its sibling ReferenceCamCounterClockwiseAxis as input, the actual transformation is already parametrized there.
Using the Transformed Axis
The created axis can now be used like a physical axis when it comes to Mapping Axes.
Advanced Motion Control Topics
Motion Control
Machine Axes
- Machine Axes
- Backlash-Compensation
- Transformed Axes
- Linear Transformed Axes
- Mapping Axes
- Axis Interlock Actuator