micander / atrias

Automatically exported from code.google.com/p/atrias
0 stars 0 forks source link

Investigate RT_PREEMPT further #151

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
The latencies that we've observed in the past with RT_PREEMPT shouldn't have 
been possible. Thanks to Xenomai, I've identified at least one issue that 
would've broken realtime under RT_PREEMPT. I should test out my fix and attempt 
to make RT_PREEMPT as effective as it's supposed to be (w/out hacks like we 
were using before).

Original issue reported on code.google.com by jrvanwhy on 29 Nov 2012 at 5:02

GoogleCodeExporter commented 9 years ago
Some notes:

The only line not realtime-safe when running with the noop connector is the 
write() to send the robot state to the GUI. This cannot be made realtime-safe 
by just adding a buffer to that correction.

However, you can make this line realtime-safe by setting the type to use 
Orocos's realtime allocator, but this causes an error with RTT-ROS integration 
that prevents data transfer from RT Ops to the GUI.

To make the EtherCAT connector realtime-safe, we'll probably have to change the 
priority of the IRQ thread for the ethernet device -- hopefully this is all we 
have to do to get realtime.

Original comment by jrvanwhy on 25 Mar 2013 at 6:39

GoogleCodeExporter commented 9 years ago
More notes:

It appears as if SOEM itself is realtime under RT_PREEMPT, even if the IRQ 
thread for the ethernet interface is at priority 50 (changing this priority 
does not appear to have a significant effect on realtime performance).

Original comment by jrvanwhy on 25 Mar 2013 at 10:13

GoogleCodeExporter commented 9 years ago
I intend to develop the new event system rework/rewrite under RT_PREEMPT, with 
instrumentation to find points where realtime is lost.

Original comment by jrvanwhy on 9 Apr 2013 at 8:50