Skip to main content
Version: Next

Survey Dock

Survey the location of an existing dock. This is required to accurately position the dock on the map and ensure that proper docking is achieved. The dock target must be clearly visible by the docking lidar for this survey process to succeed.

import rclpy
from rclpy.node import Node

from clearpath_dock_msgs.srv import SurveyDock


class SurveyDock(Node):

def __init__(self):
super().__init__('survey_dock_client')
self._srv_client = self.create_client(SurveyDock, 'docking/dock_localizer/survey_dock')
while not self._srv_client.wait_for_service(timeout_sec=1.0):
self.get_logger().info('service not available, waiting again...')
self.req = SurveyDock.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)
survey_dock_client = SurveyDock()
response = survey_dock_client.send_request()
if response.success:
survey_dock_client.get_logger().info('Dock was surveyed successfully!')
else:
survey_dock_client.get_logger().error('Failed to survey dock')

survey_dock_client.destroy_node()
rclpy.shutdown()