三维导航向量场功能 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,通信链路已建立。
5.3 切换至 Offboard 模式
切换至 Offboard 模式后,飞行器开始响应机载程序指令,并执行三维斜圆轨迹跟踪控制。

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