mech

mech folder explained
/etc/motorcortex/config/
└── mech 
    └── mech-parameter.xml 

mech-parameter.xml

A kinematic model is a mathematical description of the robot, expressed in the mech-parameters.xml containing:

Degrees of freedom

Defined as numberDoFs="nNumber" for nNumber fill in the degrees of freedom of your robot.

IK solver types

Define the required solver type for your robot in "mySolverType". Depended on the solver type the mech-parameter file can either have .xml or .json format:

.xml format types:

  • anthropomorphic This analytic solver is suitable for 6DOF robots with a spherical wrist; the last three axes intersect at a single point. This type of robot is also known as a Puma-type robot.
  • anthropomorphic2 This analytic solver is suitable for 6DOF robots that have 3 consecutive parallel axes. Most cobots have this architecture.
  • planar This analytic solver is suitable for planar robots like scara robots.
  • kdl_nrjl This is a generic iterative solver. Use this when there is no analytical solver available. Because it is iterative it is much slower than any of the analytical solvers and maybe requires a lower sample rate or faster controller hardware. On a 4-Core Atom CPU the maximum update rate achievable is about 500Hz.
  • passtrough - This solver passes the inertial pose coordinates (X,Y,Z,Yaw,Pitch,Roll) one to one through to the joint coordinates: q1 = X, q2 = Y, etc.

.json format types:

  • parallel - This solver is suitable for most types of parrallel motion systems, such ax hexapods, delta robots and many more. (TBD)

Anthropomorphic

The Anthropomorphic solver can only be used for a robotic arm with axes rotation in the following order (In stretched position):

  • axis 1: rotation Z-axis
  • axis 2: rotation Y-axis
  • axis 3: rotation Y-axis
  • axis 4: rotation Z-axis
  • axis 5: rotation Y-axis
  • axis 6: rotation Z-axis

In addition to this specified axes orientation, the axes 4, 5 and 6 should intersect (wrist joint). If this is not the case the anthropomorphic solver cannot be used.

image not found

An example anthropomorphic .xml file is provided in the following link: MCX-anthropomorphic-simple.xml. This mech-parameter.xml is filled in according to the figure above.

Basepose:

Define position [m] and orientation[rad] of the base.

<basepose>
    <position x ="0.0" y="0.0" z="0.0"></position>
    <orientation a="0" b="0" c="0"></orientation>
</basepose>
Segments:

Define segment number 1 till 6.

  • Tip-pose position relative to previous tip pose.
  • jointaxis axis of actuation for this joint one of: tran_x, tran_y, tran_z, rot_x, rot_y, rot_z.

Example:

  • segment 1, Is from tip pose of the base to tip pose of link 1: x = 0.08 and y = 0.15
  • segment 1, rotates around the z-axis corresponding to the rotation direction of axis 1.
  <segment number="1">
    <tippose>
        <position x ="0.08" y="0" z="0.15"></position>
    </tippose>
    <jointaxis>
      rot_z
    </jointaxis>
  </segment>
Tool-offset:

Define position [m] and orientation [rad] of the tool.

  <tool-offset name="tool1">
      <position x ="0.0" y="0.0" z="0.08">
      </position>
      <orientation a="0" b="0" c="0">
      </orientation>
  </tool-offset>
Allowable tip-pose positions:

Allowable tip-pose positions expressed in X, Y, Z. The "X" defines the allowable fill in field:

  • Segment 1: <position x ="X" y="X" z="X"></position>
  • Segment 2: <position x ="X" y="0" z="X"></position>
  • Segment 3: <position x ="X" y="0" z="X"></position>
  • Segment 4: <position x ="0" y="0" z="X"></position>
  • Segment 5: <position x ="0" y="0" z="X"></position>
  • Segment 6: <position x ="0" y="0" z="X"></position>

Anthropomorphic2

The Anthropomorphic2 solver can only be used for a robotic arm with axes rotation in the following order (In stretched position):

  • axis 1: rotation Z-axis
  • axis 2: rotation Y-axis
  • axis 3: rotation Y-axis
  • axis 4: rotation Y-axis
  • axis 5: rotation Z-axis
  • axis 6: rotation Y-axis
image not found

An example anthropomorphic2 .xml file is provided in the following link: mcx-anthropomorphic2-simple.xml. This mech-parameter.xml is filled in according to the figure above.

Allowable tip-pose positions:

Allowable tip-pose positions expressed in X, Y, Z. The X defines the allowable fill in field:

  • Segment 1: <position x ="0" y="0" z="X"></position>
  • Segment 2: <position x ="0" y="0" z="X"></position>
  • Segment 3: <position x ="0" y="0" z="X"></position>
  • Segment 4: <position x ="0" y="X" z="0"></position>
  • Segment 5: <position x ="0" y="0" z="X"></position>
  • Segment 6: <position x ="0" y="X" z="0"></position>

kdl_nrjl

The kdl_nrjl solver is an iterative solver and can be used for various robot arm geometries. Limitations of this solver is computing capabilities of your industrial computer used as controller. The load of you controller can be decreased, by adjusting the control_task to 500Hz (decreasing load by 50%).

An examples is provided in anthropomorphic or anthropomorphic2. Change IK solver type to (type="kdl_nrjl) and test your robot application.