[Home]IniChanges

LinuxCNCKnowledgeBase | RecentChanges | PageIndex | Preferences | LinuxCNC.org

Revision 13 not available (showing current revision instead)
Difference (from revision 12 to revision 13) (minor diff, author diff)
(The revisions are identical or unavailable.)

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