Re: Hmi question

Peter Soetens <[email protected]>
Newsgroups gmane.science.robotics.orocos.user
Organization KU Leuven
Message-ID <[email protected]>
On Monday 24 May 2004 12:27, Andrea Consonni wrote:
> >> We are interested in your HMI support components and we want to use
> >> them in our application.
> >>
> >> We have tested them and we have noticed that in some cases, when the
> >> application is running, all stalls with the exception of the Report
> >> which works. When we "quit", the application destroys the
> >> NonRealTimeThread, but when it tries to terminate the ZeroTimeThread,
> >> the message "Finalizing thread after 1000 tries" appears and the
> >> application doesn't go forward. We have to terminate it pressing
> >> "CTRL+c".
> >
> > This looks like a deadlock in the realtime threads. Moreover, (as you
> > maybe know) there is a bug 'somewhere' (rtai/orocos) so that lxrt
> > semaphores are not destroyed (see /proc/rtai/RTAI Names) after the
> > application finishes. Is this the case in your app ? It could be that
> > it is rtai 3.0 specific...
>
> We think so because using 'dmesg' command we had error about lxrt
> semaphores. Now we are using RTAI 24.1.12.

Ok, I'll see how fast I can fix these warnings / errors. I'll put it on the 
list (and make a new release) if it is fixed.

>
> >> Have you ever had this problem? We have read about HMIConsoleOutput
> >> that "It should not be used in hard realtime programs", have you
> >> written this because of that problem?
> >
> > The HMI's run together with the execution extension of the control
> > kernel you are using. If the HMIOutput prints something, this is done
> >
> > right after the control loop. Therefore, the std::cout is not 'good'
> > in the Zero[Time|Latency]Thread under LXRT It will switch you back to
> > soft realtime (wich normally does not cause a crash). If you replace
> > the std::cout with rtos_printf() and include <os/fosi.h> it is again
> > allowed, But we know that RTAI crashes if to much rt_printk's are done
> > after each other :-(
>
> We think that we have resolved our problem deleting every "std::cout"s or
> changing them into "rt_std::cout"s in each our component and in your
> HMIConsoleOutput.hpp.

Ah, very nice to see that rt_std still works :-) It is much more limited than 
std::cout however... (only int, double,...)

>
> > I have developed the 'index' operator for the next version meaning you
> > can write now :
> >
> > var double6d d6 = double6d(0.0)
> > set d6[0] = 3.14
> > var double x = d6[0]
> >
> > cool, heh ? This opens the way to an 'array' type, which would
> > translate to a vector<double> in the code...
>
> Very good job! We think that this could be useful in several applications.

Thanks :-)  It will be in the next release

Peter

-- 
------------------------------------------------------------------------
Peter Soetens, Research Assistent                  http://www.orocos.org
Katholieke Universiteit Leuven
Division Production Engineering,                      tel. +32 16 322773
Machine Design and Automation                         fax. +32 16 322987
Celestijnenlaan 300B                   [email protected]
B-3001 Leuven Belgium                 http://www.mech.kuleuven.ac.be/pma
------------------------------------------------------------------------
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.