machinekit-hal icon indicating copy to clipboard operation
machinekit-hal copied to clipboard

A ros_control machinekit controller

Open ArcEye opened this issue 7 years ago • 1 comments

Issue by luminize Sun Mar 13 13:18:40 2016 Originally opened as https://github.com/machinekit/machinekit/issues/898


Since we've done some basic ROS <-> Machinekit glueing thru ringbuffers here https://github.com/machinekit/machinekit/issues/689 we can now think about what's needed for creating a controller for ros_control since this is the most generic way of interacting with ROS.

Please see these Q and A Q: https://github.com/machinekit/machinekit/issues/689#issuecomment-189908110 A: https://github.com/machinekit/machinekit/issues/689#issuecomment-190164347

I would like to start by gathering some thought on how this should take shape.

I've tried to find the relevant parts and functionality to focus on:

  • how we interact with the ringbuffer from the ROS side (non-python attaching to the ring possible?). the part where the transaction of data gets done https://vimeo.com/107507546 at 8:37
  • how we use the controller_manager to detect and set up resources 17:48. I would imagine that we detect which components (stepgens position/velocity, IO pins, etc) are loaded in HAL, not from a configuration (.hal) file but from the realtime environment. (this because one can set up the HAL without a .hal file but with python and cython bindings for example) and map these found components to ros_control controllers.
  • if/how (non-)realtime must the ros_control control loop be, knowing that we already have a realtime thread from the HAL side.
  • do we read/write/inspect HAL with each controller loop cycle, how do we do polling and only read the data from HAL if there is new data (can/should we wait on the ringbuffer to have a new record without continuously inspecting it).
  • do we need a per-controller ringbuffer? like ringbuffers that contain a group of stepgen feedback values and stepgen states (error, enabled etc), or I/O pin values, or other values.

ArcEye avatar Aug 04 '18 14:08 ArcEye

FWIW, a working HAL to ros_control interface is published at https://github.com/zultron/hal_ros_control/; it's not perfectly up to date, but we've been using it for a while, and it's been performing quite nicely.

zultron avatar Dec 11 '18 03:12 zultron