Axis letters vs joint numbers - does the order matter?
19 Dec 2023 15:03 #288587
by spumco
TLDR:
Do I need to change the order of some/all the axis/joint numbers in INI? If so, to what?
Does a switchable userkins need a default configuration (i.e. when in cartesian mode)? If so, where is that defined?
Longer version:
Does the order of axes letters & joint numbers in INI matter? I installed a user kinematics module and during initial testing got a confusing error.
Specifically, commanding G0 C90 resulted in a "Joint 2 limits would be exceeded" error... but I've defined C-axis as Joint 3. What gives?
Now I'm wondering if I need to change the order of axes/joint in my INI file. Here's a summary of what I've got, both in INI and physically:
Physical components:
I don't really understand the userkins.comp file, having borrowed it from NoJo. Nor do I understand where to define the 'default' KINS arrangement when polar interp mode is off.
Axis letters vs joint numbers - does the order matter? was created by spumco
TLDR:
Do I need to change the order of some/all the axis/joint numbers in INI? If so, to what?
Does a switchable userkins need a default configuration (i.e. when in cartesian mode)? If so, where is that defined?
Longer version:
Does the order of axes letters & joint numbers in INI matter? I installed a user kinematics module and during initial testing got a confusing error.
Specifically, commanding G0 C90 resulted in a "Joint 2 limits would be exceeded" error... but I've defined C-axis as Joint 3. What gives?
Now I'm wondering if I need to change the order of axes/joint in my INI file. Here's a summary of what I've got, both in INI and physically:
Physical components:
- X-axis
- Traditional axis, nothing strange
- Z-axis
- Traditional axis, nothing strange
- V-axis
- Separate slide mounted to lathe headstock. Used for parting tool, much like some Hardinge chuckers.
- I could define this as an extra_joint, but I want CSS while parting and I think I need it defined as an axis to get this feature.
- C-axis (main spindle)
- Servo spindle motor, both spindle and c-axis mode
- using caxis.comp to switch between modes
- C-axis (sub-spindle, not yet implemented)
- hoping to duplicate the main spindle dual-mode here as well
- [DISPLAY]
- GEOMETRY = not defined
- [TRAJ]
- COORDINATES = XZVC
- [KINS]
- KINEMATICS = polar_userkins
- [AXIS X]
- [JOINT 0]
- [AXIS Z]
- [JOINT 1]
- [AXIS V]
- [JOINT 2]
- [AXIS C]
- [JOINT 3]
I don't really understand the userkins.comp file, having borrowed it from NoJo. Nor do I understand where to define the 'default' KINS arrangement when polar interp mode is off.
Please Log in or Create an account to join the conversation.
19 Dec 2023 15:16 #288588
by andypugh
Replied by andypugh on topic Axis letters vs joint numbers - does the order matter?
The mapping of axes to joints is defined in the kinematics file (possibly as a parameter passed to the kinematics file as it is loaded)
The position in the INI is not relevant. Your INI could be
Axis X
Joint0
AxisY
Joint1
Or
Axis X
Axis Y
Axis Z
Joint0
Joint1
Joint2
Or even, of you wanted,
Joint3
Joint1
Joint0
Axis C
Joint2
Axis X
Axis Z
Axis Y
The components search the INI for the information that they require when they require it.
The position in the INI is not relevant. Your INI could be
Axis X
Joint0
AxisY
Joint1
Or
Axis X
Axis Y
Axis Z
Joint0
Joint1
Joint2
Or even, of you wanted,
Joint3
Joint1
Joint0
Axis C
Joint2
Axis X
Axis Z
Axis Y
The components search the INI for the information that they require when they require it.
Please Log in or Create an account to join the conversation.
19 Dec 2023 16:03 #288591
by spumco
Replied by spumco on topic Axis letters vs joint numbers - does the order matter?
I don't see any parameters being referenced in the kinematics file (i.e. INI references).
The kinematics file has this in it:
And a little later on:
Does that mean kinematics file is using the default as described in KINS man page when switchkins_type = 0?
And maybe NoJo's kinematics file needs to be edited for my particular configuration?
The kinematics file has this in it:
KINEMATICS_TYPE kinematicsType()
{
static bool is_setup=0;
if (!is_setup) polar_userkins_setup();
return KINEMATICS_IDENTITY;
And a little later on:
if (switchkins_type == 1)
{
// G12.1 mode : do polar to cartesian conversion
angle_rad = j[2] * M_PI / 180.0;
radius = j[0] - tool_offset;
pos->tran.x = (radius * cos(angle_rad)) + tool_offset;
pos->c = -(radius * sin(angle_rad)); // ref comment in inverse kinematics
}
else
{
pos->tran.x = j[0];
// on an exit from polar, am adjusting the pos->C and j[2] values so that the max distance back to zero
// will be between 0 and 360deg. As in polar mode, we may have clocked up several revolutions of C, which
// means if did not do this setp, would unwind all these positions. The method is derived from what the
// caxis component does on a transition from spindle to caxis mode. Note that the j[2] value is updated
// in the caxis component as cannot write associated net pin here as that pin is written to in caxis.
if (prev_switchkins_type_fwd != switchkins_type)
{
offset = round(*haldata->spindle_revs);
pos->c = (*haldata->spindle_revs - offset) * 360;
}
else
pos->c = j[2];
}
prev_switchkins_type_fwd = switchkins_type;
pos->tran.z = j[1];
pos->b = j[3];
// unused coordinates:
pos->tran.y = 0;
pos->a = 0;
pos->u = 0;
pos->v = 0;
pos->w = 0;
return 0;
Does that mean kinematics file is using the default as described in KINS man page when switchkins_type = 0?
And maybe NoJo's kinematics file needs to be edited for my particular configuration?
Please Log in or Create an account to join the conversation.
19 Dec 2023 17:36 #288604
by Aciera
Replied by Aciera on topic Axis letters vs joint numbers - does the order matter?
For example, this means 'Axis X = Joint 0'
This one 'Axis C = Joint 2'
And so on.
pos->tran.x = j[0]
This one 'Axis C = Joint 2'
pos->c = j[2];
And so on.
Please Log in or Create an account to join the conversation.
19 Dec 2023 17:43 #288605
by Aciera
Replied by Aciera on topic Axis letters vs joint numbers - does the order matter?
So this would be the setup from the kinematic:
Joint 0 > axis X
Joint 1 > Axis Z
Joint 2 > Axis C
Joint 3 > Axis B
Joint 0 > axis X
Joint 1 > Axis Z
Joint 2 > Axis C
Joint 3 > Axis B
The following user(s) said Thank You: spumco
Please Log in or Create an account to join the conversation.
19 Dec 2023 18:09 #288606
by spumco
Replied by spumco on topic Axis letters vs joint numbers - does the order matter?
That makes so much more sense now.
Assuming I'll have to edit the comp and re-do halcompile, right?
Or rename my joints/axes to match the comp?
Assuming I'll have to edit the comp and re-do halcompile, right?
Or rename my joints/axes to match the comp?
Please Log in or Create an account to join the conversation.
19 Dec 2023 23:45 #288626
by Aciera
Replied by Aciera on topic Axis letters vs joint numbers - does the order matter?
YesAssuming I'll have to edit the comp and re-do halcompile, right?
Or rename my joints/axes to match the comp?
The following user(s) said Thank You: spumco
Please Log in or Create an account to join the conversation.
05 Jan 2024 04:01 #289826
by spumco
Replied by spumco on topic Axis letters vs joint numbers - does the order matter?
Back on this after the holidays, but still having issues.
I've edited my INI & HAL files to match the polar_userkins.comp scheme. i.e. C-axis is now joint 2, and all the hal connections have been changed to joint.2.xxx pin names.
HOME_USE_INDEX = 1 for joint 2 in INI
Maybe someone could look over my HAL file(s) and see if there's something obvious? 03SPINDLE_MAIN.hal has both the spindle and C-axis/joint stuff in it. Using the same comps as posted earlier.
Thx
I've edited my INI & HAL files to match the polar_userkins.comp scheme. i.e. C-axis is now joint 2, and all the hal connections have been changed to joint.2.xxx pin names.
HOME_USE_INDEX = 1 for joint 2 in INI
- On startup, no immediate errors.
- Can start the spindle with M3/M4 and stop it with M5.
- When spindle is started, caxis.pid-enable turns off in halshow (as I believe is intended in caxis.comp)
- As soon as spindle is off, caxis.pid-enable turns on (again, as intended - I think)
- Attempt to home C-axis/joint 2 - spindle rotates at an appropriate speed (~60rpm), but gets an ferror after a couple of rotations
- joint.2.index-enable & pid.c0.index-enable do NOT get set when homing starts
- note - INI ferror set to 1000 for testing
- Machine turns off
- Upon re-enable it immeidately continues to attempt homing
- Must trigger encoder.04.reset to 'clear' everything
- If I manually set the encoder index-enable (sets)
- encoder.04.index-enable, joint.2.index-enable, and pid.c0.index-enable all turn on
- When it starts homing the index-enable(s) all go off when the index signal passes, but this doesn't appear to register with the homing process and it continues rotating until the ferror.
Maybe someone could look over my HAL file(s) and see if there's something obvious? 03SPINDLE_MAIN.hal has both the spindle and C-axis/joint stuff in it. Using the same comps as posted earlier.
Thx
Please Log in or Create an account to join the conversation.
Time to create page: 0.085 seconds