During a teleop session, a continuous stream of empty protocol messages are sent from the operator to the device at a rate of 50Hz with UDP-like reliability settings.
This stream of messages represents a near-continuous signal that the operator is able to control the device.
For safety or UX reasons, the robot-side application may want to know when the operator or device have lost the ability to receive heartbeats.
Reacting to missing heartbeats is the fastest way to react to a lost network signal or lag spike in teleop on the robot-side application.
The following example code registers a callback which prints the value of
heartbeat.is_disconnect. This value will be
True when the session is closed or otherwise completely disconnected, and
Play with the example while opening and closing teleop sessions and through adverse network conditions to understand the heartbeat functionality.
import time from formant.sdk.agent.v1 import Client as FormantAgentClient def f(heartbeat): print("Received heartbeat callback at", time.time()) print(heartbeat.is_disconnect) if __name__ == "__main__": fclient = FormantAgentClient(ignore_unavailable=True) fclient.register_teleop_heartbeat_callback(f) try: while True: time.sleep(0.1) except KeyboardInterrupt: exit()