决策系统:“大脑”——机载计算机¶
学习目标
理解机载计算机在智能无人机系统中的核心作用
掌握算力需求评估与硬件选型方法
能够根据应用场景选择合适的计算平台
在人体中,大脑是整个神经系统的指挥中心,负责接收感官信息、进行分析决策、并发出行动指令。智能无人机的机载计算机(Onboard Computer)正是扮演着”大脑”的角色:它接收来自相机、激光雷达、IMU等传感器的数据,运行感知、定位、规划等智能算法,最终将控制指令发送给飞控系统。
与飞控(Pixhawk)不同,机载计算机专注于”智能”层面的计算任务。飞控负责底层的姿态稳定和飞行控制,而机载计算机则负责高层的环境理解和任务决策。两者协同工作,才能实现真正的自主飞行。
为什么需要机载计算机?¶
从”遥控飞行”到”自主飞行”的跨越¶
传统的消费级无人机主要依赖遥控器进行人工操控,飞控只需处理姿态稳定和基本的飞行模式切换。然而,当我们希望无人机能够自主完成复杂任务时,单纯的飞控已经无法满足需求。
以”自主巡检”任务为例,无人机需要完成以下计算密集型任务:
环境感知:处理相机图像,识别障碍物、目标物体
自主定位:融合多传感器数据,实时估计自身位置
路径规划:根据环境信息,计算安全的飞行路径
任务决策:判断当前状态,决定下一步动作
这些任务涉及大量的矩阵运算、图像处理和深度学习推理,远超飞控芯片的计算能力。因此,我们需要一台专门的机载计算机来承担这些”智能”计算任务。
算力需求分析¶
不同的智能应用对算力的需求差异巨大。为了量化这种需求,业界通常使用TOPS(Tera Operations Per Second,每秒万亿次运算)来衡量AI推理能力。
应用场景 |
典型算法 |
算力需求 |
说明 |
|---|---|---|---|
基础视觉处理 |
OpenCV图像处理 |
< 1 TOPS |
简单的图像滤波、特征提取 |
视觉里程计 |
ORB-SLAM、VINS |
1-5 TOPS |
实时特征匹配与位姿估计 |
目标检测 |
YOLOv5/v8 |
5-20 TOPS |
实时物体识别与定位 |
激光SLAM |
FAST-LIO |
5-15 TOPS |
点云处理与建图 |
多传感器融合 |
FAST-LIVO |
15-30 TOPS |
视觉+激光+惯性融合 |
大模型推理 |
VLM、LLM |
50-100+ TOPS |
视觉语言模型等 |
工程经验
对于大多数科研和教学应用,20-40 TOPS的算力可以满足绝大部分需求。如果涉及多路视频流处理或大模型部署,则需要考虑100 TOPS级别的平台。
机载计算机与飞控的职责划分¶
理解机载计算机与飞控的职责边界,是设计无人机系统架构的关键。
飞控(Pixhawk)的职责:
传感器数据采集(IMU、气压计、磁力计)
姿态估计与稳定控制
电机PWM信号输出
飞行模式管理
故障保护(失联返航、低电量保护)
机载计算机的职责:
外部传感器数据处理(相机、激光雷达)
高级感知算法(目标检测、SLAM)
路径规划与决策
任务管理与状态机
与地面站的高级通信
两者之间通过MAVLink协议进行通信,机载计算机通过MAVROS向飞控发送控制指令(如位置、速度目标点),飞控负责底层的控制执行。
┌─────────────────────────────────────────────────────────────┐
│ 机载计算机 (Ubuntu/ROS) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 感知算法 │ │ 定位算法 │ │ 规划算法 │ │ 任务管理 │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ └──────────────┴──────────────┴──────────────┘ │
│ │ │
│ ┌─────┴─────┐ │
│ │ MAVROS │ │
│ └─────┬─────┘ │
└──────────────────────────────┼───────────────────────────────┘
│ MAVLink (UART/USB)
┌──────────────────────────────┼───────────────────────────────┐
│ ┌─────┴─────┐ │
│ │ PX4 │ │
│ └─────┬─────┘ │
│ ┌──────────┐ ┌──────────┐ │ ┌──────────┐ ┌──────────┐ │
│ │ 姿态控制 │ │ 位置控制 │ │ │ 传感器 │ │ 电机输出 │ │
│ └──────────┘ └──────────┘ │ └──────────┘ └──────────┘ │
│ 飞控 (Pixhawk) │
└─────────────────────────────────────────────────────────────┘
如何选择机载计算机?¶
选择机载计算机时,需要综合考虑算力性能、功耗重量、接口资源和软件生态四个维度。本节将详细介绍三款主流的机载计算平台:NVIDIA Jetson Orin NX、Intel NUC和Orange Pi RK3588。
核心参数解读¶
算力指标¶
机载计算机的算力通常从以下几个维度衡量:
CPU性能:影响通用计算任务,如ROS节点运行、数据预处理、算法控制逻辑等。通常用核心数、主频和架构来描述。
GPU/NPU算力:影响并行计算和AI推理任务,如图像处理、深度学习推理等。GPU算力用CUDA核心数和显存带宽衡量,NPU算力用TOPS衡量。
内存带宽:影响大规模数据处理能力。对于点云处理、多路视频流等场景尤为重要。
什么是TOPS?
TOPS(Tera Operations Per Second)表示每秒执行的万亿次运算。对于深度学习推理,主要指INT8定点运算能力。需要注意的是,TOPS值需要结合具体的数据精度来理解:
(12)¶\[\text{有效算力} = \text{标称TOPS} \times \text{利用率} \times \text{精度系数}.\]其中利用率取决于算法对硬件的优化程度,精度系数与使用FP32、FP16还是INT8有关。
功耗与散热¶
无人机对功耗和重量极为敏感。机载计算机的功耗直接影响续航时间,而散热设计影响系统稳定性。
TDP(热设计功耗):表示芯片在满负载时的最大功耗。实际使用中,可以通过功耗模式调节在性能和功耗之间取得平衡。
功耗效率:用TOPS/W(每瓦特算力)衡量,数值越高越适合无人机应用。
接口资源¶
机载计算机需要连接多种外设,接口的丰富程度直接影响系统扩展性:
USB 3.0/3.1:连接相机、激光雷达等高速传感器
UART:连接飞控(MAVLink通信)
Ethernet:网络通信、某些激光雷达的数据接口
CSI/MIPI:直连摄像头模组(低延迟)
GPIO:控制外设、触发信号等
软件生态¶
软件生态决定了开发效率和算法兼容性:
操作系统:Ubuntu是ROS的首选系统
CUDA支持:NVIDIA平台的GPU加速优势
ROS兼容性:是否有完善的驱动和工具链
深度学习框架:TensorRT、OpenVINO、RKNN等推理框架的支持
三款主流平台详解¶
NVIDIA Jetson Orin NX¶
NVIDIA Jetson Orin NX是目前无人机领域最主流的AI计算平台,在算力、功耗和软件生态之间取得了优秀的平衡。
核心规格
参数 |
Orin NX 16GB |
Orin NX 8GB |
|---|---|---|
CPU |
8核Arm Cortex-A78AE @ 2.0GHz |
6核Arm Cortex-A78AE @ 2.0GHz |
GPU |
1024核NVIDIA Ampere架构 |
1024核NVIDIA Ampere架构 |
AI算力 |
100 TOPS (INT8) |
70 TOPS (INT8) |
内存 |
16GB LPDDR5 |
8GB LPDDR5 |
内存带宽 |
102.4 GB/s |
102.4 GB/s |
功耗 |
10W-25W可配置 |
10W-25W可配置 |
尺寸 |
69.6mm × 45mm (SO-DIMM) |
69.6mm × 45mm (SO-DIMM) |
优势分析
Jetson Orin NX的核心优势在于其强大的GPU加速能力和完善的软件生态。NVIDIA Ampere架构的GPU不仅提供高算力,更重要的是与CUDA、TensorRT等成熟工具链的深度集成。这意味着大量的深度学习模型可以直接部署,无需复杂的模型转换和优化。
在ROS生态方面,Jetson平台有着最好的支持。NVIDIA官方提供了Isaac ROS,包含了针对机器人应用优化的感知、定位等功能包。此外,大量的开源项目(如ORB-SLAM、VINS、YOLO等)都有针对Jetson平台的优化版本。
功耗效率计算
适用场景
Orin NX特别适合以下应用:
需要运行深度学习模型的感知任务(目标检测、语义分割)
多传感器融合定位(视觉惯性里程计、激光SLAM)
对实时性要求高的规划与控制
需要处理高分辨率视频流的应用
配套开发套件
阿木实验室的Allspark 2-Orin NX是一款专为无人机设计的机载计算机,基于Jetson Orin NX模组,提供100 TOPS算力,并预装了SpireCV视觉开发环境。该套件针对无人机应用进行了接口优化,支持直连吊舱、激光雷达等设备。
Intel NUC¶
Intel NUC(Next Unit of Computing)是Intel推出的小型计算机系列,以其强大的x86架构CPU性能著称。
核心规格(以NUC 11/12代为例)
参数 |
NUC 11 Pro |
NUC 12 Pro |
|---|---|---|
CPU |
Intel Core i5-1135G7 / i7-1165G7 |
Intel Core i5-1240P / i7-1260P |
CPU核心 |
4核8线程 |
12核16线程(4P+8E) |
集成显卡 |
Intel Iris Xe |
Intel Iris Xe |
AI算力 |
~10 TOPS (OpenVINO优化) |
~12 TOPS (OpenVINO优化) |
内存 |
最大64GB DDR4 |
最大64GB DDR4 |
存储 |
M.2 NVMe SSD |
M.2 NVMe SSD |
功耗 |
15W-28W |
15W-28W |
尺寸 |
117mm × 112mm × 37mm |
117mm × 112mm × 54mm |
优势分析
Intel NUC的核心优势在于其强大的CPU性能和x86架构的兼容性。对于CPU密集型任务(如复杂的优化算法、多线程ROS节点),NUC往往能提供更好的性能。此外,x86架构意味着几乎所有的Linux软件都可以直接运行,无需考虑ARM兼容性问题。
大内存支持(最高64GB)使得NUC特别适合需要处理大规模点云数据或运行内存密集型算法的场景。
功耗效率计算
可以看出,在AI推理效率方面,NUC相比专用AI芯片有明显差距。但在CPU计算任务上,NUC仍然具有优势。
适用场景
Intel NUC适合以下应用:
CPU密集型算法(复杂优化、大规模矩阵运算)
需要大内存的应用(大规模建图、点云处理)
对x86软件兼容性有要求的场景
开发调试阶段(与桌面环境一致)
局限性
NUC的主要局限在于体积和重量。相比嵌入式平台,NUC的尺寸较大(约117×112×54mm),重量也更重(约500g左右),对小型无人机的载重能力提出了更高要求。此外,散热设计也需要额外考虑。
Orange Pi RK3588¶
Orange Pi RK3588是基于瑞芯微RK3588芯片的开发板,是国产高性能边缘计算平台的代表。
核心规格
参数 |
Orange Pi 5 Plus |
Orange Pi 5 Pro |
|---|---|---|
CPU |
8核 (4×Cortex-A76 + 4×Cortex-A55) @ 2.4GHz |
8核 (4×Cortex-A76 + 4×Cortex-A55) @ 2.4GHz |
GPU |
Mali-G610 MP4 |
Mali-G610 MP4 |
NPU |
6 TOPS (INT8) |
6 TOPS (INT8) |
内存 |
8GB/16GB/32GB LPDDR4x |
8GB/16GB LPDDR5 |
存储 |
eMMC + M.2 NVMe |
eMMC + M.2 NVMe |
功耗 |
5W-20W |
5W-20W |
尺寸 |
100mm × 75mm |
89mm × 56mm |
优势分析
RK3588平台的核心优势在于极高的性价比和良好的国产化适配。在算力方面,6 TOPS的NPU虽然不及Jetson Orin NX,但对于中等复杂度的AI任务已经足够。更重要的是,RK3588的价格仅为Jetson平台的1/3至1/2,大大降低了学习和原型开发的门槛。
在CPU性能方面,RK3588的4个A76大核提供了不俗的计算能力,运行ROS节点和常规算法毫无压力。
软件生态
瑞芯微提供了RKNN Toolkit用于深度学习模型的转换和部署。虽然生态成熟度不及NVIDIA,但常用的YOLO、MobileNet等模型都有良好支持。此外,RK3588对Ubuntu和ROS的支持也在不断完善。
功耗效率计算
适用场景
Orange Pi RK3588适合以下应用:
预算有限的科研项目和教学实验
中等复杂度的AI推理任务
对国产化有要求的项目
原型开发和算法验证
局限性
RK3588的主要局限在于软件生态的成熟度。相比NVIDIA平台,模型转换和优化需要更多的工程投入。此外,部分开源算法可能需要针对ARM平台进行适配。
选型对比与决策指南¶
维度 |
Jetson Orin NX 16GB |
Intel NUC 12 Pro |
Orange Pi RK3588 |
|---|---|---|---|
AI算力 |
100 TOPS |
~12 TOPS |
6 TOPS |
CPU性能 |
★★★☆☆ |
★★★★★ |
★★★★☆ |
GPU性能 |
★★★★★ |
★★☆☆☆ |
★★★☆☆ |
功耗效率 |
★★★★★ |
★★☆☆☆ |
★★★★☆ |
体积重量 |
★★★★☆ |
★★☆☆☆ |
★★★★★ |
软件生态 |
★★★★★ |
★★★★☆ |
★★★☆☆ |
价格 |
★★☆☆☆ (~$400-600) |
★★☆☆☆ (~$400-700) |
★★★★★ (~$100-200) |
选型决策树
开始选型
│
├─ 需要运行复杂深度学习模型?
│ │
│ ├─ 是 → Jetson Orin NX
│ │
│ └─ 否 → 继续
│
├─ 预算有限(< $200)?
│ │
│ ├─ 是 → Orange Pi RK3588
│ │
│ └─ 否 → 继续
│
├─ 需要大内存(> 16GB)或x86兼容?
│ │
│ ├─ 是 → Intel NUC
│ │
│ └─ 否 → Jetson Orin NX
│
└─ 结束
机载计算机的数据接口¶
与飞控的通信接口¶
机载计算机与飞控之间的通信是整个系统的关键链路。在ROS/Prometheus架构中,这一通信通过MAVROS实现。
物理接口
接口类型 |
波特率 |
说明 |
|---|---|---|
UART/串口 |
921600 bps |
最常用,稳定可靠 |
USB |
方便调试,但可能有延迟 |
|
Ethernet |
适用于高带宽场景 |
MAVROS核心话题
# 状态信息(订阅)
/mavros/state # 飞控连接状态、解锁状态、飞行模式
/mavros/local_position/pose # 本地位置(ENU坐标系)
/mavros/local_position/velocity # 本地速度
/mavros/imu/data # IMU原始数据
# 控制指令(发布)
/mavros/setpoint_position/local # 位置控制指令
/mavros/setpoint_velocity/cmd_vel # 速度控制指令
/mavros/setpoint_raw/local # 原始控制指令(位置/速度/加速度)
# 服务调用
/mavros/cmd/arming # 解锁/上锁
/mavros/set_mode # 设置飞行模式
与传感器的接口¶
机载计算机需要连接各种传感器,不同传感器使用不同的接口和协议。
传感器类型 |
典型接口 |
ROS话题示例 |
|---|---|---|
USB相机 |
USB 2.0/3.0 |
|
RealSense D435i |
USB 3.0 |
|
Livox Mid-360 |
Ethernet |
|
IMU |
UART/USB |
|
ROS节点通信架构¶
在Prometheus框架中,各功能模块以ROS节点的形式运行,通过话题和服务进行通信。
┌────────────────────────────────────────────────────────────────┐
│ 机载计算机 │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 相机驱动 │ │ 雷达驱动 │ │ MAVROS │ │ 感知算法 │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ │ /image │ /points │ /mavros/* │ │
│ │ │ │ │ │
│ └───────────────┴───────────────┴───────────────┘ │
│ │ │
│ ┌─────────┴─────────┐ │
│ │ ROS Master │ │
│ └─────────┬─────────┘ │
│ │ │
│ ┌───────────────┬──────┴──────┬───────────────┐ │
│ │ │ │ │ │
│ ┌────┴─────┐ ┌────┴─────┐ ┌────┴─────┐ ┌────┴─────┐ │
│ │ 定位算法 │ │ 规划算法 │ │ 控制算法 │ │ 任务管理 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ │
└────────────────────────────────────────────────────────────────┘
动手实践:理解仿真中的计算架构¶
在Gazebo仿真环境中,机载计算机的角色由运行仿真的主机承担。通过本实践,我们将理解计算节点之间的通信关系。
实践1:查看系统计算负载¶
目标:了解运行无人机仿真时的计算资源消耗
步骤:
启动仿真环境
# 终端1:启动Gazebo仿真
roslaunch prometheus_gazebo sitl_indoor_1uav_P450.launch
打开系统监视器
# 终端2:使用htop查看CPU和内存使用
htop
观察各进程的资源占用
主要关注以下进程:
进程名 |
功能 |
典型CPU占用 |
|---|---|---|
gzserver |
Gazebo物理仿真 |
30-50% |
gzclient |
Gazebo可视化 |
20-40% |
px4_sitl |
PX4飞控仿真 |
5-15% |
mavros_node |
MAVLink通信 |
2-5% |
rosmaster |
ROS主节点 |
< 1% |
记录观察结果
# 使用rostopic查看消息频率
rostopic hz /mavros/local_position/pose
rostopic hz /mavros/imu/data
预期输出:
subscribed to [/mavros/local_position/pose]
average rate: 30.012
min: 0.029s max: 0.037s std dev: 0.00185s
subscribed to [/mavros/imu/data]
average rate: 200.045
min: 0.004s max: 0.006s std dev: 0.00042s
实践2:分析节点通信关系¶
目标:使用ROS工具分析节点间的数据流向
步骤:
启动仿真后,使用
rqt_graph可视化节点关系
# 终端3:启动rqt_graph
rqt_graph
在
rqt_graph中,选择”Nodes/Topics (all)“视图观察并记录以下信息:
哪些节点发布传感器数据?
MAVROS节点订阅和发布了哪些话题?
数据从传感器到控制指令的流向是什么?
使用
rosnode命令获取详细信息
# 查看所有运行中的节点
rosnode list
# 查看MAVROS节点的详细信息
rosnode info /mavros
# 查看某个话题的发布者和订阅者
rostopic info /mavros/setpoint_position/local
预期输出示例:
Node [/mavros]
Publications:
* /mavros/state [mavros_msgs/State]
* /mavros/local_position/pose [geometry_msgs/PoseStamped]
* /mavros/imu/data [sensor_msgs/Imu]
...
Subscriptions:
* /mavros/setpoint_position/local [geometry_msgs/PoseStamped]
* /mavros/setpoint_velocity/cmd_vel [geometry_msgs/TwistStamped]
...
实践3:测量通信延迟¶
目标:理解实时系统对延迟的要求
步骤:
编写一个简单的延迟测量节点
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 文件名: latency_test.py
import rospy
from geometry_msgs.msg import PoseStamped
from std_msgs.msg import Header
import time
class LatencyTester:
def __init__(self):
rospy.init_node('latency_tester')
self.pub = rospy.Publisher('/test_pose', PoseStamped, queue_size=10)
self.sub = rospy.Subscriber('/mavros/local_position/pose',
PoseStamped, self.pose_callback)
self.latencies = []
def pose_callback(self, msg):
# 计算从消息时间戳到当前时间的延迟
current_time = rospy.Time.now()
msg_time = msg.header.stamp
latency = (current_time - msg_time).to_sec() * 1000 # 转换为毫秒
self.latencies.append(latency)
if len(self.latencies) >= 100:
avg_latency = sum(self.latencies) / len(self.latencies)
max_latency = max(self.latencies)
min_latency = min(self.latencies)
rospy.loginfo("延迟统计 (ms): 平均=%.2f, 最大=%.2f, 最小=%.2f" %
(avg_latency, max_latency, min_latency))
self.latencies = []
def run(self):
rospy.spin()
if __name__ == '__main__':
tester = LatencyTester()
tester.run()
运行测试
# 确保仿真已启动
python latency_test.py
预期输出:
[INFO] 延迟统计 (ms): 平均=2.35, 最大=5.12, 最小=0.89
工程知识
对于无人机控制系统,通信延迟应控制在10ms以内。如果延迟过大,可能导致控制不稳定。
实践4:算力需求估算¶
目标:根据任务需求估算所需的计算资源
方法:使用以下公式估算算力需求
对于深度学习推理任务,算力需求可以用以下公式估算:
其中:
GOPs = Giga Operations,模型单次推理的计算量
硬件利用率通常取0.3-0.7,取决于模型与硬件的匹配程度
示例计算:
以YOLOv5s模型为例:
模型计算量:约16.5 GOPs
目标帧率:30 FPS
假设硬件利用率:0.5
因此,运行YOLOv5s@30FPS理论上只需约1 TOPS的算力。但实际应用中,还需要考虑其他任务(如SLAM、规划等)的算力需求,以及系统开销。
任务:根据以下场景,估算所需的机载计算机配置
场景 |
算法组合 |
请估算总算力需求 |
|---|---|---|
室内导航 |
VINS-Fusion + 简单避障 |
_______ TOPS |
目标跟踪 |
YOLOv8m + 目标跟踪 |
_______ TOPS |
自主巡检 |
FAST-LIO + YOLOv5s + 路径规划 |
_______ TOPS |
小结¶
本节介绍了机载计算机在智能无人机系统中的核心作用。主要知识点包括:
概念理解:
机载计算机是无人机的”大脑”,负责感知、定位、规划等智能计算任务
与飞控形成”大脑+小脑”的协作架构,通过MAVLink/MAVROS通信
算力需求因应用场景而异,从几TOPS到上百TOPS不等
硬件选型:
Jetson Orin NX:AI算力强劲(100 TOPS),软件生态完善,是深度学习应用的首选
Intel NUC:CPU性能强,大内存支持,适合CPU密集型和x86兼容需求
Orange Pi RK3588:性价比高,适合预算有限的教学和原型开发
关键参数:
参数 |
含义 |
选型影响 |
|---|---|---|
TOPS |
AI推理算力 |
决定能运行的模型复杂度 |
内存 |
数据处理容量 |
影响点云/图像处理能力 |
功耗 |
能源消耗 |
影响续航时间 |
接口 |
外设连接能力 |
决定传感器配置灵活性 |
数据流向:
传感器数据 → 机载计算机 → [感知/定位/规划] → 控制指令 → MAVROS → 飞控 → 电机
练习题¶
基础练习¶
概念辨析:请说明机载计算机与飞控在职责上的主要区别。
参数理解:一款机载计算机标称50 TOPS算力,功耗为15W,请计算其功耗效率。
接口识别:列出机载计算机与飞控通信常用的三种物理接口。
进阶练习¶
选型分析:某项目需要实现以下功能:
运行YOLOv8目标检测(约25 GOPs)
运行FAST-LIO激光SLAM
处理720P@30FPS视频流
请分析应选择哪款机载计算机,并说明理由。
系统设计:绘制一个包含以下组件的无人机系统架构图:
机载计算机(Jetson Orin NX)
飞控(Pixhawk)
相机(RealSense D435i)
激光雷达(Livox Mid-360)
标注各组件之间的接口类型和主要数据流向。
思考题¶
边缘计算 vs 云计算:讨论无人机为什么通常采用边缘计算(机载计算)而非云计算?在什么场景下可以考虑云端协同?
未来趋势:随着大模型(如视觉语言模型VLM)在机器人领域的应用,你认为未来无人机对机载计算机的算力需求会如何变化?