<font face="Default Sans Serif,Verdana,Arial,Helvetica,sans-serif" size="2"> <span>Hello fellow roboticians,<br><br>I'm trying to make a simple state machine using a ruby script in ROCK, as a test I made a component that runs some internal process and then calls <font face="Default Monospace,Courier New,Courier,monospace">state(STOPPED)</font> internally in the <font face="Default Monospace,Courier New,Courier,monospace">updateHook()</font> method. When viewing the component with <font face="Default Monospace,Courier New,Courier,monospace">rock-display</font> the state is properly transitioning from <font face="Default Monospace,Courier New,Courier,monospace">RUNNING</font> to <font face="Default Monospace,Courier New,Courier,monospace">STOPPED</font>.<br><br>In the ruby script I am continuously polling the state of the component with <font face="Default Monospace,Courier New,Courier,monospace">component.state == :STOPPED</font>, once this returns true I wait for 5 seconds and then call <font face="Default Monospace,Courier New,Courier,monospace">component.start</font> to start it again. The issue is that I get the following error:<br><br><font face="Default Monospace,Courier New,Courier,monospace">/home/computer/dev/tools/orocos.rb/lib/orocos/task_context.rb:93:in `do_start': failed to start the '/</font></span><span><font face="Default Monospace,Courier New,Courier,monospace"><span>component</span>' task of type </font></span><span><font face="Default Monospace,Courier New,Courier,monospace"><span>component</span>::Task. Tasks must be in STOPPED state before calling start, but was in RUNNING (Orocos::StateTransitionFailed)<br>&nbsp;&nbsp;&nbsp; from /home/</font></span><span><font face="Default Monospace,Courier New,Courier,monospace"><span><font face="Default Monospace,Courier New,Courier,monospace">computer</font></span>/dev/tools/orocos.rb/lib/orocos/task_context.rb:93:in `block in start'<br>&nbsp;&nbsp;&nbsp; from /home/</font></span><span><font face="Default Monospace,Courier New,Courier,monospace"><span><font face="Default Monospace,Courier New,Courier,monospace">computer</font></span>/dev/tools/orocos.rb/lib/orocos/corba.rb:116:in `refine_exceptions'<br>&nbsp;&nbsp;&nbsp; from /home/</font></span><span><font face="Default Monospace,Courier New,Courier,monospace"><span><font face="Default Monospace,Courier New,Courier,monospace">computer</font></span>/dev/tools/orocos.rb/lib/orocos/task_context.rb:91:in `start'<br>&nbsp;&nbsp;&nbsp; from </font></span><span><font face="Default Monospace,Courier New,Courier,monospace"><span><font face="Default Monospace,Courier New,Courier,monospace">script</font></span>.rb:57:in `block in &lt;main&gt;'<br>&nbsp;&nbsp;&nbsp; from /home/</font></span><span><font face="Default Monospace,Courier New,Courier,monospace"><span><font face="Default Monospace,Courier New,Courier,monospace">computer</font></span>/dev/tools/orocos.rb/lib/orocos/process.rb:695:in `block in run'<br>&nbsp;&nbsp;&nbsp; from /home/</font></span><span><font face="Default Monospace,Courier New,Courier,monospace"><span><font face="Default Monospace,Courier New,Courier,monospace">computer</font></span>/dev/tools/orocos.rb/lib/orocos/process.rb:1098:in `guard'<br>&nbsp;&nbsp;&nbsp; from /home/</font></span><span><font face="Default Monospace,Courier New,Courier,monospace"><span><font face="Default Monospace,Courier New,Courier,monospace">computer</font></span>/dev/tools/orocos.rb/lib/orocos/process.rb:694:in `run'<br>&nbsp;&nbsp;&nbsp; from script.rb:12:in `&lt;main&gt;'</font><br><br>This is strange as, like I mentioned, <font face="Default Monospace,Courier New,Courier,monospace">rock-display</font> reports that the component is in the <font face="Default Monospace,Courier New,Courier,monospace">STOPPED</font> state.<br><br>If I call <font face="Default Monospace,Courier New,Courier,monospace">component.stop</font>, right after having checked that </span><span><span><font face="Default Monospace,Courier New,Courier,monospace">component.state == :STOPPED</font> returns true, the script works properly. I would like to avoid that since it adds redundancy. It seems <font face="Default Monospace,Courier New,Courier,monospace">state(STOPPED)</font></span> is not properly recognized from the ruby side, or I am not doing it properly. In any case I have not found any documentation or examples on how to do it this way, the only documentation I found was the task states which describe what I did: <a href="http://rock-robotics.org/stable/documentation/orogen/task_states.html" target="_blank">http://rock-robotics.org/stable/documentation/orogen/task_states.html</a><br><br>Is this a bug or am I doing it wrong?<br><br>I saw that with Roby it's possible to do state machine stuff, but it looks way too complicated for such a trivial task.<br><br>Thank you for your time,<br><br>Karl Kangur<br><br></span></font> <PRE>This message and any attachments are intended for the use of the addressee or addressees only.
The unauthorised disclosure, use, dissemination or copying (either in whole or in part) of its
content is not permitted.
If you received this message in error, please notify the sender and delete it from your system.
Emails can be altered and their integrity cannot be guaranteed by the sender.

Please consider the environment before printing this email.

</PRE>