Skip to main content
Version: Next

Set Datum

Set the datum. The datum is the reference coordinate of the navigations "map" frame. The XY position of the robot is relative to this location.

import rclpy
from rclpy.node import Node

from clearpath_localization_msgs.srv import SetDatum

DATUM_LAT = 43.500049591064453
DATUM_LON = -80.546844482421875

class SetDatum(Node):

def __init__(self):
super().__init__('set_datum_client')
self._srv_client = self.create_client(SetDatum, 'localization/set_datum')
while not self._srv_client.wait_for_service(timeout_sec=1.0):
self.get_logger().info('service not available, waiting again...')
self.req = SetDatum.Request()

def send_request(self, lat, lon):
self.req.lat = lat
self.req.lon = lon
self.future = self._srv_client.call_async(self.req)
rclpy.spin_until_future_complete(self, self.future)
return self.future.result()

if __name__ == '__main__':
rclpy.init(args=args)
set_datum_client = SetDatum()
response = set_datum_client.send_request(DATUM_LAT, DATUM_LON)
if response.success:
set_datum_client.get_logger().info('Datum set succesfully: (%s, %s)' % (DATUM_LAT, DATUM_LON))
else:
set_datum_client.get_logger().error('Set datum failed!')

set_datum_client.destroy_node()
rclpy.shutdown()