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.
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.
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.
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:
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 toros_control
controllers.ros_control
control loop be, knowing that we already have a realtime thread from the HAL side.