Re: [ros-users] [Orocos-Dev] Control system design question…

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Herman Bruyninckx
Date:  
CC: orocos-dev@lists.mech.kuleuven.be, ros-users@code.ros.org
Subject: Re: [ros-users] [Orocos-Dev] Control system design question.
On Fri, 17 Sep 2010, Stuart Glaser wrote:

> Hi,
>
> On Fri, Sep 17, 2010 at 12:53 PM, Konrad Banachowicz <> wrote:
>> yes RT and non-RT work execute in separated threads but what about shared
>> data ? as far as i know there is some locking involved ?
>
> The buffer used in the JointSplineTrajectoryController is called a
> RealtimeBox.


That's an unfortunate naming...: "realtime" is not an absolute property of
an object, or a buffer, or an algorithm, but of the system configuration in
which it is being used.

> It currently uses a mutex (locked for a guaranteed
> maximum number of instructions on a system that supports priority
> inheritance), though it can certainly switch to a lock-free buffer.
>
>> Communication between RT and non-RT threads is complex problem, but OROCOS
>> solves most problems. it use lock-free buffers for communication between
>> components.


It _can_ use them, but need not. They should be used with care, that is,
only when you are _very_ sure that one component must really be _THE_ hard
realtime component. Because the implementation is trading-off latency for
that single component with overall throughput.

> Currently in ROS joint_trajectory_action is whole non-RT and
>> JointSplineTrajectoryControlle is partialy RT. In my solution all non-RT
>> work are moved into joint_trajectory_action. This make clear border between
>> RT and non-RT part.
>
> Sounds like you've moved the non-realtime parts of the
> JointSplineTrajectoryController into your version of the
> joint_trajectory_action. That sounds like a reasonable solution.


It is reasonable indeed!

Herman