控制功能包速览

本页用于快速识别 uav_controller 的节点与外部接口。需要理解控制公式和函数调用链时,请继续阅读固定翼控制器垂起固定翼控制器多旋翼控制器

uav_controller 位于上层算法与 MAVROS 之间。它订阅统一格式的控制指令,完成起飞、模式切换及控制量转换,再向 PX4 发布设定值。

主要节点

文件 对象 主要作用
vector_fw.py 固定翼 自动起飞、切入 OFFBOARD,将速度向量转换为姿态与推力
vector_vtol.py 垂起固定翼 垂直起飞、固定翼模式转换、速度或姿态控制
rotor.py 多旋翼 自动起飞、切入 OFFBOARD、速度控制
get_local_pose.py 单机/多机 从 Gazebo 读取真值位姿与速度,并发布统一坐标话题

上层控制接口

速度向量

  • 话题:/control_signal/vector
  • 消息:geometry_msgs/Vector3
  • 内容:期望三维速度向量

多机时,话题前增加无人机命名空间,例如 /uav2/control_signal/vector

姿态指令

  • 话题:/control_signal/att
  • 消息:std_msgs/Float64MultiArray
  • 数组顺序:[roll, pitch, yaw, force]

角度在源码控制链中按弧度处理。force 是控制器使用的纵向控制输入,不应直接理解为实机推力百分比。

状态与坐标数据

封装类读取的主要 MAVROS 话题包括:

  • /mavros/state
  • /mavros/local_position/pose
  • /mavros/local_position/velocity_local
  • /mavros/local_position/velocity_body
  • /mavros/global_position/global
  • /mavros/global_position/local
  • /mavros/imu/data

get_local_pose.py/gazebo/model_states 读取真值,并在单机模式发布 /vision_pose/pose/vision_speed/speed;多机模式发布到 /uavN/vision_pose/pose/uavN/vision_speed/speed

二次开发入口

  • 调整固定翼控制律:uav_controller/scripts/uav_model_lib/FW_class.py
  • 调整垂起控制与转换流程:uav_controller/scripts/uav_model_lib/VTOL_class.py
  • 调整多旋翼控制:uav_controller/scripts/uav_model_lib/Rotor_class.py
  • 修改 PID:myPID.py
  • 坐标与姿态转换:useful_function.py

开发新的上层算法时,通常不需要修改这些文件。优先参考 single_demo/scripts/uav_lib/spawn_uav.py 读取状态并发送统一控制指令。

Warning

控制节点会主动尝试解锁、起飞和切换飞行模式。运行前应确认当前连接的是 SITL 仿真实例,避免误连实机飞控。

全部类与函数签名见API 参考总览