注意事项:迅翼垂起固定翼无人机机载代码以固定翼控制为主,建议飞行过程中使用遥控器或地面站手动控制无人机旋翼模式的起降和转换。
固定翼单机控制主要分为两大功能包:uav_controller \ single_demo
uav_controller功能包提供单机基础控制功能,该功能包主要功能为创建一个无人机控制类的实例化,接收上层控制指令,发送控制指令至标准mavros控制话题。
uav_controller相关文件说明:
uav_model_lib/FW_class.py:固定翼单机控制类文件,封装基本常用的话题数据订阅接口,服务发送接口,话题数据订阅接口;uav_model_lib/useful_function.py:常用功能函数库;uav_model_lib/myPID.py:PID控制器类;uav_model_lib/spawn_uav.py:无人机数据订阅类;actuator_test.py:装机后起飞前舵面检测程序,检查mavros输出的控制信息是否与实际控制效果一致,防止出现反舵;vector_fw.py:固定翼单机控制节点,负责接受来自single_demo功能包中文件所运行的节点的控制指令,发布控制指令到/mavros/setpoint_raw/attitude话题实现姿态控制。
single_demo相关文件说明:
gvf_lib/gvf_circle.py:圆形导航向量场计算类文件,根据位置信息,计算得到期望速度矢量;gvf_lib/gvf_incline_circle.py:三维导航向量场计算类文件(圆柱面和斜平面的交线),根据位置信息,计算得到期望速度矢量;gvf_lib/gvf_poly.py:无奇异点导航向量场计算类文件(多项式轨迹),根据位置信息,计算得到期望速度矢量;gvf_lib/PolynomialTraj.py:多段多项式轨迹生成类;gvf_lib/PolynomialTraj.py:单段三次多项式轨迹类;uav_lib/spawn_uav.py:无人机数据订阅类;circle_track.py:圆形导航向量场路径跟踪控制节点文件,根据gvf_lib/gvf_circle.py中的向量场类,计算期望飞行速度,发布速度指令到自定义话题/control_signal/vector中,由uav_controller.py/vector_fw.py节点文件负责接收飞行速度指令;inclinecircle_track.py:三维导航向量(圆柱和斜平面的交线)场路径跟踪控制节点文件;poly_track.py:无奇异点导航向量场(多项式轨迹)路径跟踪控制节点文件;
架构设计
整体机载控制流程为:
- uav_controller订阅状态数据,发布控制指令到MAVROS话题;
- single_demo订阅状态数据,根据导航向量场类,计算期望飞行速度,将飞行速度指令发布给uav_controller类。
- 用户在single_demo中编写自己的上层控制代码,启动上层控制节点;
- 仅需一条roslaunch指令,即可开启仿真。这样架构下,用户只需要专心编写自己的上层控制代码,底层控制节点可切换、可扩展。