Interface IMachineKinematics
Device for UniNc controller.
public interface IMachineKinematics
- Extension Methods
Methods
McAbcToMat(Vec3d)
Converts machine ABC coordinates to a tilt matrix. the tilt matrix is the transformation matrix from table to attacher.
Mat4d McAbcToMat(Vec3d mcAbc_rad)
Parameters
mcAbc_radVec3dThe machine ABC coordinates in radians
Returns
- Mat4d
The tilt matrix
McToMat(DVec3d)
Converts machine coordinates to an attacher matrix.
Mat4d McToMat(DVec3d mcXyzabc)
Parameters
mcXyzabcDVec3dThe machine coordinates
Returns
- Mat4d
The attacher matrix
McToPn(DVec3d)
Machine coordinate to tool attacher Pn (Point and Normal). The Pn is from table buckle to tool attacher.
DVec3d McToPn(DVec3d mcXyzabc)
Parameters
mcXyzabcDVec3dmachine coordinate. ABC is in radian.
Returns
- DVec3d
tool attacher Pn (Point and Normal)
OrientationToMcAbc(Mat4d, out Vec3d)
Converts a tilt matrix to machine ABC coordinates.
the tilt matrix is the transformation matrix from table to attacher.
the solution only fit the orientation part of the tiltMat.
bool OrientationToMcAbc(Mat4d tiltMat, out Vec3d mcAbc_rad)
Parameters
tiltMatMat4dThe tilt matrix to convert
mcAbc_radVec3dOutput parameter that will contain the machine ABC coordinates in radians
Returns
- bool
Whether the conversion was successful
OrientationToMcAbc(Mat4d, Func<Vec3d, bool>, out Vec3d)
OrientationToMcAbc(Mat4d, out Vec3d) restricted to the
rotary positions isMcAbcAdmissible accepts (the
machine's rotary travel, typically). A full orientation fixes the
rotary positions up to axis periodicity, so a solution the predicate
refuses is a posture this machine cannot take: the conversion then
fails (false) and leaves the solver state as it was, so that the
caller can fall back to OrientationToMcAbc(Vec3d, Func<Vec3d, bool>, out Vec3d),
where the free rotation about the tool axis opens the other branch.
A null predicate admits everything.
bool OrientationToMcAbc(Mat4d tiltMat, Func<Vec3d, bool> isMcAbcAdmissible, out Vec3d mcAbc_rad)
Parameters
tiltMatMat4dThe tilt matrix to convert.
isMcAbcAdmissibleFunc<Vec3d, bool>Accepts a machine ABC (radians) or refuses it; null admits everything.
mcAbc_radVec3dOutput machine ABC coordinates in radians.
Returns
- bool
Whether an admissible conversion was found.
OrientationToMcAbc(Vec3d, out Vec3d)
Converts a target tool axial direction (endpoint orientation) to machine ABC coordinates. Only the axial alignment is constrained; rotation about the tool axis is free.
Use this in place of OrientationToMcAbc(Mat4d, out Vec3d) when the
rotation about the tool axis is irrelevant (e.g. G53.1 rotary positioning). The
axial-only solve avoids the redundant 6-target full-matrix constraint and is more
likely to converge for tilt configurations such as G68.2 I180 J90 K0.
bool OrientationToMcAbc(Vec3d toolAxialNormal, out Vec3d mcAbc_rad)
Parameters
toolAxialNormalVec3dTarget tool axial direction in table coordinates (the third row of the tilt matrix; e.g. AxialNormal).
mcAbc_radVec3dOutput machine ABC coordinates in radians.
Returns
- bool
Whether the conversion was successful.
OrientationToMcAbc(Vec3d, Func<Vec3d, bool>, out Vec3d)
OrientationToMcAbc(Vec3d, out Vec3d) preferring the
solution branch isMcAbcAdmissible accepts. The
axial-only problem has two branches on a two-rotary-axis machine
(on a table-table A/C: (A, C) and (−A, C+180°)); the plain overload
returns the branch nearest the solver's seed, which from the rotary
pole (A0 C0) is the one the tilt's azimuth happens to favour — half
the time the branch a cradle table with an asymmetric tilt travel
cannot reach (CHEM20180926 N100: G68.2 I210 J-90 + G53.1
solved to A=+90° on a −120°…+30° A axis). When the nearest branch is
refused, an implementation with a real solver searches the other
branches and returns the admissible one nearest the seed; when none
is admissible it returns the refused solution and true, and the
stroke-limit check downstream reports it. A null predicate makes this
the plain overload. The default implementation is the plain solve —
the predicate is advisory for an implementation without a solver.
bool OrientationToMcAbc(Vec3d toolAxialNormal, Func<Vec3d, bool> isMcAbcAdmissible, out Vec3d mcAbc_rad)
Parameters
toolAxialNormalVec3dTarget tool axial direction in table coordinates.
isMcAbcAdmissibleFunc<Vec3d, bool>Accepts a machine ABC (radians) or refuses it; null admits everything.
mcAbc_radVec3dOutput machine ABC coordinates in radians.
Returns
- bool
Whether the conversion was successful (admissible or not).
PnToMc(DVec3d, out DVec3d)
Tool attacher Pn (Point and Normal) to machine coordinate. The Pn is from table buckle to tool attacher.
bool PnToMc(DVec3d pn, out DVec3d mcXyzabc_rad)
Parameters
pnDVec3dtool attacher Pn (Point and Normal)
mcXyzabc_radDVec3dmachine coordinate (ABC in radian)
Returns
- bool
whether conversion succeeded