三维导航向量场功能 Demo

本教程介绍三维导航向量场轨迹的构成方式、参数配置、机载程序启动流程及实机飞行步骤。

1. 轨迹原理

三维向量场跟踪路径由圆柱面与斜平面的交线构成:

  • 从地面站俯视视角观察,飞行轨迹为圆形;
  • 从平行于地面的视角观察,飞行轨迹近似为一条直线。

2. 配置轨迹曲面

2.1 配置圆柱面

圆柱面由 Cylinder 类定义,其初始化函数如下:

Cylinder(
    center=[0, 0, 0],
    r=50.,
    ori=2,
    k=[0.1, 0.1, 0.1]
)
参数 说明
center 圆柱中轴线经过的点
r 圆柱面半径
ori 圆柱中轴线方向
k 向量场增益

2.2 配置斜平面

斜平面由 InclinePlane 类定义,其初始化函数如下:

InclinePlane(
    normal_vector=[1., 1., 5.],
    point=[0., 0., 100.],
    k=[0.1, 0.1, 0.1]
)
参数 说明
normal_vector 平面法向量
point 斜平面经过的点
k 向量场增益

3. 设置飞行方向

gvf_inclined_circle.py 文件中,GVF 类的 etTangentV(self, pos) 函数通过切向量的符号设置飞行方向。以下方向均以地面站俯视视角为准:

切向量设置 飞行方向
self.vt = np.cross(jac_1, jac_2) 顺时针
self.vt = -np.cross(jac_1, jac_2) 逆时针

4. 启动机载程序

4.1 连接机载电脑

使用 VS Code 通过 SSH 远程连接机载电脑,然后进入程序目录:

cd /home/program/swiftwing

4.2 启动 MAVROS

打开第一个终端,运行以下命令启动 MAVROS 连接:

roslaunch mavros swing.launch

4.3 启动三维轨迹跟踪节点

保持 MAVROS 终端运行,再打开一个终端,启动三维轨迹跟踪控制节点:

roslaunch single_demo plane_inclinecircle_track.launch

5. 确认飞控连接状态

启动节点后,需要等待程序获取无人机的飞行模式。只有终端中显示 POSCTL,才表示通信链路已经建立,可以继续准备切换至 Offboard 模式。

5.1 尚未获取飞行模式

如果终端尚未显示无人机模式,请继续等待,不要立即切换至 Offboard 模式。

  • 树莓派受算力限制,获取飞行模式通常需要等待一段时间;
  • NVIDIA Jetson 算力较高,通常可以更快获取飞行模式。

尚未获取无人机飞行模式

终端尚未获取无人机飞行模式。

5.2 已获取飞行模式

终端显示 POSCTL 后,表示程序已经能够获取无人机的飞行模式。此时应先调整好无人机的位置和朝向,再准备切换至 Offboard 模式。

终端显示 POSCTL 飞行模式

终端显示 POSCTL,通信链路已建立。

5.3 切换至 Offboard 模式

切换至 Offboard 模式后,飞行器开始响应机载程序指令,并执行三维斜圆轨迹跟踪控制。

三维斜圆轨迹控制程序运行状态

飞行器进入 Offboard 模式并开始响应机载控制程序。

6. 飞手操作流程

  1. 垂直起飞: 在多旋翼模式下解锁并垂直起飞,起飞时机头应朝向逆风方向。
  2. 爬升至安全高度: 飞行至约 30–40 米高度,确认前方无遮挡、机头方向开阔,再准备切换飞行模式。
  3. 切换至固定翼模式: 拨动飞行模式切换开关,将飞行器由多旋翼模式切换为固定翼模式。
  4. 调整实际航向: 进入固定翼模式后,根据飞控中设定的飞行方向,使用遥控器微调航向,使飞机实际飞行方向与自主控制的预期方向尽量保持一致。
  5. 开始自主飞行: 确认飞行姿态平稳后,切换至 Offboard 模式,开始执行自主三维斜圆轨迹飞行任务。
  6. 结束测试并返航: 使用遥控器将飞机飞回起飞点附近,并将航向调整至逆风方向。待飞机姿态平稳且机头前方无遮挡时,将飞行模式由固定翼切换回多旋翼模式。