Skip to content

Commit 6f4b9ca

Browse files
committed
Make benchmark also work on ROS 2
1 parent 4df4fea commit 6f4b9ca

1 file changed

Lines changed: 14 additions & 4 deletions

File tree

benchmarks/transport.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,17 @@
2727
import threading
2828
import time
2929

30-
from roslibpy import Message, Ros, Topic
30+
from roslibpy import Message, Ros, Service, ServiceRequest, Topic
31+
32+
33+
def service_ping(ros):
34+
"""Distro-agnostic rosapi round-trip used to measure service latency.
35+
36+
Calls ``/rosapi/get_time`` but, unlike ``Ros.get_time()``, does not parse
37+
the response (whose shape differs between ROS 1 ``secs``/``nsecs`` and ROS 2
38+
``sec``/``nanosec``), so the benchmark runs unchanged against either."""
39+
service = Service(ros, "/rosapi/get_time", "rosapi/GetTime")
40+
return service.call(ServiceRequest(), timeout=5)
3141

3242

3343
CASES = {
@@ -115,7 +125,7 @@ def wait_rosbridge_ready(transport, args):
115125
ros = Ros(args.host, args.port, transport=transport)
116126
ros.run()
117127
wait_connected(ros, args.connect_timeout)
118-
ros.get_time()
128+
service_ping(ros)
119129
return
120130
except Exception as error:
121131
last_error = error
@@ -133,11 +143,11 @@ def wait_rosbridge_ready(transport, args):
133143

134144
def service_latency(ros, count, warmup):
135145
for _ in range(warmup):
136-
ros.get_time()
146+
service_ping(ros)
137147
timings = []
138148
for _ in range(count):
139149
start = time.perf_counter()
140-
ros.get_time()
150+
service_ping(ros)
141151
timings.append(time.perf_counter() - start)
142152
return timings
143153

0 commit comments

Comments
 (0)