(I hope this announcement isn't too much OT for this group; this
project shares many similarities with a ros_control Orocos
integration.)
My team has written a simple but very flexible ros_control hardware
interface that runs Dave Coleman's `ros_control_boilerplate` in
Machinekit HAL + RTAPI. It's really cool, and we believe it can be
used to control a lot of different robot hardware with configuration
only, and little or no coding. We're using it in our 6 DOF robot arms
with simulated and EtherCAT drivers. While it's still brand-new, it
plays out joint trajectories beautifully.
https://github.com/zultron/hal_ros_control/Machinekit HAL provides an RT threading environment where 'components'
are loaded and 'pins' are connected through 'signals' in a simple
configuration file. Out of the box it includes hundreds of
pre-defined virtual components such as joint controllers, PID
controllers, encoders, scale & offset, filters, pos/vel/acc limiters
and logic gates. It talks to many types of real hardware, like
EtherCAT, BeagleBone GPIO (incl. PRU support), and Zynq SOCs.
Machinekit HAL is an offshoot of LinuxCNC HAL, well-proven to adapt an
enormous variety complex physical hardware configurations for use with
its CNC controller application; Machinekit improves and extends HAL
for general automation applications, including robots.
The `ros_control_boilerplate` enables adaptation to many
applications by setting up ros_control and its joint limits and
transmissions interfaces purely through configuration from the ROS
parameter server.
By complementing the boilerplate with Machinekit HAL as the hardware
interface, we hope to eliminate most coding tasks in robot hardware
integration and let people spend their time on more important things.
Please ask questions; I'm happy to answer.