3. 航迹规划核心要素:起点/终点坐标、飞行高度层、航点序列、时间窗口、能量约束

各位同行,今天我们来聊聊航迹规划里最实在的东西。说白了,就是五个核心要素。我做了这么多年无人机系统,见过太多规划器跑出来的轨迹看着漂亮,一飞就出问题。为什么?就是这五个要素没吃透。

嗯,咱们一个一个来拆解。

3.1 起点/终点坐标:不只是经纬度

起点和终点,听起来简单对吧?不就是经纬度加海拔?我告诉你,没那么简单。

我在项目中遇到过一件事:某次城市物流配送测试,起点设在楼顶停机坪,终点在另一个写字楼的收货平台。规划员只给了经纬度,结果无人机起飞后一直找不到正确的起飞朝向——因为起点坐标里没包含航向角

所以,一个完整的起点/终点坐标,应该包含:

  • 经纬度(WGS84坐标系,精度到小数点后6位)
  • 海拔高度(建议使用EGM96大地水准面,别用气压高度)
  • 航向角(起飞/降落时的机头朝向,0°为正北)
  • 安全半径(起点/终点周围的禁入区半径,通常5-10米)

核心经验:起点和终点的海拔高度,一定要用RTK实测值,别信地图API。城市里高楼反射严重,地图海拔误差能到5米以上——这个高度差足够让无人机撞上障碍物了。

3.2 飞行高度层:城市空域的「分层艺术」

城市低空空域怎么分?我个人的习惯是,按安全优先级来分层,而不是按高度均匀切分。

你想想看,城市里最危险的是什么?是地面的人和车,还有低矮的障碍物(电线杆、树木、路灯)。所以高度越低,风险越大,越需要严格管控。

我建议的分层方案是这样的:

高度层 高度范围 典型用途 风险等级
超低空层 0-30m 起降、悬停、紧急降落 极高
低空作业层 30-80m 物流配送、巡检、测绘
中空巡航层 80-150m 长距离航线、城市间飞行
高空过渡层 150-300m 跨区域飞行、应急通道

注意:每个高度层之间要留至少10米的缓冲带。我曾经见过一个案例,两架无人机在80米和90米高度飞行,结果一架因为气压计漂移,实际高度掉了12米,直接闯入了下层空域——差点撞上。

3.3 航点序列:路径的「骨架」

航点序列,说白了就是无人机要经过的「打卡点」。但这里有个坑:很多人把航点当成直线连接,忽略了转弯半径和动态约束。

我建议的航点设计原则:

  • 航点间距:城市环境建议50-100米一个航点。太密了计算量大,太疏了容易撞楼。
  • 转弯半径:每个航点处要预留转弯半径。固定翼至少30米,多旋翼可以小一些,但别小于5米。
  • 高度渐变:相邻航点的高度变化不要超过10米/100米。突然爬升或下降,不仅费电,还容易触发飞控的保护逻辑。

一个小技巧:我习惯在航点序列里插入「虚拟航点」——就是那些无人机不会真正悬停,但用来控制飞行轨迹的点。比如在转弯处前后各加一个虚拟航点,能让轨迹更平滑,减少能量消耗。

3.4 时间窗口:不是你想飞就能飞

时间窗口,这个要素很多人会忽略。但城市空域管理里,时间窗口就是「通行证」。

为什么要有时间窗口?

  • 空域共享:同一片空域可能有多架无人机同时飞行,时间窗口就是排班表。
  • 噪声管控:很多城市规定晚上10点到早上6点禁止无人机飞行(尤其是物流无人机)。
  • 气象窗口:风速超过8m/s、能见度低于2公里、有降水——这些时间段都不适合飞行。

我记得有一次帮客户做城市配送规划,他们要求早上8点到9点之间完成所有配送。结果一算,那个时间段正好是城市早高峰,地面人流密集,空域管控等级最高——根本批不下来。后来我们调整到上午10点到11点,才顺利通过审批。

时间窗口的黄金法则:预留至少30%的缓冲时间。比如任务需要20分钟,时间窗口至少要给26分钟。城市里突发情况太多——突然的侧风、临时的空域管制、GPS信号丢失——没有缓冲时间,任务大概率会失败。

3.5 能量约束:飞得回去才是硬道理

能量约束,说白了就是电池够不够用。但这里有个误区:很多人只看续航时间,忽略了能量消耗的动态变化。

我建议的能量约束模型包含三个维度:

  1. 基础能耗:平飞时的功率消耗,跟速度、重量、空气密度有关。
  2. 机动能耗:转弯、爬升、下降时的额外能耗。爬升100米消耗的能量,相当于平飞500米。
  3. 安全余量:至少保留20%的电量用于应急。我曾经遇到过无人机在返航途中遇到强逆风,电量从30%直接掉到12%——幸好预留了安全余量,不然就炸机了。

这里给一个简单的能量计算公式(我项目里常用的):

# 能量约束检查函数
def check_energy_constraint(route, battery_capacity_wh, reserve_ratio=0.2):
    """
    route: 航点序列 [(lat, lon, alt, speed), ...]
    battery_capacity_wh: 电池总能量 (瓦时)
    reserve_ratio: 安全余量比例
    """
    total_energy = 0
    for i in range(len(route) - 1):
        p1, p2 = route[i], route[i+1]
        # 水平距离 (km)
        dist_h = haversine(p1[0], p1[1], p2[0], p2[1])
        # 垂直高度变化 (m)
        delta_h = p2[2] - p1[2]
        # 速度 (m/s)
        speed = p2[3]
        
        # 基础能耗 (Wh/km) - 经验公式
        base_energy = 15 + 0.02 * speed**2
        # 爬升能耗 (Wh/100m)
        climb_energy = max(0, delta_h) * 0.8
        # 下降可回收 (Wh/100m) - 仅部分回收
        descend_energy = min(0, delta_h) * 0.3
        
        segment_energy = dist_h * base_energy + climb_energy + descend_energy
        total_energy += segment_energy
    
    usable_energy = battery_capacity_wh * (1 - reserve_ratio)
    return total_energy <= usable_energy, total_energy, usable_energy

警告:千万别信电池标称容量。实际可用容量通常只有标称的80%-90%(受温度、老化影响)。我一般会在规划时把电池容量打8折,这样飞起来心里踏实。

知识体系总览

这五个要素不是孤立的,它们互相影响。我画了一张图,帮你理清关系:

航迹规划核心要素关系图 起点/终点坐标 飞行高度层 航点序列 时间窗口 能量约束 安全 与效率 起降高度 层间过渡 续航匹配 五个要素通过「安全与效率」枢纽相互关联,缺一不可 空间基准 垂直分层 路径骨架 时序约束 能量预算

这五个要素,说白了就是航迹规划的「五根柱子」。少一根,整个规划就站不稳。我个人的习惯是,每次做规划前先列一个检查清单,把这五个要素逐个过一遍——坐标对不对?高度层选没选对?航点够不够平滑?时间窗口有没有冲突?电量够不够飞回来?

嗯,做到这五点,你的航迹规划至少不会出大问题。剩下的,就是经验积累了。


专注资料整理