Check roundtrip message latency¶
This example shows how to check roundtrip message latency on your system.
import logging
import time
import roslibpy
# Configure logging
fmt = '%(asctime)s %(levelname)8s: %(message)s'
logging.basicConfig(format=fmt, level=logging.INFO)
log = logging.getLogger(__name__)
client = roslibpy.Ros(host='127.0.0.1', port=9090)
def receive_message(msg):
age = int(time.time() * 1000) - msg['data']
log.info('Age of message: %6dms', age)
publisher = roslibpy.Topic(client, '/check_latency', 'std_msgs/UInt64')
publisher.advertise()
subscriber = roslibpy.Topic(client, '/check_latency', 'std_msgs/UInt64')
subscriber.subscribe(receive_message)
def publish_message():
publisher.publish(dict(data=int(time.time() * 1000)))
client.call_later(.5, publish_message)
client.on_ready(publish_message)
client.run_forever()
The output on the console should look similar to the following:
$ python 02_check_latency.py
2020-04-09 07:45:49,909 INFO: Connection to ROS ready.
2020-04-09 07:45:50,431 INFO: Age of message: 2ms
2020-04-09 07:45:50,932 INFO: Age of message: 2ms
2020-04-09 07:45:51,431 INFO: Age of message: 1ms
2020-04-09 07:45:51,932 INFO: Age of message: 2ms
2020-04-09 07:45:52,434 INFO: Age of message: 3ms
2020-04-09 07:45:52,934 INFO: Age of message: 2ms
2020-04-09 07:45:53,435 INFO: Age of message: 3ms
2020-04-09 07:45:53,934 INFO: Age of message: 1ms
2020-04-09 07:45:54,436 INFO: Age of message: 2ms