My team has written a simple but very flexible ros_control hardware
interface that runs Dave Coleman’s
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 use it in our 6 DOF robot arms with
simulated and EtherCAT drivers. While it’s still brand-new, it plays
out joint trajectories beautifully.
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.
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
By complementing the boilerplate with Machinekit HAL as the hardware
interface, we hope to eliminate most coding tasks in robot hardware
integration and let you spend your time on more important things.