控制功能包速览¶
本页用于快速识别 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 参考总览。