uav.vision_nodes.payload_perception_common#

Attributes#

Classes#

Functions#

_iter_detections(gray, detector, backend)

camera_model_from_info(→ tuple[numpy.ndarray, ...)

back_view_angle_deg(→ Optional[float])

compute_edge_metrics(→ tuple[float, int, int])

compute_edge_follow_control(→ tuple[bool, float, float])

_rpy_to_rot(→ numpy.ndarray)

_make_transform(→ numpy.ndarray)

_invert_transform(→ numpy.ndarray)

_yaw_from_rotation(→ float)

_object_points_for_tag_size(→ numpy.ndarray)

_estimate_camera_pose_in_vtol(→ Optional[tuple[float, ...)

_yaw_error_from_rvec(→ float)

_solve_detection_pose(→ Optional[tuple[int, ...)

detect_payload_apriltags(→ list[AprilTagObservation])

solve_payload_apriltags(→ list[AprilTagObservation])

detect_payload_unreeled(image[, lower_hsv, upper_hsv, ...])

_make_camera_info(→ sensor_msgs.msg.CameraInfo)

Synthesise a plausible pinhole CameraInfo from image dimensions.

Module Contents#

apriltag = None#
DEFAULT_TAG_FAMILY = 'tag36h11'#
VTOL_TAG_POSES#
class AprilTagObservation#
tag_id: int#
center_x: float#
center_y: float#
tvec_x: float#
tvec_y: float#
tvec_z: float#
yaw_error: float#
area: float#
pose_x: float | None = None#
pose_y: float | None = None#
pose_yaw: float | None = None#
class AprilTagDetectorCache#
_family: str | None = None#
_detector = None#
_backend: str | None = None#
get(family: str | None)#
property backend: str | None#
_iter_detections(gray: numpy.ndarray, detector, backend: str | None)#
camera_model_from_info(camera_info: sensor_msgs.msg.CameraInfo) tuple[numpy.ndarray, numpy.ndarray]#
back_view_angle_deg(tvec_x: float, tvec_y: float, tvec_z: float) float | None#
compute_edge_metrics(bgr: numpy.ndarray, lower_pink: numpy.ndarray, upper_pink: numpy.ndarray, lower_green: numpy.ndarray, upper_green: numpy.ndarray) tuple[float, int, int]#
compute_edge_follow_control(bgr: numpy.ndarray, lower_pink: numpy.ndarray, upper_pink: numpy.ndarray, lower_green: numpy.ndarray, upper_green: numpy.ndarray, orbit_dir: int = 1) tuple[bool, float, float]#
_rpy_to_rot(roll: float, pitch: float, yaw: float) numpy.ndarray#
_make_transform(rotation: numpy.ndarray, translation: numpy.ndarray) numpy.ndarray#
_invert_transform(transform: numpy.ndarray) numpy.ndarray#
_yaw_from_rotation(rotation_v_c: numpy.ndarray) float#
_object_points_for_tag_size(tag_size_m: float) numpy.ndarray#
_estimate_camera_pose_in_vtol(tag_id: int, rvec: numpy.ndarray, tvec: numpy.ndarray) tuple[float, float, float] | None#
_yaw_error_from_rvec(rvec: numpy.ndarray) float#
_solve_detection_pose(detection, object_points: numpy.ndarray, camera_matrix: numpy.ndarray, dist_coeffs: numpy.ndarray, *, flags: int | None = None, min_forward_distance_m: float | None = None) tuple[int, numpy.ndarray, numpy.ndarray, float, float, float, float, float] | None#
detect_payload_apriltags(gray: numpy.ndarray, camera_info: sensor_msgs.msg.CameraInfo, detector, detector_backend: str | None, tag_size_m: float) list[AprilTagObservation]#
solve_payload_apriltags(gray: numpy.ndarray, camera_info: sensor_msgs.msg.CameraInfo, detector, detector_backend: str | None, tag_size_m: float) list[AprilTagObservation]#
detect_payload_unreeled(image, lower_hsv: tuple[int, int, int] = (0, 0, 180), upper_hsv: tuple[int, int, int] = (180, 20, 255), debug: bool = False)#
_make_camera_info(image: numpy.ndarray) sensor_msgs.msg.CameraInfo#

Synthesise a plausible pinhole CameraInfo from image dimensions.

USAGE = Multiline-String#
Show Value
"""
Usage:
  python payload_perception_common.py unreeled <image>
  python payload_perception_common.py apriltag  <image> [tag_size_m] [tag_family]

Examples:
  python payload_perception_common.py unreeled frame.jpg
  python payload_perception_common.py apriltag frame.jpg 0.1 tag36h11
"""