Skip to content

Commit 8a76e65

Browse files
committed
kinematics: Use 64-bit HAL interface and adhere to new naming scheme.
1 parent d970a6b commit 8a76e65

23 files changed

Lines changed: 194 additions & 161 deletions

‎include/kins_module.h‎

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@
1313
#define __LINUXCNC_KINS_MODULE_H
1414

1515
#include "kinematics.h"
16+
#include "rtapi_stdint.h"
17+
#include "rtapi_bool.h"
18+
1619

1720
#ifdef __cplusplus
1821
extern "C" {
@@ -252,10 +255,10 @@ extern int identityKinematicsJacobian(const double *joint,
252255
#define KINS_MAX_TYPES SWITCHKINS_MAX_TYPES
253256

254257
typedef enum {
255-
KINS_PARAM_FLOAT = 0,
256-
KINS_PARAM_BIT,
257-
KINS_PARAM_S32,
258-
KINS_PARAM_U32
258+
KINS_PARAM_REAL = 0,
259+
KINS_PARAM_BOOL,
260+
KINS_PARAM_SINT,
261+
KINS_PARAM_UINT,
259262
} kins_param_type;
260263

261264
typedef enum {
@@ -274,7 +277,15 @@ typedef struct kins_param_desc_tag {
274277
kins_param_type type;
275278
kins_param_dir dir;
276279
int tool;
277-
double dflt;
280+
// Assigning to the dflt union: If '{}' braces are omitted at init
281+
// then the compiler will give a warning 'missing braces' and the
282+
// value is stored as boolean because it is the first in the list.
283+
union {
284+
rtapi_bool b;
285+
rtapi_real r;
286+
rtapi_sint s;
287+
rtapi_uint u;
288+
} dflt;
278289
} kins_param_desc;
279290

280291
/* The machine, as far as the kinematics is concerned. One copy may be

‎src/emc/kinematics/5axiskins.c‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@
6363

6464
// the geometry, one pin each; the maths reads it from the block
6565
static const kins_param_desc fiveaxis_params[] = {
66-
{ "pivot-length", KINS_PARAM_FLOAT, KINS_IN, 0, DEFAULT_PIVOT_LENGTH },
67-
{ "tool-length", KINS_PARAM_FLOAT, KINS_IN, 1, 0.0 },
66+
{ "pivot-length", KINS_PARAM_REAL, KINS_IN, 0, {.r=DEFAULT_PIVOT_LENGTH} },
67+
{ "tool-length", KINS_PARAM_REAL, KINS_IN, 1, {.r=0.0} },
6868
};
6969
enum { P_PIVOT_LENGTH, P_TOOL_LENGTH };
7070

‎src/emc/kinematics/genhexkins.c‎

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -150,19 +150,19 @@ enum {
150150
};
151151

152152
#define STRUT_ROWS(i, bx, by, bz, px, py, pz, bnx, bny, bnz, pnx, pny, pnz) \
153-
{ "base." #i ".x", KINS_PARAM_FLOAT, KINS_IN, 0, bx }, \
154-
{ "base." #i ".y", KINS_PARAM_FLOAT, KINS_IN, 0, by }, \
155-
{ "base." #i ".z", KINS_PARAM_FLOAT, KINS_IN, 0, bz }, \
156-
{ "platform." #i ".x", KINS_PARAM_FLOAT, KINS_IN, 0, px }, \
157-
{ "platform." #i ".y", KINS_PARAM_FLOAT, KINS_IN, 0, py }, \
158-
{ "platform." #i ".z", KINS_PARAM_FLOAT, KINS_IN, 0, pz }, \
159-
{ "base-n." #i ".x", KINS_PARAM_FLOAT, KINS_IN, 0, bnx }, \
160-
{ "base-n." #i ".y", KINS_PARAM_FLOAT, KINS_IN, 0, bny }, \
161-
{ "base-n." #i ".z", KINS_PARAM_FLOAT, KINS_IN, 0, bnz }, \
162-
{ "platform-n." #i ".x", KINS_PARAM_FLOAT, KINS_IN, 0, pnx }, \
163-
{ "platform-n." #i ".y", KINS_PARAM_FLOAT, KINS_IN, 0, pny }, \
164-
{ "platform-n." #i ".z", KINS_PARAM_FLOAT, KINS_IN, 0, pnz }, \
165-
{ "correction." #i, KINS_PARAM_FLOAT, KINS_OUT, 0, 0.0 }
153+
{ "base." #i ".x", KINS_PARAM_REAL, KINS_IN, 0, {.r=bx} }, \
154+
{ "base." #i ".y", KINS_PARAM_REAL, KINS_IN, 0, {.r=by} }, \
155+
{ "base." #i ".z", KINS_PARAM_REAL, KINS_IN, 0, {.r=bz} }, \
156+
{ "platform." #i ".x", KINS_PARAM_REAL, KINS_IN, 0, {.r=px} }, \
157+
{ "platform." #i ".y", KINS_PARAM_REAL, KINS_IN, 0, {.r=py} }, \
158+
{ "platform." #i ".z", KINS_PARAM_REAL, KINS_IN, 0, {.r=pz} }, \
159+
{ "base-n." #i ".x", KINS_PARAM_REAL, KINS_IN, 0, {.r=bnx} }, \
160+
{ "base-n." #i ".y", KINS_PARAM_REAL, KINS_IN, 0, {.r=bny} }, \
161+
{ "base-n." #i ".z", KINS_PARAM_REAL, KINS_IN, 0, {.r=bnz} }, \
162+
{ "platform-n." #i ".x", KINS_PARAM_REAL, KINS_IN, 0, {.r=pnx} }, \
163+
{ "platform-n." #i ".y", KINS_PARAM_REAL, KINS_IN, 0, {.r=pny} }, \
164+
{ "platform-n." #i ".z", KINS_PARAM_REAL, KINS_IN, 0, {.r=pnz} }, \
165+
{ "correction." #i, KINS_PARAM_REAL, KINS_OUT, 0, {.r=0.0} }
166166

167167
static const kins_param_desc genhex_params[P_COUNT] = {
168168
STRUT_ROWS(0, DEFAULT_BASE_0_X, DEFAULT_BASE_0_Y, DEFAULT_BASE_0_Z,
@@ -189,23 +189,23 @@ static const kins_param_desc genhex_params[P_COUNT] = {
189189
DEFAULT_PLATFORM_5_X, DEFAULT_PLATFORM_5_Y, DEFAULT_PLATFORM_5_Z,
190190
DEFAULT_BASE_5_NX, DEFAULT_BASE_5_NY, DEFAULT_BASE_5_NZ,
191191
DEFAULT_PLATFORM_5_NX, DEFAULT_PLATFORM_5_NY, DEFAULT_PLATFORM_5_NZ),
192-
[P_LAST_ITER] = { "last-iterations", KINS_PARAM_U32, KINS_OUT, 0, 0 },
193-
[P_MAX_ITER] = { "max-iterations", KINS_PARAM_U32, KINS_OUT, 0, 0 },
194-
[P_MAX_ERROR] = { "max-error", KINS_PARAM_FLOAT, KINS_IN, 0, 500.0 },
195-
[P_CONV_CRITERION] = { "convergence-criterion", KINS_PARAM_FLOAT, KINS_IN, 0, 1e-9 },
196-
[P_ITER_LIMIT] = { "limit-iterations", KINS_PARAM_U32, KINS_IN, 0, 120 },
197-
[P_TOOL_OFFSET] = { "tool-offset", KINS_PARAM_FLOAT, KINS_IN, 1, 0.0 },
198-
[P_SPINDLE_OFFSET] = { "spindle-offset", KINS_PARAM_FLOAT, KINS_IN, 0, 0.0 },
199-
[P_SCREW_LEAD] = { "screw-lead", KINS_PARAM_FLOAT, KINS_IN, 0, DEFAULT_SCREW_LEAD },
192+
[P_LAST_ITER] = { "last-iterations", KINS_PARAM_UINT, KINS_OUT, 0, {.u=0} },
193+
[P_MAX_ITER] = { "max-iterations", KINS_PARAM_UINT, KINS_OUT, 0, {.u=0} },
194+
[P_MAX_ERROR] = { "max-error", KINS_PARAM_REAL, KINS_IN, 0, {.r=500.0} },
195+
[P_CONV_CRITERION] = { "convergence-criterion", KINS_PARAM_REAL, KINS_IN, 0, {.r=1e-9} },
196+
[P_ITER_LIMIT] = { "limit-iterations", KINS_PARAM_UINT, KINS_IN, 0, {.u=120} },
197+
[P_TOOL_OFFSET] = { "tool-offset", KINS_PARAM_REAL, KINS_IN, 1, {.r=0.0} },
198+
[P_SPINDLE_OFFSET] = { "spindle-offset", KINS_PARAM_REAL, KINS_IN, 0, {.r=0.0} },
199+
[P_SCREW_LEAD] = { "screw-lead", KINS_PARAM_REAL, KINS_IN, 0, {.r=DEFAULT_SCREW_LEAD} },
200200
// the pose the forward found, for a vismach gui; switchkins provides
201201
// the skgui.* pins for the same purpose
202-
[P_GUI_X] = { "x", KINS_PARAM_FLOAT, KINS_OUT, 0, 0.0 },
203-
[P_GUI_Y] = { "y", KINS_PARAM_FLOAT, KINS_OUT, 0, 0.0 },
204-
[P_GUI_Z] = { "z", KINS_PARAM_FLOAT, KINS_OUT, 0, 0.0 },
205-
[P_GUI_A] = { "a", KINS_PARAM_FLOAT, KINS_OUT, 0, 0.0 },
206-
[P_GUI_B] = { "b", KINS_PARAM_FLOAT, KINS_OUT, 0, 0.0 },
207-
[P_GUI_C] = { "c", KINS_PARAM_FLOAT, KINS_OUT, 0, 0.0 },
208-
[P_FWD_FAIL] = { "fwd-kins-fail", KINS_PARAM_BIT, KINS_OUT, 0, 0 },
202+
[P_GUI_X] = { "x", KINS_PARAM_REAL, KINS_OUT, 0, {.r=0.0} },
203+
[P_GUI_Y] = { "y", KINS_PARAM_REAL, KINS_OUT, 0, {.r=0.0} },
204+
[P_GUI_Z] = { "z", KINS_PARAM_REAL, KINS_OUT, 0, {.r=0.0} },
205+
[P_GUI_A] = { "a", KINS_PARAM_REAL, KINS_OUT, 0, {.r=0.0} },
206+
[P_GUI_B] = { "b", KINS_PARAM_REAL, KINS_OUT, 0, {.r=0.0} },
207+
[P_GUI_C] = { "c", KINS_PARAM_REAL, KINS_OUT, 0, {.r=0.0} },
208+
[P_FWD_FAIL] = { "fwd-kins-fail", KINS_PARAM_BOOL, KINS_OUT, 0, {.b=0} },
209209
};
210210

211211
// the most iterations a converged solution has taken this session, kept

‎src/emc/kinematics/genserfuncs.c‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,10 @@ enum {
6868
};
6969

7070
#define JOINT_ROWS(i, a, alpha, d) \
71-
{ "A-" #i, KINS_PARAM_FLOAT, KINS_IN, 0, a }, \
72-
{ "ALPHA-" #i, KINS_PARAM_FLOAT, KINS_IN, 0, alpha }, \
73-
{ "D-" #i, KINS_PARAM_FLOAT, KINS_IN, 0, d }, \
74-
{ "unrotate-" #i, KINS_PARAM_S32, KINS_IN, 0, 0 }
71+
{ "A-" #i, KINS_PARAM_REAL, KINS_IN, 0, {.r=a} }, \
72+
{ "ALPHA-" #i, KINS_PARAM_REAL, KINS_IN, 0, {.r=alpha} }, \
73+
{ "D-" #i, KINS_PARAM_REAL, KINS_IN, 0, {.r=d} }, \
74+
{ "unrotate-" #i, KINS_PARAM_SINT, KINS_IN, 0, {.s=0} }
7575

7676
const kins_param_desc GENSER_PARAMS[P_COUNT] = {
7777
JOINT_ROWS(0, DEFAULT_A1, DEFAULT_ALPHA1, DEFAULT_D1),
@@ -80,8 +80,8 @@ const kins_param_desc GENSER_PARAMS[P_COUNT] = {
8080
JOINT_ROWS(3, DEFAULT_A4, DEFAULT_ALPHA4, DEFAULT_D4),
8181
JOINT_ROWS(4, DEFAULT_A5, DEFAULT_ALPHA5, DEFAULT_D5),
8282
JOINT_ROWS(5, DEFAULT_A6, DEFAULT_ALPHA6, DEFAULT_D6),
83-
[P_LAST_ITER] = { "last-iterations", KINS_PARAM_U32, KINS_OUT, 0, 0 },
84-
[P_MAX_ITER] = { "max-iterations", KINS_PARAM_U32, KINS_IN, 0, GENSER_DEFAULT_MAX_ITERATIONS },
83+
[P_LAST_ITER] = { "last-iterations", KINS_PARAM_UINT, KINS_OUT, 0, {.u=0} },
84+
[P_MAX_ITER] = { "max-iterations", KINS_PARAM_UINT, KINS_IN, 0, {.u=GENSER_DEFAULT_MAX_ITERATIONS} },
8585
};
8686
const int GENSER_NPARAMS = P_COUNT;
8787

‎src/emc/kinematics/kins_util.c‎

Lines changed: 41 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1532,8 +1532,16 @@ int kinsParamsInit(kins_params *p,
15321532
return -1;
15331533
}
15341534
for (i = 0; i < info->nparams; i++) {
1535-
p->geometry[i] = info->params[i].dflt;
1536-
if (info->params[i].tool) { p->tool.tran.z = info->params[i].dflt; }
1535+
double v;
1536+
switch(info->params[i].type) {
1537+
case KINS_PARAM_REAL: v = info->params[i].dflt.r; break;
1538+
case KINS_PARAM_BOOL: v = info->params[i].dflt.b ? 1.0 : 0.0; break;
1539+
case KINS_PARAM_SINT: v = info->params[i].dflt.s; break;
1540+
case KINS_PARAM_UINT: v = info->params[i].dflt.u; break;
1541+
default: v = 0.0; break;
1542+
}
1543+
p->geometry[i] = v;
1544+
if (info->params[i].tool) { p->tool.tran.z = v; }
15371545
}
15381546
return 0;
15391547
} // kinsParamsInit()
@@ -1789,17 +1797,17 @@ int kinsParamsPinsCreate(int comp_id, const char *prefix,
17891797
const kins_param_desc *d = &params[i];
17901798
hal_pdir_t dir = d->dir == KINS_OUT ? HAL_OUT : d->dir == KINS_IO ? HAL_IO : HAL_IN;
17911799
switch (d->type) {
1792-
case KINS_PARAM_FLOAT:
1793-
res += hal_pin_new_real(comp_id, dir, &pins[i].r, d->dflt, "%s.%s", prefix, d->name);
1800+
case KINS_PARAM_REAL:
1801+
res += hal_pin_new_real(comp_id, dir, &pins[i].r, d->dflt.r, "%s.%s", prefix, d->name);
17941802
break;
1795-
case KINS_PARAM_BIT:
1796-
res += hal_pin_new_bool(comp_id, dir, &pins[i].b, d->dflt != 0, "%s.%s", prefix, d->name);
1803+
case KINS_PARAM_BOOL:
1804+
res += hal_pin_new_bool(comp_id, dir, &pins[i].b, d->dflt.b, "%s.%s", prefix, d->name);
17971805
break;
1798-
case KINS_PARAM_S32:
1799-
res += hal_pin_new_si32(comp_id, dir, &pins[i].s, (rtapi_s32)d->dflt, "%s.%s", prefix, d->name);
1806+
case KINS_PARAM_SINT:
1807+
res += hal_pin_new_sint(comp_id, dir, &pins[i].s, d->dflt.s, "%s.%s", prefix, d->name);
18001808
break;
1801-
case KINS_PARAM_U32:
1802-
res += hal_pin_new_ui32(comp_id, dir, &pins[i].u, (rtapi_u32)d->dflt, "%s.%s", prefix, d->name);
1809+
case KINS_PARAM_UINT:
1810+
res += hal_pin_new_uint(comp_id, dir, &pins[i].u, d->dflt.u, "%s.%s", prefix, d->name);
18031811
break;
18041812
default:
18051813
res = -1;
@@ -1824,10 +1832,10 @@ void kinsParamsPinsRead(const kins_pin_ref *pins,
18241832
double v;
18251833
if (d->dir == KINS_OUT) { continue; }
18261834
switch (d->type) {
1827-
case KINS_PARAM_FLOAT: v = hal_get_real(pins[i].r); break;
1828-
case KINS_PARAM_BIT: v = hal_get_bool(pins[i].b) ? 1.0 : 0.0; break;
1829-
case KINS_PARAM_S32: v = hal_get_si32(pins[i].s); break;
1830-
case KINS_PARAM_U32: v = hal_get_ui32(pins[i].u); break;
1835+
case KINS_PARAM_REAL: v = hal_get_real(pins[i].r); break;
1836+
case KINS_PARAM_BOOL: v = hal_get_bool(pins[i].b) ? 1.0 : 0.0; break;
1837+
case KINS_PARAM_SINT: v = hal_get_sint(pins[i].s); break;
1838+
case KINS_PARAM_UINT: v = hal_get_uint(pins[i].u); break;
18311839
default: v = 0;
18321840
}
18331841
p->geometry[i] = v;
@@ -1843,12 +1851,26 @@ void kinsParamsPinsWrite(const kins_pin_ref *pins,
18431851
if (!pins || !params || !s) { return; }
18441852
for (i = 0; i < nparams && i < KINS_MAX_PARAMS; i++) {
18451853
const kins_param_desc *d = &params[i];
1846-
if (d->dir != KINS_OUT) { continue; }
1854+
if (d->dir != KINS_OUT || isnan(s->out[i])) { continue; }
18471855
switch (d->type) {
1848-
case KINS_PARAM_FLOAT: hal_set_real(pins[i].r, s->out[i]); break;
1849-
case KINS_PARAM_BIT: hal_set_bool(pins[i].b, s->out[i] != 0); break;
1850-
case KINS_PARAM_S32: hal_set_si32(pins[i].s, (rtapi_s32)s->out[i]); break;
1851-
case KINS_PARAM_U32: hal_set_ui32(pins[i].u, (rtapi_u32)s->out[i]); break;
1856+
case KINS_PARAM_REAL: hal_set_real(pins[i].r, s->out[i]); break;
1857+
case KINS_PARAM_BOOL: hal_set_bool(pins[i].b, s->out[i] != 0.0); break;
1858+
case KINS_PARAM_SINT:
1859+
if (s->out[i] >= (rtapi_real)RTAPI_SINT_MAX)
1860+
hal_set_sint(pins[i].s, RTAPI_SINT_MAX);
1861+
else if (s->out[i] <= (rtapi_real)RTAPI_SINT_MIN)
1862+
hal_set_sint(pins[i].s, RTAPI_SINT_MIN);
1863+
else
1864+
hal_set_sint(pins[i].s, (rtapi_sint)s->out[i]);
1865+
break;
1866+
case KINS_PARAM_UINT:
1867+
if (s->out[i] < 0.0)
1868+
hal_set_uint(pins[i].u, 0);
1869+
else if (s->out[i] >= (rtapi_real)RTAPI_UINT_MAX)
1870+
hal_set_uint(pins[i].u, RTAPI_UINT_MAX);
1871+
else
1872+
hal_set_uint(pins[i].u, s->out[i]);
1873+
break;
18521874
default: break;
18531875
}
18541876
}

‎src/emc/kinematics/lineardeltakins.c‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525

2626
// the two lengths, one pin each
2727
static const kins_param_desc ld_params[] = {
28-
{ "R", KINS_PARAM_FLOAT, KINS_IN, 0, DELTA_RADIUS },
29-
{ "L", KINS_PARAM_FLOAT, KINS_IN, 0, DELTA_DIAGONAL_ROD },
28+
{ "R", KINS_PARAM_REAL, KINS_IN, 0, {.r=DELTA_RADIUS} },
29+
{ "L", KINS_PARAM_REAL, KINS_IN, 0, {.r=DELTA_DIAGONAL_ROD} },
3030
};
3131
enum { P_R, P_L };
3232

‎src/emc/kinematics/maxkins.c‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@
3333

3434
// the geometry, one pin each; the maths reads it from the block
3535
static const kins_param_desc max_params[] = {
36-
{ "pivot-length", KINS_PARAM_FLOAT, KINS_IO, 0, 0.666 },
37-
{ "conventional-directions", KINS_PARAM_BIT, KINS_IN, 0, 0 }, // default is unconventional
38-
{ "tool-length", KINS_PARAM_FLOAT, KINS_IN, 1, 0 },
36+
{ "pivot-length", KINS_PARAM_REAL, KINS_IO, 0, {.r=0.666} },
37+
{ "conventional-directions", KINS_PARAM_BOOL, KINS_IN, 0, {.b=0} }, // default is unconventional
38+
{ "tool-length", KINS_PARAM_REAL, KINS_IN, 1, {.r=0} },
3939
};
4040
enum { P_PIVOT_LENGTH, P_CON, P_TOOL_LENGTH };
4141

‎src/emc/kinematics/pentakins.c‎

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -79,24 +79,24 @@ enum {
7979
};
8080

8181
#define STRUT_ROWS(i, bx, by, bz, er, ez) \
82-
{ "base." #i ".x", KINS_PARAM_FLOAT, KINS_IN, 0, bx }, \
83-
{ "base." #i ".y", KINS_PARAM_FLOAT, KINS_IN, 0, by }, \
84-
{ "base." #i ".z", KINS_PARAM_FLOAT, KINS_IN, 0, bz }, \
85-
{ "effector." #i ".r", KINS_PARAM_FLOAT, KINS_IN, 0, er }, \
86-
{ "effector." #i ".z", KINS_PARAM_FLOAT, KINS_IN, 0, ez }
82+
{ "base." #i ".x", KINS_PARAM_REAL, KINS_IN, 0, {.r=bx} }, \
83+
{ "base." #i ".y", KINS_PARAM_REAL, KINS_IN, 0, {.r=by} }, \
84+
{ "base." #i ".z", KINS_PARAM_REAL, KINS_IN, 0, {.r=bz} }, \
85+
{ "effector." #i ".r", KINS_PARAM_REAL, KINS_IN, 0, {.r=er} }, \
86+
{ "effector." #i ".z", KINS_PARAM_REAL, KINS_IN, 0, {.r=ez} }
8787

8888
static const kins_param_desc penta_params[P_COUNT] = {
8989
STRUT_ROWS(0, DEFAULT_BASE_0_X, DEFAULT_BASE_0_Y, DEFAULT_BASE_0_Z, DEFAULT_EFFECTOR_0_R, DEFAULT_EFFECTOR_0_Z),
9090
STRUT_ROWS(1, DEFAULT_BASE_1_X, DEFAULT_BASE_1_Y, DEFAULT_BASE_1_Z, DEFAULT_EFFECTOR_1_R, DEFAULT_EFFECTOR_1_Z),
9191
STRUT_ROWS(2, DEFAULT_BASE_2_X, DEFAULT_BASE_2_Y, DEFAULT_BASE_2_Z, DEFAULT_EFFECTOR_2_R, DEFAULT_EFFECTOR_2_Z),
9292
STRUT_ROWS(3, DEFAULT_BASE_3_X, DEFAULT_BASE_3_Y, DEFAULT_BASE_3_Z, DEFAULT_EFFECTOR_3_R, DEFAULT_EFFECTOR_3_Z),
9393
STRUT_ROWS(4, DEFAULT_BASE_4_X, DEFAULT_BASE_4_Y, DEFAULT_BASE_4_Z, DEFAULT_EFFECTOR_4_R, DEFAULT_EFFECTOR_4_Z),
94-
[P_LAST_ITER] = { "last-iterations", KINS_PARAM_U32, KINS_OUT, 0, 0 },
95-
[P_MAX_ITER] = { "max-iterations", KINS_PARAM_U32, KINS_OUT, 0, 0 },
96-
[P_MAX_ERROR] = { "max-error", KINS_PARAM_FLOAT, KINS_IO, 0, 100.0 },
97-
[P_CONV_CRITERION] = { "convergence-criterion", KINS_PARAM_FLOAT, KINS_IO, 0, 1e-9 },
98-
[P_ITER_LIMIT] = { "limit-iterations", KINS_PARAM_U32, KINS_IO, 0, 120 },
99-
[P_TOOL_OFFSET] = { "tool-offset", KINS_PARAM_FLOAT, KINS_IN, 1, 0.0 },
94+
[P_LAST_ITER] = { "last-iterations", KINS_PARAM_UINT, KINS_OUT, 0, {.u=0} },
95+
[P_MAX_ITER] = { "max-iterations", KINS_PARAM_UINT, KINS_OUT, 0, {.u=0} },
96+
[P_MAX_ERROR] = { "max-error", KINS_PARAM_REAL, KINS_IO, 0, {.r=100.0} },
97+
[P_CONV_CRITERION] = { "convergence-criterion", KINS_PARAM_REAL, KINS_IO, 0, {.r=1e-9} },
98+
[P_ITER_LIMIT] = { "limit-iterations", KINS_PARAM_UINT, KINS_IO, 0, {.u=120} },
99+
[P_TOOL_OFFSET] = { "tool-offset", KINS_PARAM_REAL, KINS_IN, 1, {.r=0.0} },
100100
};
101101

102102
// the most iterations a converged solution has taken this session, kept

‎src/emc/kinematics/pumakins.c‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,11 @@
2727

2828
// the five dimensions, one pin each; the maths reads them from the block
2929
static const kins_param_desc puma_params[] = {
30-
{ "A2", KINS_PARAM_FLOAT, KINS_IN, 0, DEFAULT_PUMA560_A2 },
31-
{ "A3", KINS_PARAM_FLOAT, KINS_IN, 0, DEFAULT_PUMA560_A3 },
32-
{ "D3", KINS_PARAM_FLOAT, KINS_IN, 0, DEFAULT_PUMA560_D3 },
33-
{ "D4", KINS_PARAM_FLOAT, KINS_IN, 0, DEFAULT_PUMA560_D4 },
34-
{ "D6", KINS_PARAM_FLOAT, KINS_IN, 0, DEFAULT_PUMA560_D6 },
30+
{ "A2", KINS_PARAM_REAL, KINS_IN, 0, {.r=DEFAULT_PUMA560_A2} },
31+
{ "A3", KINS_PARAM_REAL, KINS_IN, 0, {.r=DEFAULT_PUMA560_A3} },
32+
{ "D3", KINS_PARAM_REAL, KINS_IN, 0, {.r=DEFAULT_PUMA560_D3} },
33+
{ "D4", KINS_PARAM_REAL, KINS_IN, 0, {.r=DEFAULT_PUMA560_D4} },
34+
{ "D6", KINS_PARAM_REAL, KINS_IN, 0, {.r=DEFAULT_PUMA560_D6} },
3535
};
3636
enum { P_A2, P_A3, P_D3, P_D4, P_D6 };
3737

‎src/emc/kinematics/rosekins.c‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ MODULE_LICENSE("GPL");
3232

3333
// the inverse reports the turn count it keeps and the angles it saw
3434
static const kins_param_desc rose_params[] = {
35-
{ "revolutions", KINS_PARAM_FLOAT, KINS_OUT, 0, 0.0 },
36-
{ "theta_degrees", KINS_PARAM_FLOAT, KINS_OUT, 0, 0.0 },
37-
{ "bigtheta_degrees", KINS_PARAM_FLOAT, KINS_OUT, 0, 0.0 },
35+
{ "revolutions", KINS_PARAM_REAL, KINS_OUT, 0, {.r=0.0} },
36+
{ "theta_degrees", KINS_PARAM_REAL, KINS_OUT, 0, {.r=0.0} },
37+
{ "bigtheta_degrees", KINS_PARAM_REAL, KINS_OUT, 0, {.r=0.0} },
3838
};
3939
enum { O_REVOLUTIONS, O_THETA, O_BIGTHETA };
4040

0 commit comments

Comments
 (0)