Skip to Content
架构与接口

架构与接口

PlantUML:Robotac ROS 组件、话题与服务

bringup 入口

launch作用输出
sensors.launch启动 MID360 与 RGB 相机只产生传感器数据
perception.launch启动 FAST-LIO 与 AprilTag只产生定位和检测结果
flight_base.launch启动 MAVROS 与外部视觉 PX4 输出不解锁、不发布飞行设定点

底层 launch 包括 lidar_mid360s.launchcamera_rgb.launchfastlio_mid360s.launchapriltag_rgb.launchcamera_extrinsics.launchmavros_px4.launch。需要单独检查某个 组件时,可直接启动相应的底层 launch。

定位入口

launch输入输出
vision_preview.launch/sunray/odometry/robotac_localization/vision_pose_preview
vision_to_px4.launch/sunray/odometry预览话题和 /mavros/vision_pose/pose

两者使用同一实现。输入时间戳、四元数、速度跳变和空间范围检查通过后才发布。

编号示例

编号节点脚本主要输入主要输出或动作
0101_fcu_state.pyFCU 与落地状态只读日志
0202_local_pose.py本地位姿位置、姿态、频率、数据年龄
0303_apriltag_detection.py/tag_detectionsTag ID、相机坐标位置、检测时间
0404_apriltag_local_pose.pyTag、TF、本地位姿Tag 本地位置和水平偏差
0505_setpoint_preview.py参数~target,不发往 MAVROS
0606_hover.py飞控与定位状态起飞、悬停、降落
0707_move_relative.py飞控与定位状态相对位移、返回、降落
0808_waypoints.pyYAML 航点顺序航点和降落
0909_tag_centering_preview.pyTag 与本地位姿对准 ~target,不控制飞机
1010_tag_centering_flight.pyTag、飞控与定位状态对准、稳定 3 秒、降落
1111_payload_release.py舵机服务单次阻挡或释放动作

飞行服务与公共输出

会控制飞机的示例提供:

接口类型含义
~startstd_srvs/Trigger完成启动前检查后接受一次启动请求
~stopstd_srvs/Trigger中止当前执行并请求降落
~statestd_msgs/String当前状态名称,不使用 key=value 字符串
~activestd_msgs/Bool当前是否正在执行
~targetgeometry_msgs/PoseStamped当前或预览目标位姿

所有飞行示例只向 /mavros/setpoint_position/local 发布 PoseStamped。示例接口不使用原始 位置目标位掩码。

Tag 接口

接口类型方向
/robotac_examples/tag/posegeometry_msgs/PoseStampedTagTracker 输出
/robotac_examples/tag/errorgeometry_msgs/Vector3StampedTag 相对飞机的本地坐标偏差

TagTracker 只选择配置的 ID。连续检测结果跳变过大时,需要重新积累稳定样本。示例 10 在 飞行中长时间收不到 Tag 时会中止并请求降落。

舵机接口

接口类型含义
/robotac_servo/set_releasedstd_srvs/SetBooltrue 释放,false 阻挡
/robotac_servo/connectedstd_msgs/Bool串口当前可访问
/robotac_servo/statestd_msgs/Stringunknownblockedreleasederror
/robotac_servo/command_okstd_msgs/Bool最近一次命令是否成功

节点断线重连后不会重放上一条动作。

坐标系

  • FAST-LIO 输入与输出坐标以实际配置和安装标定为准。
  • MAVROS 本地位置按 ROS ENU 表示,PX4 内部转换由 MAVROS 处理。
  • 相对位移示例的 x 为起始航向前方,y 为左方,z 为上方。
  • Tag 本地位置依赖 map 到相机光学坐标系的有效 TF。

TF 名称、方向和数值必须分别验证。