[ros-users] ROS cpu load

Cedric Pradalier cedric.pradalier at mavt.ethz.ch
Sat Jul 31 09:15:07 UTC 2010

>     Now, I'm not using timers in these programs, so I cannot say what
>     is the
>     influence of the 1ms wait in timer_manager.h. I have not looked at the
>     code in details, but it look like this wait could be advantageously
>     replaced by the following code:
>           int remaining_time = std::max((int)((sleep_end.toSec() -
>     current.toSec())*1000),0);
>           timers_cond_.timed_wait(lock,
>     boost::posix_time::milliseconds(std::min(50,remaining_time)));
>     Is there any reason to verify that the time is not going backward
>     at 1kHz?
> This is unfortunately not possible because of the ROS clock used in 
> simulation.  If simulated time is going faster than normal time you 
> end up missing timer events.  Building up a predictive model of how 
> fast time is actually moving is possible, but not high priority.
> Josh

Thanks for the feedback.

I somehow feel sorry to loose at least 15% of the CPU time per node on 
my embedded system for something that is only an issue for simulation 
What would make the most sense: separating the simulation functionality 
from the (pseudo) real-time system, or add a global parameter that 
define which type of system we are running? I would think the second 
possibility is better and easier to implement.

I for one will definitely apply the above change to all my on-board 
system. The gain is too dramatic to ignore.

Now, a bonus question I'm going to investigate now: is there the same 
kind of high frequency threads in the rospy implementation?

Dr. Cedric Pradalier

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ros.org/pipermail/ros-users/attachments/20100731/c694a041/attachment-0003.html>

More information about the ros-users mailing list