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 ------------------------------------------------------------------------