This page will hold some ideas & thoughts to keep in mind while reorganizing the way axes and joints are described in the ini.
proposed way of doing things (no compatibility with older configs):
snips from an imaginary INI file
[TRAJ] LINEAR_UNITS = inch DEFAULT_LINEAR_VELOCITY = 0.2 MAX_LINEAR_VELOCITY = 1.2 DEFAULT_LINEAR_ACCEL = 6 MAX_LINEAR_ACCEL = 20 ANGULAR_UNITS = degree DEFAULT_ANGULAR_VELOCITY = 30 MAX_ANGULAR_VELOCITY = 90 DEFAULT_ANGULAR_ACCEL = 30 MAX_ANGULAR_ACCEL = 60 [AXIS_X] # note that we are not using numbers, axes are _always_ XYZABCUVW HOME = 0 # home location in cartesean space MAX_VELOCITY = 0.7 # rarely used - the [TRAJ] values are used if not present MAX_LIMIT = 10 # these define a workspace in cartesean coordinates MIN_LIMIT = -10 [AXIS_Y] HOME = 0 MAX_LIMIT = 10 MIN_LIMIT = -10 [AXIS_Z] HOME = 0 MAX_LIMIT = 10 MIN_LIMIT = -10 [AXIS_B] HOME = 0 MAX_LIMIT = 180 MIN_LIMIT = -180 [AXIS_C] HOME = 0 MAX_LIMIT = 180 MIN_LIMIT = -180 # the absence of AXIS_A, U, V, W tells EMC that the machine can't move along those axes and they should not appear on the GUI or DRO [KINS] JOINTS = 4 # number of DOFs (e.g. how many motors your machine has) KINEMATICS = trivkins #first joint [JOINT_0] NAME = table TYPE = LINEAR HOME = 0.000 MAX_VELOCITY = 1.2 MAX_ACCELERATION = 20.0 INPUT_SCALE = 4000 <snip>the rest is exactly like [AXIS_*] in emc2 atm #second joint [JOINT_1] NAME = saddle TYPE = ANGULAR AXIS = 3 # 3 = A HOME = 0.000 MAX_VELOCITY = 1.2 MAX_ACCELERATION = 20.0 INPUT_SCALE = 400 <snip>the rest is exactly like [AXIS_*] in emc2 atm # and so on....
Example of a SCARA robot
snips from an imaginary INI file
[TRAJ] LINEAR_UNITS = mm DEFAULT_LINEAR_VELOCITY = 20 MAX_LINEAR_VELOCITY = 120 DEFAULT_LINEAR_ACCEL = 60 MAX_LINEAR_ACCEL = 200 ANGULAR_UNITS = degree DEFAULT_ANGULAR_VELOCITY = 30 MAX_ANGULAR_VELOCITY = 90 DEFAULT_ANGULAR_ACCEL = 30 MAX_ANGULAR_ACCEL = 60 [AXIS_X] # note that we are not using numbers, axes are _always_ XYZABCUVW HOME = 0 # home location in cartesean space MAX_LIMIT = 10 # these define a workspace in cartesean coordinates MIN_LIMIT = -10 [AXIS_Y] HOME = 0 MAX_LIMIT = 10 MIN_LIMIT = -10 [AXIS_Z] HOME = 0 MAX_LIMIT = 10 MIN_LIMIT = -10 [AXIS_C] HOME = 0 MAX_LIMIT = 180 MIN_LIMIT = -180 [KINS] JOINTS = 4 # number of DOFs (e.g. how many motors your machine has) KINEMATICS = scarakins #first joint [JOINT_0] NAME = shoulder TYPE = ANGULAR HOME = 0.000 MAX_VELOCITY = 1.2 MAX_ACCELERATION = 20.0 INPUT_SCALE = 4000 <snip>the rest is exactly like [AXIS_*] in emc2 atm #second joint [JOINT_1] NAME = elbow TYPE = ANGULAR HOME = 0.000 MAX_VELOCITY = 1.2 MAX_ACCELERATION = 20.0 INPUT_SCALE = 400 <snip>the rest is exactly like [AXIS_*] in emc2 atm #third joint [JOINT_2] NAME = z-slide TYPE = LINEAR HOME = 0.000 MAX_VELOCITY = 1.2 MAX_ACCELERATION = 20.0 INPUT_SCALE = 400 <snip>the rest is exactly like [AXIS_*] in emc2 atm #fourth joint [JOINT_3] NAME = wrist TYPE = ANGULAR HOME = 0.000 MAX_VELOCITY = 1.2 MAX_ACCELERATION = 20.0 INPUT_SCALE = 400 <snip>the rest is exactly like [AXIS_*] in emc2 atm
Example of a XYZ table mill with 10 z joints with spindles
[TRAJ] LINEAR_UNITS = mm DEFAULT_LINEAR_VELOCITY = 50 MAX_LINEAR_VELOCITY = 100 DEFAULT_LINEAR_ACCEL = 100 MAX_LINEAR_ACCEL = 300 [AXIS_X] # note that we are not using numbers, axes are _always_ XYZABCUVW HOME = 0 # home location in cartesean space MIN_LIMIT = -1 MAX_LIMIT = 1600 # these define a workspace in cartesean coordinates [AXIS_Y] HOME = 0 MIN_LIMIT = -1 MAX_LIMIT = 2500 [AXIS_Z] HOME = 200 MAX_LIMIT = 201 MIN_LIMIT = 0 [KINS] JOINTS = 12 # number of DOFs (e.g. how many motors your machine has) KINEMATICS = gantrykins # some universal joint mapping kinematics #first joint [JOINT_0] NAME = x axis TYPE = LINEAR HOME = 0.000 MAX_VELOCITY = 110 MAX_ACCELERATION = 310 INPUT_SCALE = 1000 <snip>the rest is exactly like [AXIS_*] in emc2 atm [JOINT_1] NAME = y axis TYPE = LINEAR HOME = 0.000 MAX_VELOCITY = 110 MAX_ACCELERATION = 310 INPUT_SCALE = 1000 <snip>the rest is exactly like [AXIS_*] in emc2 atm [JOINT_2] NAME = spindle 1 TYPE = LINEAR HOME = 0.000 MAX_VELOCITY = 60 MAX_ACCELERATION = 200 INPUT_SCALE = 1000 <snip>the rest is exactly like [AXIS_*] in emc2 atm [JOINT_3] NAME = spindle 2 TYPE = LINEAR HOME = 0.000 MAX_VELOCITY = 60 MAX_ACCELERATION = 200 INPUT_SCALE = 1000 <snip>the rest is exactly like [AXIS_*] in emc2 atm [JOINT_4] NAME = spindle 3 TYPE = LINEAR HOME = 0.000 MAX_VELOCITY = 60 MAX_ACCELERATION = 200 INPUT_SCALE = 1000 <snip>the rest is exactly like [AXIS_*] in emc2 atm and so on to JOINT_12