host.camera_visualizer.routes.fields
Field model and AprilTag routes.
1"""Field model and AprilTag routes.""" 2 3 4def get_field_tags() -> dict: 5 """Get AprilTag positions from robotpy_apriltag field layout.""" 6 try: 7 from robotpy_apriltag import AprilTagField, AprilTagFieldLayout 8 layout = AprilTagFieldLayout.loadField(AprilTagField.kDefaultField) 9 tags = [] 10 for tag_id in range(1, 50): 11 pose = layout.getTagPose(tag_id) 12 if pose is None: 13 continue 14 t = pose.translation() 15 r = pose.rotation() 16 tags.append({ 17 'id': tag_id, 18 'x': round(t.X(), 4), 19 'y': round(t.Y(), 4), 20 'z': round(t.Z(), 4), 21 'roll_deg': round(r.x_degrees, 1), 22 'pitch_deg': round(r.y_degrees, 1), 23 'yaw_deg': round(r.z_degrees, 1), 24 }) 25 return { 26 'field_length': round(layout.getFieldLength(), 4), 27 'field_width': round(layout.getFieldWidth(), 4), 28 'tags': tags, 29 } 30 except Exception as e: 31 return {'error': str(e), 'tags': []}