[Home]IniChanges

LinuxCNCKnowledgeBase | RecentChanges | PageIndex | Preferences | LinuxCNC.org

Page about fixing (properly) the way joints & axes are defined in the ini

This page will hold some ideas & thoughts to keep in mind while reorganizing the way axes and joints are described in the ini.

Random thoughts

  1. [TRAJ] coordinated mode in the carthesian world
  2. [TRAJ] provides definitions about the rest of sections available
  3. machine actuators are joints, carthesian directions are axes
  4. there is a n-to-m mapping from joints to axes (e.g. 3 joints<->2 axes | 2 joints<->3axes possible)
  5. the current [AXIS_*] sections refer actually to joints (only joints should have INPUT/OUTPUT_SCALE, etc), it will be changed to [JOINT_*], and will refer actually to joints
  6. AXES 0-8 always reffer to X,Y,Z,A,B,C,U,V,W in that order
  7. the [JOINT_*] sections _must_ exist, so must the [AXIS_*] sections
  8. each [JOINT_*] section describes the characteristica of that motor/actuator (note: a gantry might be considered as having 2 joints, if they need to be moved independently)
  9. the [AXIS_*] sections describe supplementar limitations in carthesian space (working space limit - if present, accel/vel limits if present, carthesian home position). The valid sections are AXIS_X,AXIS_Y,AXIS_Z,AXIS_A,AXIS_B,AXIS_C,AXIS_U,AXIS_V,AXIS_W.


Code changes in task startup

proposed way of doing things (no compatibility with older configs):

  1. init traj (emcInitTraj?() in taskint.cc) by reading the [TRAJ] section, along with number of joints and axes (for trivkins they usually match) (as it is atm: COORDINATES, flags, etc)
  2. init joints/axes:
    1. read joints (sections [JOINT_0] .. [JOINT_<num_joints>]) and send params to motion / TP(one day ;)
    2. read axes (section [AXIS_X] .. [AXIS_W]) and send HOME_POS (in carth space) to motion (maybe even read other carthesian limits)


Example of XYZBC machine


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


LinuxCNCKnowledgeBase | RecentChanges | PageIndex | Preferences | LinuxCNC.org
This page is read-only. Follow the BasicSteps to edit pages. | View other revisions
Last edited July 23, 2009 8:41 am by Micges (diff)
Search:
Published under a Creative Commons License