[Bug 354] update() of taskcontext executed too often

For more information about this bug, visit
A comment was added:
------- Comment #8 from peter [dot] soetens [..] ... 2007-06-26 15:49

(In reply to comment #0)
> The external interface of an Orocos component is defined by the methods,
> commands, events, etc of its TaskContext. Internally, the "task" of of an
> Orocos component is executed in the update() function of the TaskContext. The
> internal task execution of a component should be independent of the external
> interface of the component. In the current implementation however, the update()
> function is executed at the wrong times.

[Bug 354] update() of taskcontext executed too often

For more information about this bug, visit
A comment was added:
------- Comment #9 from herman [dot] bruyninckx [..] ... 2007-06-26 21:18

(In reply to comment #8)
> (In reply to comment #0)
> > The external interface of an Orocos component is defined by the methods,
> > commands, events, etc of its TaskContext. Internally, the "task" of of an
> > Orocos component is executed in the update() function of the TaskContext. The
> > internal task execution of a component should be independent of the external
> > interface of the component. In the current implementation however, the update()
> > function is executed at the wrong times.
> >
> > What I would expect is that update() is only executed when it is triggered by
> > the activity of the TaskContext: in case of a PeriodicActivity update() is
> > executed periodically, in case of an event based activity update() is executed
> > every time an event is emitted. In the current implementation however,
> > update() is also called every time a command is invoked on the component, and
> > also when the component is started.
> >
> > I see this as an important fix for the 1.2 release.

[Bug 354] update() of taskcontext executed too often

For more information about this bug, visit
A comment was added:
------- Comment #10 from klaas [dot] gadeyne [..] ... 2007-06-27 09:17

(In reply to comment #9)
> (In reply to comment #8)
> > (In reply to comment #0)
> > > The external interface of an Orocos component is defined by the methods,
> > > commands, events, etc of its TaskContext. Internally, the "task" of of an
> > > Orocos component is executed in the update() function of the TaskContext. The
> > > internal task execution of a component should be independent of the external
> > > interface of the component. In the current implementation however, the update()
> > > function is executed at the wrong times.
> > >
> > > What I would expect is that update() is only executed when it is triggered by
> > > the activity of the TaskContext: in case of a PeriodicActivity update() is
> > > executed periodically, in case of an event based activity update() is executed
> > > every time an event is emitted. In the current implementation however,
> > > update() is also called every time a command is invoked on the component, and
> > > also when the component is started.
> > >
> > > I see this as an important fix for the 1.2 release.
> >
> > After attending the OMG's Robotics Task Force seminar, I tend to agree more
> > with you than before. I learnt there that there are different execution models
> > for components: Periodic (aka 'active object'), Event driven (aka 'call backs
> > upon data arrival') or invoked (aka 'method interface'), and you could match
> > these upon component states. There is a component state upon which you can only
> > invoke methods, another one upon which the component reacts to events and
> > finally one in which it actively sends/receives data. A component may refuse to
> > enter one or another state or fall back. I'll open a new Bugzilla [project] in
> > which we can try to find a solution for this usage scenario.
> >