buffered ROS connection

hi,

I've an application with multiple components that send out events (whenever they happen).
One components needs to receive all these events.
In my current implementation a buffer (buffered connection policy) gets all these events (multi-event/component, multi-component) between the time instances I read the
ports (periodic).
Now I want a ROS node to do the same as this one component: receive all events.

I assume that I can't stream multiple ports to 1 topic and that I can't put a buffered connection policy on this stream?
Has anyone experience with this? Any clean solutions?

Events can be thrown one after the other by a component, so reading at a far higher frequency at the ROS side doesn't look a solution.
I could put a 'buffer' component that does what my 'one component' did: receive on a buffered connection all events the Orocos way and then periodically send out a vector
of events. But this gives me this extra overhead component.

thanks in advance for your suggestions!

Nick

buffered ROS connection

Hi Dominick,

On 04/10/2013 04:27 AM, Dominick Vanthienen wrote:
> hi,
>
> I've an application with multiple components that send out events (whenever they happen).
> One components needs to receive all these events.
> In my current implementation a buffer (buffered connection policy) gets all these events (multi-event/component, multi-component) between the time instances I read the
> ports (periodic).
> Now I want a ROS node to do the same as this one component: receive all events.
>
> I assume that I can't stream multiple ports to 1 topic and that I can't put a buffered connection policy on this stream?
> Has anyone experience with this? Any clean solutions?
I'm not 100% sure about this, but I think that you can indeed use a
"buffered" policy on the ROS side of the bridge by setting the 'size'
attribute in RTT::ConnPolicy to some value greater than one.

I don't see a reason for not being able to stream multiple ports to 1
topic either. Have you tried this?
>
> Events can be thrown one after the other by a component, so reading at a far higher frequency at the ROS side doesn't look a solution.
> I could put a 'buffer' component that does what my 'one component' did: receive on a buffered connection all events the Orocos way and then periodically send out a vector
> of events. But this gives me this extra overhead component.
>
> thanks in advance for your suggestions!
>
> Nick

Ruben Smits's picture

buffered ROS connection

Hello Nick,

On Wed, Apr 10, 2013 at 4:27 AM, Dominick Vanthienen <
dominick [dot] vanthienen [..] ...> wrote:

> hi,
>
> I've an application with multiple components that send out events
> (whenever they happen).
> One components needs to receive all these events.
> In my current implementation a buffer (buffered connection policy) gets
> all these events (multi-event/component, multi-component) between the time
> instances I read the
> ports (periodic).
> Now I want a ROS node to do the same as this one component: receive all
> events.
>
> I assume that I can't stream multiple ports to 1 topic and that I can't
> put a buffered connection policy on this stream?
> Has anyone experience with this? Any clean solutions?
>
>
Streaming multiple ports to a single topic is possible (cfr /tf), and you
can use a buffered connection policy. This should work and looks clean to
me. Have you tried this?

> Events can be thrown one after the other by a component, so reading at a
> far higher frequency at the ROS side doesn't look a solution.
> I could put a 'buffer' component that does what my 'one component' did:
> receive on a buffered connection all events the Orocos way and then
> periodically send out a vector
> of events. But this gives me this extra overhead component.
>
>
This should not be necessary.

> thanks in advance for your suggestions!
>
> Nick
>

Ruben

> --
> Orocos-Users mailing list
> Orocos-Users [..] ...
> http://lists.mech.kuleuven.be/mailman/listinfo/orocos-users
>