.. _sec_decision_system: 决策系统:“大脑”——机载计算机 ============================ **学习目标** - 理解机载计算机在智能无人机系统中的核心作用 - 掌握算力需求评估与硬件选型方法 - 能够根据应用场景选择合适的计算平台 在人体中,大脑是整个神经系统的指挥中心,负责接收感官信息、进行分析决策、并发出行动指令。智能无人机的\ *机载计算机*\ (Onboard Computer)正是扮演着”大脑”的角色:它接收来自相机、激光雷达、IMU等传感器的数据,运行感知、定位、规划等智能算法,最终将控制指令发送给飞控系统。 与飞控(Pixhawk)不同,机载计算机专注于”智能”层面的计算任务。飞控负责底层的姿态稳定和飞行控制,而机载计算机则负责高层的环境理解和任务决策。两者协同工作,才能实现真正的自主飞行。 .. _sec_why_onboard_computer: 为什么需要机载计算机? ---------------------- 从”遥控飞行”到”自主飞行”的跨越 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 传统的消费级无人机主要依赖遥控器进行人工操控,飞控只需处理姿态稳定和基本的飞行模式切换。然而,当我们希望无人机能够自主完成复杂任务时,单纯的飞控已经无法满足需求。 以”自主巡检”任务为例,无人机需要完成以下计算密集型任务: 1. **环境感知**\ :处理相机图像,识别障碍物、目标物体 2. **自主定位**\ :融合多传感器数据,实时估计自身位置 3. **路径规划**\ :根据环境信息,计算安全的飞行路径 4. **任务决策**\ :判断当前状态,决定下一步动作 这些任务涉及大量的矩阵运算、图像处理和深度学习推理,远超飞控芯片的计算能力。因此,我们需要一台专门的机载计算机来承担这些”智能”计算任务。 算力需求分析 ~~~~~~~~~~~~ 不同的智能应用对算力的需求差异巨大。为了量化这种需求,业界通常使用\ *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级别的平台。 .. _fig_computer_fc_arch: 机载计算机与飞控的职责划分 ~~~~~~~~~~~~~~~~~~~~~~~~~~ 理解机载计算机与飞控的职责边界,是设计无人机系统架构的关键。 **飞控(Pixhawk)的职责**\ : - 传感器数据采集(IMU、气压计、磁力计) - 姿态估计与稳定控制 - 电机PWM信号输出 - 飞行模式管理 - 故障保护(失联返航、低电量保护) **机载计算机的职责**\ : - 外部传感器数据处理(相机、激光雷达) - 高级感知算法(目标检测、SLAM) - 路径规划与决策 - 任务管理与状态机 - 与地面站的高级通信 两者之间通过\ *MAVLink协议*\ 进行通信,机载计算机通过MAVROS向飞控发送控制指令(如位置、速度目标点),飞控负责底层的控制执行。 :: ┌─────────────────────────────────────────────────────────────┐ │ 机载计算机 (Ubuntu/ROS) │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 感知算法 │ │ 定位算法 │ │ 规划算法 │ │ 任务管理 │ │ │ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │ │ └──────────────┴──────────────┴──────────────┘ │ │ │ │ │ ┌─────┴─────┐ │ │ │ MAVROS │ │ │ └─────┬─────┘ │ └──────────────────────────────┼───────────────────────────────┘ │ MAVLink (UART/USB) ┌──────────────────────────────┼───────────────────────────────┐ │ ┌─────┴─────┐ │ │ │ PX4 │ │ │ └─────┬─────┘ │ │ ┌──────────┐ ┌──────────┐ │ ┌──────────┐ ┌──────────┐ │ │ │ 姿态控制 │ │ 位置控制 │ │ │ 传感器 │ │ 电机输出 │ │ │ └──────────┘ └──────────┘ │ └──────────┘ └──────────┘ │ │ 飞控 (Pixhawk) │ └─────────────────────────────────────────────────────────────┘ .. _sec_onboard_computer_selection: 如何选择机载计算机? -------------------- 选择机载计算机时,需要综合考虑算力性能、功耗重量、接口资源和软件生态四个维度。本节将详细介绍三款主流的机载计算平台: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值需要结合具体的数据精度来理解: .. math:: \text{有效算力} = \text{标称TOPS} \times \text{利用率} \times \text{精度系数}. :label: eq_effective_tops 其中利用率取决于算法对硬件的优化程度,精度系数与使用FP32、FP16还是INT8有关。 功耗与散热 ^^^^^^^^^^ 无人机对功耗和重量极为敏感。机载计算机的功耗直接影响续航时间,而散热设计影响系统稳定性。 **TDP(热设计功耗)**\ :表示芯片在满负载时的最大功耗。实际使用中,可以通过功耗模式调节在性能和功耗之间取得平衡。 **功耗效率**\ :用TOPS/W(每瓦特算力)衡量,数值越高越适合无人机应用。 .. math:: \text{功耗效率} = \frac{\text{AI算力 (TOPS)}}{\text{功耗 (W)}}. :label: eq_power_efficiency 接口资源 ^^^^^^^^ 机载计算机需要连接多种外设,接口的丰富程度直接影响系统扩展性: - **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平台的优化版本。 **功耗效率计算** .. math:: \text{功耗效率}_{\text{Orin NX 16GB}} = \frac{100 \text{ TOPS}}{25 \text{ W}} = 4 \text{ TOPS/W}. :label: eq_orin_efficiency **适用场景** 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 | Intel Core i5-1240P / | | | / i7-1165G7 | i7-1260P | +-----------------------+-----------------------+-----------------------+ | CPU核心 | 4核8线程 | 12核16线程(4P+8E) | +-----------------------+-----------------------+-----------------------+ | 集成显卡 | Intel Iris Xe | Intel Iris Xe | +-----------------------+-----------------------+-----------------------+ | AI算力 | ~10 TOPS | ~12 TOPS | | | (OpenVINO优化) | (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特别适合需要处理大规模点云数据或运行内存密集型算法的场景。 **功耗效率计算** .. math:: \text{功耗效率}_{\text{NUC 12 Pro}} = \frac{12 \text{ TOPS}}{28 \text{ W}} \approx 0.43 \text{ TOPS/W}. :label: eq_nuc_efficiency 可以看出,在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 + | 8核 (4×Cortex-A76 + | | | 4×Cortex-A55) @ | 4×Cortex-A55) @ | | | 2.4GHz | 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的支持也在不断完善。 **功耗效率计算** .. math:: \text{功耗效率}_{\text{RK3588}} = \frac{6 \text{ TOPS}}{15 \text{ W}} = 0.4 \text{ TOPS/W}. :label: eq_rk3588_efficiency **适用场景** 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 │ └─ 结束 .. _sec_onboard_computer_interface: 机载计算机的数据接口 -------------------- 与飞控的通信接口 ~~~~~~~~~~~~~~~~ 机载计算机与飞控之间的通信是整个系统的关键链路。在ROS/Prometheus架构中,这一通信通过MAVROS实现。 **物理接口** ========= ========== ====================== 接口类型 波特率 说明 ========= ========== ====================== UART/串口 921600 bps 最常用,稳定可靠 USB - 方便调试,但可能有延迟 Ethernet - 适用于高带宽场景 ========= ========== ====================== **MAVROS核心话题** .. raw:: latex \diilbookstyleinputcell .. code:: bash # 状态信息(订阅) /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 | ``/camera/image_raw`` | +-----------------------+-----------------------+----------------------------------+ | RealSense D435i | USB 3.0 | ``/camera/color/image_raw``, | | | | ``/camera/depth/image_rect_raw`` | +-----------------------+-----------------------+----------------------------------+ | Livox Mid-360 | Ethernet | ``/livox/lidar`` | +-----------------------+-----------------------+----------------------------------+ | IMU | UART/USB | ``/imu/data`` | +-----------------------+-----------------------+----------------------------------+ .. _fig_ros_node_arch: ROS节点通信架构 ~~~~~~~~~~~~~~~ 在Prometheus框架中,各功能模块以ROS节点的形式运行,通过话题和服务进行通信。 :: ┌────────────────────────────────────────────────────────────────┐ │ 机载计算机 │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 相机驱动 │ │ 雷达驱动 │ │ MAVROS │ │ 感知算法 │ │ │ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │ │ │ /image │ /points │ /mavros/* │ │ │ │ │ │ │ │ │ └───────────────┴───────────────┴───────────────┘ │ │ │ │ │ ┌─────────┴─────────┐ │ │ │ ROS Master │ │ │ └─────────┬─────────┘ │ │ │ │ │ ┌───────────────┬──────┴──────┬───────────────┐ │ │ │ │ │ │ │ │ ┌────┴─────┐ ┌────┴─────┐ ┌────┴─────┐ ┌────┴─────┐ │ │ │ 定位算法 │ │ 规划算法 │ │ 控制算法 │ │ 任务管理 │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │ │ └────────────────────────────────────────────────────────────────┘ .. _sec_onboard_computer_practice: 动手实践:理解仿真中的计算架构 ------------------------------ 在Gazebo仿真环境中,机载计算机的角色由运行仿真的主机承担。通过本实践,我们将理解计算节点之间的通信关系。 实践1:查看系统计算负载 ~~~~~~~~~~~~~~~~~~~~~~~ **目标**\ :了解运行无人机仿真时的计算资源消耗 **步骤**\ : 1. 启动仿真环境 .. raw:: latex \diilbookstyleinputcell .. code:: bash # 终端1:启动Gazebo仿真 roslaunch prometheus_gazebo sitl_indoor_1uav_P450.launch 2. 打开系统监视器 .. raw:: latex \diilbookstyleinputcell .. code:: bash # 终端2:使用htop查看CPU和内存使用 htop 3. 观察各进程的资源占用 主要关注以下进程: =========== ============== =========== 进程名 功能 典型CPU占用 =========== ============== =========== gzserver Gazebo物理仿真 30-50% gzclient Gazebo可视化 20-40% px4_sitl PX4飞控仿真 5-15% mavros_node MAVLink通信 2-5% rosmaster ROS主节点 < 1% =========== ============== =========== 4. 记录观察结果 .. raw:: latex \diilbookstyleinputcell .. code:: bash # 使用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工具分析节点间的数据流向 **步骤**\ : 1. 启动仿真后,使用\ ``rqt_graph``\ 可视化节点关系 .. raw:: latex \diilbookstyleinputcell .. code:: bash # 终端3:启动rqt_graph rqt_graph 2. 在\ ``rqt_graph``\ 中,选择”Nodes/Topics (all)“视图 3. 观察并记录以下信息: - 哪些节点发布传感器数据? - MAVROS节点订阅和发布了哪些话题? - 数据从传感器到控制指令的流向是什么? 4. 使用\ ``rosnode``\ 命令获取详细信息 .. raw:: latex \diilbookstyleinputcell .. code:: bash # 查看所有运行中的节点 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:测量通信延迟 ~~~~~~~~~~~~~~~~~~~ **目标**\ :理解实时系统对延迟的要求 **步骤**\ : 1. 编写一个简单的延迟测量节点 .. raw:: latex \diilbookstyleinputcell .. code:: python #!/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() 2. 运行测试 .. raw:: latex \diilbookstyleinputcell .. code:: bash # 确保仿真已启动 python latency_test.py **预期输出**\ : :: [INFO] 延迟统计 (ms): 平均=2.35, 最大=5.12, 最小=0.89 .. **工程知识** 对于无人机控制系统,通信延迟应控制在10ms以内。如果延迟过大,可能导致控制不稳定。 实践4:算力需求估算 ~~~~~~~~~~~~~~~~~~~ **目标**\ :根据任务需求估算所需的计算资源 **方法**\ :使用以下公式估算算力需求 对于深度学习推理任务,算力需求可以用以下公式估算: .. math:: \text{所需算力 (TOPS)} = \frac{\text{模型计算量 (GOPs)} \times \text{帧率 (FPS)}}{1000 \times \text{硬件利用率}}. :label: eq_compute_requirement 其中: - GOPs = Giga Operations,模型单次推理的计算量 - 硬件利用率通常取0.3-0.7,取决于模型与硬件的匹配程度 **示例计算**\ : 以YOLOv5s模型为例: - 模型计算量:约16.5 GOPs - 目标帧率:30 FPS - 假设硬件利用率:0.5 .. math:: \text{所需算力} = \frac{16.5 \times 30}{1000 \times 0.5} = 0.99 \text{ TOPS}. :label: eq_yolov5s_compute 因此,运行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 → 飞控 → 电机 练习题 ------ 基础练习 ~~~~~~~~ 1. **概念辨析**\ :请说明机载计算机与飞控在职责上的主要区别。 2. **参数理解**\ :一款机载计算机标称50 TOPS算力,功耗为15W,请计算其功耗效率。 3. **接口识别**\ :列出机载计算机与飞控通信常用的三种物理接口。 进阶练习 ~~~~~~~~ 4. **选型分析**\ :某项目需要实现以下功能: - 运行YOLOv8目标检测(约25 GOPs) - 运行FAST-LIO激光SLAM - 处理720P@30FPS视频流 请分析应选择哪款机载计算机,并说明理由。 5. **系统设计**\ :绘制一个包含以下组件的无人机系统架构图: - 机载计算机(Jetson Orin NX) - 飞控(Pixhawk) - 相机(RealSense D435i) - 激光雷达(Livox Mid-360) 标注各组件之间的接口类型和主要数据流向。 思考题 ~~~~~~ 6. **边缘计算 vs 云计算**\ :讨论无人机为什么通常采用边缘计算(机载计算)而非云计算?在什么场景下可以考虑云端协同? 7. **未来趋势**\ :随着大模型(如视觉语言模型VLM)在机器人领域的应用,你认为未来无人机对机载计算机的算力需求会如何变化? 延伸阅读 -------- - `NVIDIA Jetson官方文档 `__ - `PX4 MAVROS使用指南 `__ - `ROS官方文档 `__