Hal_ros_control: simple, powerful ros_control hardware interface

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 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.

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 you spend your time on more important things.

3 Likes

Sounds great! Thanks for sharing!

1 Like

Great work! You can find my showcase application moving an industrial robot with AC servos here: https://machinekoder.com/machinekit-ros-industrial-robot/

1 Like