rostime call is slow

3 views (last 30 days)
Mauro on 23 Nov 2020
Answered: Amrtanshu Raj on 5 Feb 2021
While developing a Matlab wrapper around a ROS package, I noticed that rostime("now") takes around 1.4e-03 s per call. In Python on the other hand the same call only takes 4.8e-06 s. I understand that there might be implementation differences, but Matlab being orders of magnitude slower than Python seems strange. Is there anything I am doing wrong here?
Matlab script for timing:
for i = 1:1000
a = rostime("now");
toc / 1000
Python script for timing:
import rospy
import time
if __name__ == "__main__":
t0 = time.clock()
for i in range(1000):
a =
t1 = time.clock()
print((t1 - t0) / 1000)
I found this bug report and the workaround using robotics.ros.internal.Time([]).CurrentTime is about 10 times faster than rostime("now"). This is better but still not as fast as it should be. I am also not sure how much of a hack this is.

Answers (1)

Amrtanshu Raj
Amrtanshu Raj on 5 Feb 2021
The difference in computation time is because of the implementation difference between the MATLAB and Python version of the command. Even declaring a static rostime like
time = rostime(2,85000);
Takes around 1.4e-03 seconds to compute. I have brought this to the notice of the developers.
Thanks !!





Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!