payload.modes.PayloadAprilTagApproachMode#

Classes#

TagObservation

PayloadAprilTagApproachParams

PayloadAprilTagApproachMode

Drive the payload toward one AprilTag and terminate once close enough.

Module Contents#

class TagObservation#
tag_id: int#
tvec_x: float#
tvec_y: float#
tvec_z: float#
center_x: float#
center_y: float#
yaw_error: float#
area: float#
class PayloadAprilTagApproachParams#

Bases: vehicle_common.mode_loader.ParamsBase

tag_id: int | None = None#
tag_size_m: float = 0.0508#
tag_family: str = 'tag36h11'#
max_forward_speed: float = 0.2#
forward_gain: float = 0.5#
angular_gain: float = 0.003#
yaw_gain: float = 0.0#
stop_distance_m: float = 0.2#
tag_lost_coast_s: float = 0.5#
compressed: bool = False#
completion_state: str = 'done'#
class PayloadAprilTagApproachMode#

Bases: vehicle_common.mode.Mode

Drive the payload toward one AprilTag and terminate once close enough.

required_vision_nodes = ()#
requires_camera = True#
transition_labels = ('done', 'tag_lost')#
initialize(node: rclpy.node.Node, vehicle: payload.payload.Payload, params: PayloadAprilTagApproachParams) None#
_on_image(msg: sensor_msgs.msg.Image) None#
_on_compressed_image(msg: sensor_msgs.msg.CompressedImage) None#
_on_camera_info(msg: sensor_msgs.msg.CameraInfo) None#
_get_bgr_frame() object | None#
on_enter() None#
_detect_observations() dict[int, TagObservation] | None#
_publish_drive(linear: float, angular: float) None#
_now() float#
_handle_tag_timeout(now: float) bool#
_select_target(observations: dict[int, TagObservation]) TagObservation | None#
on_update(time_delta: float) None#
check_status() str#
on_exit() None#