ros-controls/ros_controllers — pull request #38 by adolfo-rt (2013-08-20 07:47:06+00:00)
Title: Joint trajectory controller

This is a fully functional and tested implementation of a Joint Trajectory Controller.

**Note:** I developed this controller in my Fuerte backport of ros_controllers, and tried to make this PR Hydro-friendly, but I've not tested it in a catkin system. I suggest that this PR should be merged when someone using Groovy or Hydro is willing to iron out any pending wrinkles resulting from the Hydro port. It should suffice to run the test suite to ensure that everything is working as expected.

### ROS API
* Exposes two ROS APIs for sending commands `FollowJointTrajectory` action and `trajectory_msgs::JointTrajectory` topic.
* Current controller state is available in a published `control_msgs::JointTrajectoryControllerState` topic.
* Controller state at any future time can be queried through a service of type `control_msgs/JointTrajectoryControllerState`.

### Segment type
* Controller is templated on the segment type, so any segment implementation conforming to the expected interface can be used.
* Controllers for new segment types are a template specialization away.
* Multi-dof quintic spline segment implementation provided by default.

### Hardware interface type
* Controller is templated on the hardware interface type.
* Any hardware interface can be supported as long as a template specialization for the `HardwareInterfaceAdapter` exists.
* Controller currently can work with position and effort (untested) hardware interfaces.

### Other
* Realtime-safe.
* Proper handling of wrapping (continuous) joints.
* Discontinuous system clock changes do not cause discontinuities in the execution of already queued trajectory segments.
* Complete test suite and developer documentation.

### TODO
* User-oriented documentation.