Skip to main content
Version: Next

All Other Endpoints

Topics

localization/datum

The lat/lon coordinate of the datum. This value is sotred in persistent memory and loaded at runtime.

import rclpy
from rclpy.node import Node

from sensor_msgs.msg import NavSatFix


class Datum(Node):

def __init__(self):
super().__init__('datum_sub')
self.datum_sub = self.create_subscription(
NavSatFix, 'localization/datum', self.datum_cb, 10)
self.datum_sub # prevent unused variable warning

def datum_cb(self, msg):
self.last_datum_msg = msg

if __name__ == '__main__':
rclpy.init(args=args)
datum_sub = Datum()
rclpy.spin(datum_sub)
datum_sub.destroy_node()
rclpy.shutdown()

Services

control_selection/set_mode

Switch the control mode of the platform. Options are: ('AUTONOMY', 'MANUAL', 'NEUTRAL')

import rclpy
from rclpy.node import Node

from clearpath_control_msgs.srv import SetControlMode,
from clearpath_control_msgs.msg import ControlMode


class SetControlMode(Node):

def __init__(self):
super().__init__('set_control_mode_client')
self._srv_client = self.create_client(SetControlMode, 'control_selection/set_mode')
while not self._srv_client.wait_for_service(timeout_sec=1.0):
self.get_logger().info('service not available, waiting again...')
self.req = SetControlMode.Request()

def send_request(self, mode):
# set to manual mode
self.req.mode.mode = mode
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_control_mode_client = SetControlMode()
response = set_control_mode_client.send_request(ControlMode.MANUAL)
set_control_mode_client.get_logger().info('Control mode set to MANUAL mode.'))
set_control_mode_client.destroy_node()
rclpy.shutdown()