|
| 1 | +================================= |
| 2 | +Joint Trajectory Controller(s) |
| 3 | +================================= |
| 4 | + |
| 5 | +The controller expects at least position feedback from the hardware. |
| 6 | +Joint velocities and accelerations are optional. |
| 7 | +Currently the controller does not internal integrate velocity from acceleration and position from velocity. |
| 8 | +Therefore if the hardware provides only acceleration or velocity states they have to be integrated in the hardware-interface implementation ot velocitiy and position to use this controllers. |
| 9 | + |
| 10 | +The controller types are placed into namespaces according to their command types for the hardware (see `general introduction into controllers <../../index.rst>`_). |
| 11 | + |
| 12 | +The following version of the Joint Trajectory Controller are available mapping the following interfaces: |
| 13 | + |
| 14 | + - position_controllers::JointTrajectoryController |
| 15 | + - Input: position, [velocity, [acceleration]] |
| 16 | + - Output: position |
| 17 | + - position_velocity_controllers::JointTrajectoryController |
| 18 | + - Input: position, [velocity, [acceleration]] |
| 19 | + - Output: position and velocity |
| 20 | + - position_velocityy_acceleration_controllers::JointTrajectoryController |
| 21 | + - Input: position, [velocity, [acceleration]] |
| 22 | + - Output: position, velocity and acceleration |
| 23 | +.. - velocity_controllers::JointTrajectoryController |
| 24 | +.. - Input: position, [velocity, [acceleration]] |
| 25 | +.. - Output: velocity |
| 26 | +.. TODO(anyone): would it be possible to output velocty and acceleration? |
| 27 | +.. (to have an vel_acc_controllers) |
| 28 | +.. - effort_controllers::JointTrajectoryController |
| 29 | +.. - Input: position, [velocity, [acceleration]] |
| 30 | +.. - Output: effort |
| 31 | +
|
| 32 | +The controller uses `common hardware interface definitions`_. |
| 33 | + |
| 34 | +(*Not implemented yet*) When using a pure ``velocity`` or ``effort`` controllers a command is generated using the desired state and state error using a velocity feedforward term puls a corrective PID term. |
| 35 | + |
| 36 | +A yaml file for joint trajectory controllers looks something like: |
| 37 | + |
| 38 | +1. Position-control hardware interface: |
| 39 | + |
| 40 | + .. code-block:: yaml |
| 41 | +
|
| 42 | + head_controller: |
| 43 | + type: "position_controllers/JointTrajectoryController" |
| 44 | + joints: |
| 45 | + - head_1_joint |
| 46 | + - head_2_joint |
| 47 | +
|
| 48 | + constraints: |
| 49 | + goal_time: 0.6 |
| 50 | + stopped_velocity_tolerance: 0.02 |
| 51 | + head_1_joint: {trajectory: 0.05, goal: 0.02} |
| 52 | + head_2_joint: {trajectory: 0.05, goal: 0.02} |
| 53 | + stop_trajectory_duration: 0.5 |
| 54 | + state_publish_rate: 25 |
| 55 | +
|
| 56 | +
|
| 57 | +2. Position-control hardware interface: |
| 58 | + |
| 59 | + .. code-block:: yaml |
0 commit comments