Connector) and fleet (FleetConnector) connectors support publishing, with fleet connectors using methods prefixed with publish_robot_* that require a robot_id parameter.
Publishing methods are mostly thin wrappers around RobotSession methods from the InOrbit Edge SDK, except for the publish_pose() and publish_map() methods which include additional map handling logic.
Pose and Map
Single-Robot Connectors
frame_id is different from the last published frame_id, the map metadata is automatically sent via publish_map().
Parameters:
x(float): X coordinatey(float): Y coordinateyaw(float): Yaw angle in radiansframe_id(str): Frame ID for the pose. If this frame_id exists in the maps configuration, the map will be automatically uploaded**kwargs: Additional arguments for pose publishing
frame_id changes in publish_pose().
Parameters:
frame_id(str): The frame ID of the map (must exist in configuration maps)is_update(bool): Whether this is an update to an existing map
Fleet Connectors
frame_id changes.
Telemetry
Odometry
Single-Robot:linear_speed: Linear velocityangular_speed: Angular velocitylinear_acceleration: Linear accelerationangular_acceleration: Angular acceleration
Key-Value Pairs
Single-Robot:System Statistics
Single-Robot:Cameras
Cameras are configured in theRobotConfig.cameras field and are automatically registered when the connector connects.
Camera Configuration
Cameras are configured usingCameraConfig from the InOrbit Edge SDK. Each camera in the RobotConfig.cameras list is automatically registered with InOrbit.
Example configuration:
_connect() phase, so no additional code is needed in your connector implementation.
Publishing Best Practices
- Pose Updates: Publish pose updates regularly in your
_execution_loop()method - Map Updates: Maps are automatically updated when the
frame_idchanges. Ensure all frame_ids used in poses are defined in your configuration - Telemetry Frequency: Use the
update_freqconfiguration to control how often your execution loop runs - Error Handling: Wrap publishing calls in try-except blocks to handle network errors gracefully
- Async Operations: Use
asyncio.gather()to publish multiple data types concurrently for better performance