[ros-users] [Orocos-users] Joint controller manager

Adolfo Rodríguez Tsouroukdissian adolfo.rodriguez at pal-robotics.com
Thu Jan 31 11:55:47 UTC 2013


All,

I'd like to bring up the subject of having controllers running at lower
rates than the controller_manager. I can think of two possible solutions:

1. Frequency divider:
- Individual controller configurations can specify an optional parameter
that states the desired frequency, or that work should be done only '1 out
of n' manager cycles.
- Pros: Easy to implement. It is specific to a particular controller
implementation, hence does not need to be part of the controller_manager
library. See [1] for an example.
- Cons: Desired controller update period is subject to an error of up to
one controller manager control period.

2. Individual/grouped controller updating:
- The controller manager allows the option of updating single controllers,
or groups of them. Triggering these updates is not handled by the manager.
- Pros: Desired controller update period is unaffected by the controller
manager's update period.
- Cons: This solution requires significant changes to the existing
controller_manager codebase:
  - Extending the API to allow not only batch update()s, but also updates
to a subset of the running controllers. Resolving which controllers to
update should be a constant-time operation.
  - Add protection against concurrent access to data (eg. simultaneous
read() and update()), possibly with lock-free data structures.
  - Because of the above point, the chosen concurrency handling mechanism
might render reusing the existing standard hardware interfaces impossible
(lock-free structures usually expose data through accessors, not raw
pointers).

At the moment I'm leaning towards the frequency divider as it is sufficient
for our use cases. I wonder if someone has a use case that does not fit
well with this approach.

[1]
https://github.com/willowgarage/ros_controllers/blob/master/joint_state_controller/src/joint_state_controller.cpp#L78

-- 
Adolfo Rodríguez Tsouroukdissian
Senior robotics engineer
adolfo.rodriguez at pal-robotics.com
http://www.pal-robotics.com

PAL ROBOTICS S.L
c/ Pujades 77-79, 4º4ª
08005 Barcelona, Spain.
Tel. +34.93.414.53.47
Fax.+34.93.209.11.09
Skype: adolfo.pal-robotics
Facebook <http://www.facebook.com/palrobotics1> -
Twitter<http://twitter.com/#%21/palrobotics>- PAL
Robotics YouTube Channel <http://www.youtube.com/user/PALRobotics>

AVISO DE CONFIDENCIALIDAD: Este mensaje y sus documentos adjuntos, pueden
contener información privilegiada y/o confidencial que está dirigida
exclusivamente a su destinatario. Si usted recibe este mensaje y no es el
destinatario indicado, o el empleado encargado de su entrega a dicha
persona, por favor, notifíquelo inmediatamente y remita el mensaje original
a la dirección de correo electrónico indicada. Cualquier copia, uso o
distribución no autorizados de esta comunicación queda estrictamente
prohibida.

CONFIDENTIALITY NOTICE: This e-mail and the accompanying document(s) may
contain confidential information which is privileged and intended only for
the individual or entity to whom they are addressed.  If you are not the
intended recipient, you are hereby notified that any disclosure, copying,
distribution or use of this e-mail and/or accompanying document(s) is
strictly prohibited.  If you have received this e-mail in error, please
immediately notify the sender at the above e-mail address.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ros.org/pipermail/ros-users/attachments/20130131/0a018ec8/attachment-0004.html>


More information about the ros-users mailing list