Re: [ros-users] ROS cpu load

Top Page
Attachments:
Message as email
+ (text/plain)
+ (text/html)
Delete this message
Reply to this message
Author: Cedric Pradalier
Date:  
To: ros-users
Subject: Re: [ros-users] ROS cpu load

>
>     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
systems.
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
http://www.asl.ethz.ch/people/cedricp