Hekateros  3.4.3
RoadNarrows Robotics Robot Arm Project
hekKin.h File Reference

The Hekateros kinematics and dynamics class interface. More...

#include <sys/time.h>
#include <time.h>
#include <pthread.h>
#include <vector>
#include <map>
#include "rnr/rnrconfig.h"
#include "rnr/log.h"
#include "Dynamixel/Dynamixel.h"
#include "Dynamixel/DynaError.h"
#include "Dynamixel/DynaServo.h"
#include "Dynamixel/DynaChain.h"
#include "Hekateros/hekateros.h"
#include "Hekateros/hekTune.h"
#include "Hekateros/hekJoint.h"
#include "Hekateros/hekTraj.h"
#include "Hekateros/hekKinJoint.h"
#include "Hekateros/hekUtils.h"

Go to the source code of this file.

Classes

class  hekateros::HekKinematics
 

Namespaces

 hekateros
 The Hekateros namespace encapsulates all Hekateros related constructs.
 

Detailed Description

The Hekateros kinematics and dynamics class interface.

LastChangedDate
2015-05-15 12:50:46 -0600 (Fri, 15 May 2015)
Rev
3988

The class instance starts a kinematics thread to sense kinematic chain dynamics, control forward geometry kinematics, and monitor servo health.

The kinematics includes all physical kinematic chains. The individual chains are controlled by the higher-level interfaces such as MoveIt!

The kinematics thread performs several functions:

  • Position, velocity, acceleration (future), and torque monitoring.
  • Goal joint position and velocity PID control.
  • Torque limiting override control.
  • Servo health monitoring.

There are two alternative kinematics thread execution algorithms.

Individual Move Execution Cycle
HEK_KIN_EXEC_ALG_INDIV
* get next task
* if task is a joint task
*   sense()
*     sense dynamics (3 dynabus reads)
*   act()
*     control movement (1+ dynabus writes)
*     limit torque if necessary (1+ dynabus writes)
* else if task is to monitor
*   monitor()
*     health of one servo (3 dynabus reads)
* block wait for next task time
* 
Sync Move Execution Cycle
HEK_KIN_EXEC_ALG_SYNC
* sense()
*   for each joint
*     sense dynamics (3 dynabus reads)
* react()
*   for each joint
*     stop motion if necessary (1 dynabus write)
*     limit torque if necessary (1+ dynabus writes)
* plan()
*   for each joint
*     plan motion and add to synchronous write messages
* act()
*   sync write (1 or 2 dynabus messages)
* monitor()
*   health of one servo (3 dynabus reads)
* block wait for next cycle time
* 
Author
Robin Knight (robin.nosp@m..kni.nosp@m.ght@r.nosp@m.oadn.nosp@m.arrow.nosp@m.s.co.nosp@m.m)

Definition in file hekKin.h.