最后100米配送
1. 项目概述
1.1 项目目标
- 集成无人机与电动车:设计并实现将无人机固定在电动车上,利用电动车的电源进行飞行,实现高楼内部从电动车位置到用户办公/居住地点的最后100米精准配送。
- 低成本实现:通过利用电动车现有的电源和结构,降低整体系统成本。
- 高效运营:支持一天约100单的配送需求,确保无人机的高可靠性和高效率。
- 安全性:确保无人机在高楼内部复杂环境中的安全运行,避免对人群和财产造成损害。
1.2 主要需求
- 飞行距离:100米。
- 载重能力:1-2公斤。
- 导航精度:厘米级定位精度,确保精准降落。
- 自主飞行与避障:具备自动飞行、避障和返航功能。
- 低延迟通信:确保实时控制与数据传输。
- 安全性与稳定性:在高楼内部环境中稳定运行,避免碰撞和干扰。
- 成本控制:利用现有电动车的电源和结构,降低系统成本。
2. 硬件实现细节
2.1 无人机框架与动力系统
2.1.1 飞行框架
- 选择:采用轻量化的四旋翼无人机框架,碳纤维或塑料材质,重量控制在500克以内。
- 尺寸:边长约300mm,适合1-2公斤的载重。
- 参考型号:DJI F330、自定义轻量化四旋翼框架。
2.1.2 电机与螺旋桨
- 电机:选择低成本、高效率的电机,如2212型号,约920KV。
-
- 推荐型号:Emax MT2212 920KV。
- 螺旋桨:8英寸或9英寸螺旋桨,平衡推力与效率。
-
- 推荐型号:Gemfan 8040或类似规格。
- 电调(ESC):20A至30A电调,4个。
-
- 推荐型号:BLHeli_S ESC 20A。
2.1.3 电池与电源管理
- 电源来源:利用电动车的电池供电,确保无人机电池与电动车电池的兼容性。
- 电池类型:轻量化的锂聚合物电池(LiPo),容量根据飞行时间需求选择。
-
- 推荐型号:3S或4S LiPo电池,容量在2200mAh至4000mAh之间。
- 电源分配:使用电源分配板(Power Distribution Board, PDB)将电动车电源分配给无人机各组件。
- 充电方案:设计电动车与无人机共用充电接口,简化充电过程。
2.1.4 动力系统布线
- 连接方式:确保所有连接稳固,采用防震设计,避免飞行中松动。
- 线材选择:使用细而高强度的电缆,减少重量。
2.2 控制系统
2.2.1 飞控板选择
- 推荐型号:Pixhawk 4或Pixhawk 5X,基于STM32F7或STM32H7系列微控制器,兼容ArduPilot。
- 功能:
-
- 多传感器接口(I2C, UART, SPI等)。
- 支持RTK-GPS和视觉辅助定位。
- 支持自动飞行、避障和返航功能。
2.2.2 传感器
- IMU(惯性测量单元):内置于Pixhawk飞控板。
- RTK-GPS模块:Ublox ZED-F9P,实现厘米级定位精度。
- 气压计:内置于Pixhawk,用于高度测量。
- LiDAR模块:如LIDAR Lite v3,用于地面扫描与降落辅助。
- 视觉传感器:高分辨率摄像头(如Runcam Eagle或Intel RealSense),用于视觉定位与避障。
- 近距离传感器:额外安装如ToF传感器或红外传感器,提高近距离障碍物检测能力。
2.3 通信系统
2.3.1 无线控制模块
- 频段:2.4GHz。
- 模块:基于Wi-Fi(如ESP8266)或LoRa模块,用于地面站与无人机之间的通信。
- 接口:通过UART或SPI连接到飞控板。
- 协议:使用ArduPilot支持的MAVLink协议。
2.3.2 FPV系统
- 摄像头:高清摄像头,如Runcam。
- 传输模块:5.8GHz无线视频传输模块。
- 接收设备:配备显示器或使用智能手机进行实时监控。
2.4 配送系统设计
2.4.1 配送盒设计
- 材质:轻质塑料或ABS材料,具备一定的保温性能。
- 结构:
-
- 上盖和下盖,通过铰链连接,支持自动开闭。
- 内部加装减震垫,保护外卖食品。
- 重量:控制在200克以内。
2.4.2 自动开舱设计
- 驱动方式:舵机或电动推杆控制舱门。
-
- 推荐型号:SG90舵机或小型电动推杆。
- 控制逻辑:
-
- 接近目标点:无人机到达目标区域,准备降落。
- 舱门打开:通过飞控板发送控制信号,驱动舵机打开舱门。
- 外卖释放:外卖容器通过机械装置(如滑轨)缓慢释放到地面。
- 舱门关闭:外卖释放完成后,舱门自动关闭,准备下次配送。
2.4.3 软着陆系统
- 减震装置:在无人机底部安装弹性减震器或气囊。
-
- 推荐型号:弹性橡胶垫或可充气气囊。
- 降落策略:
-
- 减缓下降速度:逐步降低无人机的下降速度,避免快速坠落。
- 软着陆:通过减震装置吸收冲击,保护外卖和无人机自身。
3. 软件实现细节
3.1 系统架构
- 操作系统:PX4或ArduPilot固件。
- 模块划分:
-
- 飞行控制模块:内置于ArduPilot,实现PID控制、姿态稳定和运动控制。
- 导航与定位模块:处理RTK-GPS和视觉定位数据,规划飞行路径。
- 通信模块:管理与地面站的双向通信。
- 避障模块:实时检测并规避障碍物。
- 配送系统模块:控制配送舱的开闭和外卖释放。
- 安全与应急模块:监控电池、信号并执行返航或应急降落。
3.2 ArduPilot配置与定制
3.2.1 飞控系统安装
- 安装固件:
-
- 下载最新版本的ArduPilot固件,使用QGroundControl或Mission Planner进行固件安装到Pixhawk飞控板上。
- 传感器校准:
-
- 使用地面站软件进行IMU、气压计、RTK-GPS和LiDAR的校准,确保数据准确性。
- 航点设置:
-
- 在地面站软件中设置起飞点(电动车位置)和目标点(用户地址)的航点,配置自动飞行参数。
3.2.2 高精度定位配置
- RTK-GPS设置:
-
- 基站配置:在固定位置部署RTK基站,连接Ublox ZED-F9P模块。
- 无人机端配置:在飞控板上配置RTK-GPS模块,确保与基站实时通信,获取高精度定位数据。
- 视觉辅助定位:
-
- 摄像头集成:将高分辨率摄像头与嵌入式处理单元(如NVIDIA Jetson Nano)连接,进行实时图像处理。
- 特征检测与匹配:使用OpenCV库,识别地面标志物或预设的视觉标记(如二维码、AR标记),实现视觉定位。
- 数据融合:将视觉定位数据与RTK-GPS数据融合,通过ArduPilot的传感器融合功能,提升定位精度。
- 姿态调整:根据视觉反馈,调整无人机的降落姿态,确保平稳降落。
3.2.3 避障与安全功能配置
- LiDAR避障配置:
-
- 传感器集成:将LiDAR模块连接到飞控板的I2C或UART接口。
- 配置参数:
-
-
- 在地面站软件中启用LiDAR避障功能。
- 设置安全距离和避障策略,如自动改变航向或高度。
-
- 超声波避障配置:
-
- 传感器连接:将HC-SR04超声波传感器连接到飞控板的GPIO接口。
- 配置参数:
-
-
- 在地面站软件中启用超声波避障功能。
- 设置触发阈值和避障动作。
-
3.2.4 配送流程控制
- 舱门控制集成:
-
- 舵机连接:将舵机或电动推杆连接到飞控板的PWM输出接口。
- 脚本编写:在ArduPilot中编写脚本或使用Lua脚本功能,控制舱门的开闭时机。
- 配送逻辑:配置无人机在到达目标航点后自动执行舱门打开、外卖释放和舱门关闭的流程。
3.3 多无人机调度与管理
3.3.1 后端订单管理系统
- 技术选型:
-
- 后端框架:Node.js、Django或Spring Boot。
- 数据库:MySQL、PostgreSQL或MongoDB,存储订单、用户和无人机信息。
- 功能实现:
-
- 订单接收:通过用户端应用(APP或Web)提交订单,后端服务器接收并存储订单信息。
- 订单处理:根据订单位置、配送时间等参数,生成配送任务。
- 任务分配:将配送任务分配给空闲或最优的无人机,考虑无人机的当前位置、剩余电量、载重等因素。
- 状态更新:实时更新无人机的配送状态,供用户和管理系统查看。
3.3.2 任务调度算法
- 算法选型:
-
- 贪心算法:快速分配最近的无人机进行配送。
- 遗传算法或粒子群优化(PSO):用于优化复杂的调度问题,如考虑无人机之间的协同和最短路径。
- 实现步骤:
-
- 任务队列:将所有待配送订单放入任务队列。
- 无人机状态监控:实时监控所有无人机的状态,包括位置、载重、剩余电量等。
- 任务分配:根据调度算法,将订单分配给最合适的无人机。
- 路径规划:为每个无人机规划最优的飞行路径,避免无人机之间的路径冲突。
3.3.3 无人机集群管理
- 实现步骤:
-
- 集中控制:通过后端服务器集中管理所有无人机的任务和状态。
- 实时通信:确保无人机与服务器之间的实时通信,及时更新状态和任务指令。
- 冲突检测与避免:在路径规划时,考虑无人机之间的相对位置,避免飞行冲突。
3.4 能源管理与充电策略
3.4.1 电池管理系统(BMS)
- 功能:
-
- 监控无人机电池的电量、温度、电压等参数。
- 预防过充、过放和过热,确保电池的安全和寿命。
- 实现步骤:
-
- 传感器集成:在无人机上集成电池电量传感器和温度传感器。
- 数据监控:通过飞控板读取传感器数据,实时监控电池状态。
- 保护机制:在电量低于设定阈值时,自动触发返航或紧急降落功能。
3.4.2 充电站布局与管理
- 实现步骤:
-
- 充电站布局:在配送中心及关键区域(如各楼层的休息区、走廊等)部署充电站,分散无人机的充电负载。
- 充电管理系统:后端服务器管理充电站的使用情况,优化充电时间和顺序。
- 无人机调度:在无人机电量低时,自动将其调度至最近的充电站进行充电。
3.5 载重与配送优化
3.5.1 载重管理
- 实现步骤:
-
- 订单合并:在可能的情况下,将多个订单合并到同一无人机进行配送,优化载重利用率。
- 重量检测:无人机在起飞前,检测配送盒的重量,确保不超载。
3.5.2 配送路线优化
- 技术选型:
-
- 室内定位系统:结合RTK-GPS和视觉辅助定位,增强室内定位精度。
- 地理信息系统(GIS)集成:利用室内GIS数据,分析高楼内部的飞行路线。
- 最短路径算法:应用A*算法,计算最优飞行路径,避开障碍物。
- 实现步骤:
-
- 室内地图构建:使用SLAM技术或现有的室内地图数据,构建高楼内部的飞行环境模型。
- 路径规划:根据订单地址,规划最短且避开障碍物的飞行路径。
- 实时调整:根据实时障碍物检测和环境变化,动态调整飞行路径。
3.6 多无人机协同配送
3.6.1 任务分配策略
- 实现步骤:
-
- 负载均衡:确保每架无人机的配送任务均衡,避免某些无人机过载或空闲。
- 优先级管理:根据订单的紧急程度或用户需求,优先分配任务。
3.6.2 无人机间通信
- 实现步骤:
-
- 无线通信协议:采用Mesh网络或基于Zigbee的通信协议,实现无人机间的直接通信。
- 信息共享:无人机间共享位置信息、任务状态等,提高协同配送的效率。
4. 最后100米导航技术实现细节
4.1 高精度定位系统
4.1.1 RTK-GPS系统
- 硬件选型:
-
- 无人机端:Ublox ZED-F9P模块。
- 基站:部署固定基站在配送中心或附近区域,持续接收卫星信号并计算差分修正数据。
- 实现步骤:
-
- 基站设置:在固定位置部署RTK基站,配置天线和接收器。
- 无人机配置:无人机配备RTK接收器,与基站实时通信,获取高精度定位数据。
- 数据融合:结合IMU传感器,通过ArduPilot的传感器融合功能,实现高精度的位置估计。
4.1.2 视觉辅助定位
- 硬件选型:
-
- 摄像头:高分辨率广角摄像头,如Runcam Eagle或Intel RealSense。
- 处理单元:集成在无人机上的嵌入式计算平台,如NVIDIA Jetson Nano,用于实时图像处理。
- 实现步骤:
-
- 图像采集:实时获取地面图像,通过摄像头传输到处理单元。
- 特征检测与匹配:使用OpenCV或其他计算机视觉库,识别地面标志物或预设的视觉标记(如二维码、AR标记)。
- 位置校正:将视觉定位数据与RTK-GPS数据融合,进一步提高定位精度。
- 姿态调整:根据视觉反馈,调整无人机的降落姿态,确保平稳降落。
4.2 精准降落技术
4.2.1 视觉辅助降落
- 实现步骤:
-
- 目标识别:在电动车上安装可识别的视觉标记,如带有QR码的降落平台。
- 图像处理:无人机通过摄像头实时扫描地面,识别并定位降落标记。
- 自动对准:根据识别的标记位置,调整无人机的降落路径,确保垂直对准目标。
- 软着陆:结合气压计和视觉数据,控制降落速度,利用减震装置实现软着陆。
4.2.2 LiDAR辅助降落
- 硬件选型:
-
- LiDAR模块:如LIDAR Lite v3或RPLIDAR A1。
- 实现步骤:
-
- 地面扫描:在降落前,使用LiDAR模块扫描地面,识别降落区域的高度和障碍物。
- 数据处理:实时处理LiDAR数据,计算地面高度和障碍物位置。
- 降落控制:根据LiDAR反馈调整降落速度和路径,确保降落区域的安全性。
4.3 最后100米导航流程
- 进入最后100米区域:
-
- 当无人机接近目标位置时(例如剩余飞行距离小于200米),启动高精度定位和视觉辅助定位系统。
- 路径微调:
-
- 使用RTK-GPS和视觉数据对飞行路径进行微调,确保无人机在最后100米内的飞行轨迹精确。
- 降落准备:
-
- 启动降落程序,结合气压计、LiDAR和视觉数据,调整无人机的高度和速度,确保平稳降落。
- 精准降落:
-
- 使用视觉辅助降落技术,将无人机精准对准降落平台,实现安全、稳定的软着陆,并固定回电动车。
5. 高效配送管理支持一天100单
5.1 订单管理系统
5.1.1 后端服务器与数据库
- 技术选型:
-
- 后端框架:Node.js、Django或Spring Boot。
- 数据库:MySQL、PostgreSQL或MongoDB,存储订单、用户和无人机信息。
- 实现步骤:
-
- 订单接收:通过用户端应用(APP或Web)提交订单,后端服务器接收并存储订单信息。
- 订单处理:根据订单位置、配送时间等参数,生成配送任务。
- 任务分配:将配送任务分配给空闲或最优的无人机,考虑无人机的当前位置、剩余电量、载重等因素。
- 状态更新:实时更新无人机的配送状态,供用户和管理系统查看。
5.1.2 用户端应用
- 功能实现:
-
- 订单提交:用户通过APP选择餐品、输入配送地址,提交订单。
- 订单追踪:用户可以实时查看订单状态,包括无人机的位置、预计到达时间等。
- 通知推送:订单状态变化、无人机到达、配送完成等事件通过推送通知用户。
5.2 任务调度与多无人机协调
5.2.1 调度算法
- 算法选型:
-
- 贪心算法:快速分配最近的无人机进行配送。
- 遗传算法或粒子群优化(PSO):用于优化复杂的调度问题,如考虑无人机之间的协同和最短路径。
- 实现步骤:
-
- 任务队列:将所有待配送订单放入任务队列。
- 无人机状态监控:实时监控所有无人机的状态,包括位置、载重、剩余电量等。
- 任务分配:根据调度算法,将订单分配给最合适的无人机。
- 路径规划:为每个无人机规划最优的飞行路径,避免无人机之间的路径冲突。
5.2.2 无人机集群管理
- 实现步骤:
-
- 集中控制:通过后端服务器集中管理所有无人机的任务和状态。
- 实时通信:确保无人机与服务器之间的实时通信,及时更新状态和任务指令。
- 冲突检测与避免:在路径规划时,考虑无人机之间的相对位置,避免飞行冲突。
5.3 能源管理与充电策略
5.3.1 电池管理系统(BMS)
- 功能:
-
- 监控无人机电池的电量、温度、电压等参数。
- 预防过充、过放和过热,确保电池的安全和寿命。
- 实现步骤:
-
- 传感器集成:在无人机上集成电池电量传感器和温度传感器。
- 数据监控:通过飞控板读取传感器数据,实时监控电池状态。
- 保护机制:在电量低于设定阈值时,自动触发返航或紧急降落功能。
5.3.2 充电站布局与管理
- 实现步骤:
-
- 充电站布局:在配送中心及高楼各关键区域(如各楼层的公共区域)部署充电站,分散无人机的充电负载。
- 充电管理系统:后端服务器管理充电站的使用情况,优化充电时间和顺序。
- 无人机调度:在无人机电量低时,自动将其调度至最近的充电站进行充电。
5.4 载重与配送优化
5.4.1 载重管理
- 实现步骤:
-
- 订单合并:在可能的情况下,将多个订单合并到同一无人机进行配送,优化载重利用率。
- 重量检测:无人机在起飞前,检测配送盒的重量,确保不超载。
5.4.2 配送路线优化
- 技术选型:
-
- 室内定位系统:结合RTK-GPS和视觉辅助定位,增强室内定位精度。
- 地理信息系统(GIS)集成:利用室内GIS数据,分析高楼内部的飞行路线。
- 最短路径算法:应用A*算法,计算最优飞行路径,避开障碍物。
- 实现步骤:
-
- 室内地图构建:使用SLAM技术或现有的室内地图数据,构建高楼内部的飞行环境模型。
- 路径规划:根据订单地址,规划最短且避开障碍物的飞行路径。
- 实时调整:根据实时障碍物检测和环境变化,动态调整飞行路径。
5.5 多无人机协同配送
5.5.1 任务分配策略
- 实现步骤:
-
- 负载均衡:确保每架无人机的配送任务均衡,避免某些无人机过载或空闲。
- 优先级管理:根据订单的紧急程度或用户需求,优先分配任务。
5.5.2 无人机间通信
- 实现步骤:
-
- 无线通信协议:采用Mesh网络或基于Zigbee的通信协议,实现无人机间的直接通信。
- 信息共享:无人机间共享位置信息、任务状态等,提高协同配送的效率。
6. 系统架构与集成
6.1 系统架构图
+---------------------+
| 用户端应用 |
| (订单提交与追踪) |
+----------+----------+|v
+----------+----------+
| 后端服务器 |
| (订单管理与调度) |
+----------+----------+|v
+----------+----------+
| 通信网络层 |
| (无线通信与数据传输)|
+----------+----------+|v
+----------+----------+
| 无人机集群 |
| (导航、飞行控制等) |
+----------+----------+|v
+----------+----------+
| 电动车平台 |
| (电源与物理集成) |
+---------------------+
6.2 系统集成步骤
- 模块开发与测试:
-
- 独立开发:各功能模块(订单管理、飞行控制、导航、避障等)独立开发并测试,确保各自功能的稳定性。
- 接口定义:明确各模块之间的通信接口和数据格式,确保模块间的兼容性。
- 硬件集成:
-
- 无人机与电动车集成:设计无人机固定架,将无人机稳固地安装在电动车上,确保飞行时的稳定性。
- 电源连接:通过电源分配板将电动车的电池供电给无人机,同时确保电池电量管理系统的独立性和安全性。
- 软件集成:
-
- 飞控系统与导航集成:将ArduPilot飞控系统与高精度定位系统、视觉辅助定位系统集成,确保无人机在最后100米内的高精度导航和精准降落。
- 订单管理与调度集成:将后端订单管理系统与无人机调度系统集成,实现高效的任务分配和多无人机协调。
- 系统调试与优化:
-
- 功能测试:分别测试飞行控制、导航、避障、配送系统等功能模块,确保每个部分正常工作。
- 系统调试:进行全系统的飞行测试,调整控制参数,优化系统性能。
- 飞行测试
5.1 初步飞行
5.2 定位与导航测试
5.3 避障功能测试
5.4 配送系统测试
-
- 室内测试:
-
-
- 在室内进行低空飞行测试,验证PID控制器的稳定性。
- 测试基本飞行指令,如起飞、悬停、降落。
-
-
- RTK-GPS精度验证:
-
-
- 在高楼外部开阔区域进行RTK-GPS定位测试,确保定位数据准确。
-
-
- 视觉定位验证:
-
-
- 在电动车周围设置视觉标记,测试无人机的视觉定位精度。
-
-
- 航点飞行:
-
-
- 设置多个航点,测试无人机沿预定路径飞行的准确性。
-
-
- 超声波避障:
-
-
- 在飞行过程中设置障碍物,测试无人机的避障反应。
-
-
- 视觉避障:
-
-
- 在高楼内部复杂环境中进行飞行测试,验证视觉避障算法的有效性。
-
-
- 舱门控制:
-
-
- 测试舱门的开闭动作,确保可靠性。
-
-
- 外卖释放:
-
-
- 进行多次外卖释放测试,验证配送过程的顺利性和安全性。
-
-
- 软着陆:
-
-
- 测试减震装置的效果,确保无人机降落平稳。
-
- 优化与迭代
-
- 数据分析:
-
-
- 收集飞行数据,分析控制算法的表现,进行参数优化。
-
-
- 故障排查:
-
-
- 记录测试过程中出现的问题,逐步修复和优化硬件与软件。
-
-
- 功能增强:
-
-
- 根据测试结果,添加更多功能,如更高级的避障算法、智能配送路径规划等。
-
- 试点运行与反馈收集
-
- 试点部署:在高楼内限定区域进行试点运行,监测系统的实际表现,收集反馈进行改进。
- 用户反馈:通过用户调查和数据分析,了解用户体验,优化配送流程。
- 全面部署与运营
-
- 大规模部署:根据试点结果进行全面部署,开始大规模运营,支持一天100单的配送需求。
- 持续监控:通过后端系统实时监控无人机状态,确保系统的高效运行。
7. 控制算法实现
7.1 飞行控制代码框架
ArduPilot已内置成熟的飞行控制算法,包括PID控制、航点导航、避障等功能。因此,主要的定制工作集中在配送系统的控制逻辑和舱门操作上。
7.1.1 舱门控制脚本
使用ArduPilot的Lua脚本功能,控制配送舱的开闭。
-- delivery_control.luafunction open_delivery_box()-- 设置舵机到打开位置servo_set(6, 2000) -- 根据舵机的实际PWM范围调整gcs:send_text(6, "Delivery Box Opened")
endfunction close_delivery_box()-- 设置舵机到关闭位置servo_set(6, 1000) -- 根据舵机的实际PWM范围调整gcs:send_text(6, "Delivery Box Closed")
endfunction manage_delivery()if current_location == target_location thenopen_delivery_box()sleep(2000) -- 等待外卖释放close_delivery_box()initiate_landing()end
endreturn {main = manage_delivery
}
7.2 航点导航实现
ArduPilot支持自动航点导航,无需额外编写代码。通过地面站软件设置起飞点和目标航点即可。
7.2.1 设置航点
- 使用Mission Planner或QGroundControl:
-
- 连接飞控板,进入航点规划界面。
- 设置起飞点为电动车当前的位置。
- 设置目标航点为用户的配送地址。
- 配置自动飞行参数,如飞行速度、高度等。
7.3 避障功能实现
利用ArduPilot的避障功能,集成LiDAR和超声波传感器,实现实时避障。
7.3.1 LiDAR避障配置
- 连接LiDAR模块:将LiDAR模块连接到飞控板的I2C或UART接口。
- 配置参数:
-
- 在地面站软件中启用LiDAR避障功能。
- 设置安全距离和避障策略,如自动改变航向或高度。
7.3.2 超声波避障配置
- 连接超声波传感器:将HC-SR04超声波传感器连接到飞控板的GPIO接口。
- 配置参数:
-
- 在地面站软件中启用超声波避障功能。
- 设置触发阈值和避障动作。
7.4 安全与应急功能
7.4.1 自动返航
- 配置参数:
-
- 设置返航航点为电动车位置。
- 配置返航触发条件,如电量低、信号丢失等。
7.4.2 紧急降落
- 实现步骤:
-
- 监控系统状态:通过飞控板监控电量、信号强度和避障状态。
- 触发降落:在紧急情况下,自动触发降落程序,确保无人机安全降落回电动车。
8. 通信实现细节
8.1 无线通信配置
8.1.1 飞控板与无线模块通信
- 连接方式:
-
- VCC:3.3V
- GND:地
- TX:连接到飞控板的UART RX
- RX:连接到飞控板的UART TX
- 软件配置:
-
- 在地面站软件中配置无线模块的通信参数。
- 使用MAVLink协议,实现地面站与飞控板之间的数据传输。
8.2 地面站与无人机通信
8.2.1 地面站软件开发
- 开发平台:PC或嵌入式设备(如树莓派)。
- 软件工具:使用Mission Planner、QGroundControl等开源地面站软件进行配置和监控。
- 功能实现:
-
- 实时数据接收:接收无人机发送的位置信息、姿态数据、电量状态等。
- 飞行指令发送:发送起飞、降落、航点设置、返航等指令。
- 用户界面:显示无人机实时状态、地图位置、飞行路径等。
8.2.2 用户端应用开发
- 平台:iOS和Android移动设备。
- 开发工具:React Native、Flutter或原生开发(Swift/Kotlin)。
- 功能实现:
-
- 订单提交:用户通过应用提交外卖订单,并自动生成配送任务。
- 实时追踪:显示无人机的位置和飞行状态,更新预计到达时间。
- 通知推送:订单状态变化、无人机到达通知等。
9. 避障与安全实现
9.1 超声波传感器驱动
利用超声波传感器实现近距离障碍物检测和避障。
// obstacle.c#include "obstacle.h"void Obstacle_Init(void) {// 配置Trig引脚为输出,Echo引脚为输入GPIO_InitTypeDef GPIO_InitStruct = {0};// Trig引脚GPIO_InitStruct.Pin = TRIG_PIN;GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Pull = GPIO_NOPULL;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;HAL_GPIO_Init(TRIG_PORT, &GPIO_InitStruct);// Echo引脚GPIO_InitStruct.Pin = ECHO_PIN;GPIO_InitStruct.Mode = GPIO_MODE_INPUT;GPIO_InitStruct.Pull = GPIO_NOPULL;HAL_GPIO_Init(ECHO_PORT, &GPIO_InitStruct);
}float Read_Ultrasonic_Distance(void) {// 发送10us脉冲到TrigHAL_GPIO_WritePin(TRIG_PORT, TRIG_PIN, GPIO_PIN_SET);HAL_Delay(1); // 近似10us延时HAL_GPIO_WritePin(TRIG_PORT, TRIG_PIN, GPIO_PIN_RESET);// 读取Echo高电平持续时间uint32_t start_time = Get_Microseconds();while (HAL_GPIO_ReadPin(ECHO_PORT, ECHO_PIN) == GPIO_PIN_RESET && (Get_Microseconds() - start_time) < MAX_TIME) {}uint32_t echo_start = Get_Microseconds();while (HAL_GPIO_ReadPin(ECHO_PORT, ECHO_PIN) == GPIO_PIN_SET && (Get_Microseconds() - echo_start) < MAX_TIME) {}uint32_t echo_end = Get_Microseconds();uint32_t duration = echo_end - echo_start;float distance = (duration * 0.0343) / 2.0f; // cmreturn distance;
}Obstacle_Data Read_Obstacle(void) {Obstacle_Data obs;obs.distance = Read_Ultrasonic_Distance();if (obs.distance < SAFE_DISTANCE_CM) {obs.is_obstacle = 1;} else {obs.is_obstacle = 0;}return obs;
}
9.2 视觉避障实现
利用视觉传感器和嵌入式计算单元(如NVIDIA Jetson Nano),实现实时图像处理与障碍物检测。
- 硬件连接:将高分辨率摄像头连接到NVIDIA Jetson Nano,配置与飞控板的数据通信。
- 软件流程:
-
- 图像采集:实时获取摄像头图像,通过CUDA加速的OpenCV库进行处理。
- 目标检测:使用预训练的深度学习模型(如YOLOv3)检测障碍物。
- 深度计算:通过双目视觉或LiDAR数据计算障碍物距离。
- 避障决策:基于障碍物位置和距离,调整飞行路径或姿态。
- 通信接口:处理后的避障信息通过MAVLink协议传回飞控板,触发避障动作。
9.3 自动返航功能
利用ArduPilot内置的返航功能,确保在电量低或信号丢失时无人机能够安全返回电动车。
-- safety.luafunction monitor_safety()local battery_level = battery_voltage()local comm_active = communication_status()local obstacle_detected = check_obstacle()if battery_level < LOW_BATTERY_THRESHOLD or not comm_active or obstacle_detected thenreturn_home()end
endfunction return_home()-- 设置返航航点为电动车位置mission.set_return_to_launch()gcs:send_text(6, "Initiating Return Home")
endreturn {main = monitor_safety
}
10. 外卖配送系统实现
10.1 配送舱控制
10.1.1 舱门控制代码
使用ArduPilot的Lua脚本控制舱门的开闭。
-- delivery_control.luafunction open_delivery_box()-- 设置舵机到打开位置servo_set(6, 2000) -- 根据舵机的实际PWM范围调整gcs:send_text(6, "Delivery Box Opened")
endfunction close_delivery_box()-- 设置舵机到关闭位置servo_set(6, 1000) -- 根据舵机的实际PWM范围调整gcs:send_text(6, "Delivery Box Closed")
endfunction manage_delivery()if current_location == target_location thenopen_delivery_box()sleep(2000) -- 等待外卖释放close_delivery_box()initiate_landing()end
endreturn {main = manage_delivery
}
10.2 订单与飞行管理
10.2.1 订单处理
- 订单接收:通过用户端应用提交订单,系统生成配送任务。
- 任务分配:根据订单位置、无人机当前位置、剩余电量等参数,分配最合适的无人机进行配送。
- 航点生成:根据订单地址生成无人机的起飞点(电动车位置)和终点航点(用户地址)。
10.2.2 订单跟踪系统
- 后端服务器:
-
- 使用云服务(如AWS、Azure)搭建订单管理系统。
- 接收、存储订单信息,管理无人机配送任务。
- 实时数据同步:
-
- 无人机通过通信模块实时上传位置信息,服务器更新订单状态。
- 用户端应用通过API获取最新的配送状态和无人机位置。
10.2.3 用户通知系统
- 通知触发:
-
- 订单接收确认、配送开始、无人机接近、外卖释放等事件触发通知。
- 通知方式:
-
- 推送通知(APP通知、短信、邮件)。
- 实时地图显示无人机位置和预计到达时间。
11. 安全与应急预案实现
11.1 电池监控与保护
利用飞控系统的电池监控功能,确保无人机电池安全。
-- battery_monitor.luafunction monitor_battery()local voltage = battery_voltage()if voltage < LOW_BATTERY_THRESHOLD_VOLTAGE thenreturn_home()end
endfunction return_home()-- 设置返航航点为电动车位置mission.set_return_to_launch()gcs:send_text(6, "Low Battery: Initiating Return Home")
endreturn {main = monitor_battery
}
11.2 防干扰与失控保护
- 抗干扰设计:
-
- 屏蔽电缆:使用屏蔽的通信电缆,减少外界电磁干扰。
- 滤波电容:在电源输入端添加滤波电容,稳定电压供应。
- 失控保护模式:
-
- 信号监控:实时监控通信信号强度,若低于阈值,触发返航。
- 备用控制:在主要控制系统失效时,启用备用控制路径。
11.3 应急迫降系统
利用ArduPilot的紧急降落功能,确保在系统故障时无人机能够安全降落。
-- emergency_land.luafunction emergency_land()-- 降低飞行高度,减慢速度set_altitude_target(SAFE_LANDING_ALTITUDE)set_speed_target(SAFE_LANDING_SPEED)-- 等待无人机接近地面while current_altitude() > SAFE_LANDING_ALTITUDE do-- 持续调整姿态和速度end-- 触发软着陆activate_soft_landing()-- 关闭电源,停止电机shutdown_motors()
endreturn {main = emergency_land
}
12. 最后100米导航实现细节
12.1 高精度定位系统
12.1.1 RTK-GPS系统
- 硬件选型:
-
- 无人机端:Ublox ZED-F9P模块。
- 基站:部署固定基站在配送中心或附近区域,持续接收卫星信号并计算差分修正数据。
- 实现步骤:
-
- 基站设置:在固定位置部署RTK基站,配置天线和接收器。
- 无人机配置:无人机配备RTK接收器,与基站实时通信,获取高精度定位数据。
- 数据融合:结合IMU传感器,通过ArduPilot的传感器融合功能,实现高精度的位置估计。
12.1.2 视觉辅助定位
- 硬件选型:
-
- 摄像头:高分辨率广角摄像头,如Runcam Eagle或Intel RealSense。
- 处理单元:集成在无人机上的嵌入式计算平台,如NVIDIA Jetson Nano,用于实时图像处理。
- 实现步骤:
-
- 图像采集:实时获取地面图像,通过摄像头传输到处理单元。
- 特征检测与匹配:使用OpenCV或其他计算机视觉库,识别地面标志物或预设的视觉标记(如二维码、AR标记)。
- 位置校正:将视觉定位数据与RTK-GPS数据融合,进一步提高定位精度。
- 姿态调整:根据视觉反馈,调整无人机的降落姿态,确保平稳降落。
12.2 精准降落技术
12.2.1 视觉辅助降落
- 实现步骤:
-
- 目标识别:在电动车上安装可识别的视觉标记,如带有QR码的降落平台。
- 图像处理:无人机通过摄像头实时扫描地面,识别并定位降落标记。
- 自动对准:根据识别的标记位置,调整无人机的降落路径,确保垂直对准目标。
- 软着陆:结合气压计和视觉数据,控制降落速度,利用减震装置实现软着陆。
12.2.2 LiDAR辅助降落
- 硬件选型:
-
- LiDAR模块:如LIDAR Lite v3或RPLIDAR A1。
- 实现步骤:
-
- 地面扫描:在降落前,使用LiDAR模块扫描地面,识别降落区域的高度和障碍物。
- 数据处理:实时处理LiDAR数据,计算地面高度和障碍物位置。
- 降落控制:根据LiDAR反馈调整降落速度和路径,确保降落区域的安全性。
12.3 最后100米导航流程
- 进入最后100米区域:
-
- 当无人机接近目标位置时(例如剩余飞行距离小于200米),启动高精度定位和视觉辅助定位系统。
- 路径微调:
-
- 使用RTK-GPS和视觉数据对飞行路径进行微调,确保无人机在最后100米内的飞行轨迹精确。
- 降落准备:
-
- 启动降落程序,结合气压计、LiDAR和视觉数据,调整无人机的高度和速度,确保平稳降落。
- 精准降落:
-
- 使用视觉辅助降落技术,将无人机精准对准降落平台,实现安全、稳定的软着陆,并固定回电动车。
13. 测试与调试流程
13.1 硬件测试
- 电机与螺旋桨测试:
-
- 检查电机连接是否稳固,确保螺旋桨旋转正常。
- 测试ESC响应,确保电机速度可控。
- 传感器校准:
-
- 校准IMU传感器,确保姿态数据准确。
- 校准RTK-GPS模块,验证定位精度。
- 校准气压计和LiDAR,确保高度测量准确。
13.2 软件调试
- 模块单元测试:
-
- 分别测试飞行控制模块、导航模块、通信模块、避障模块等功能,确保每个模块独立工作正常。
- 集成测试:
-
- 将所有模块集成,进行系统级测试,检查各模块之间的协作是否正常。
13.3 飞行测试
13.3.1 初步飞行
- 室内测试:
-
- 在室内进行低空飞行测试,验证PID控制器的稳定性。
- 测试基本飞行指令,如起飞、悬停、降落。
13.3.2 定位与导航测试
- RTK-GPS精度验证:
-
- 在高楼外部开阔区域进行RTK-GPS定位测试,确保定位数据准确。
- 视觉定位验证:
-
- 在电动车周围设置视觉标记,测试无人机的视觉定位精度。
- 航点飞行:
-
- 设置多个航点,测试无人机沿预定路径飞行的准确性。
13.3.3 避障功能测试
- 超声波避障:
-
- 在飞行过程中设置障碍物,测试无人机的避障反应。
- 视觉避障:
-
- 在高楼内部复杂环境中进行飞行测试,验证视觉避障算法的有效性。
13.3.4 配送系统测试
- 舱门控制:
-
- 测试舱门的开闭动作,确保可靠性。
- 外卖释放:
-
- 进行多次外卖释放测试,验证配送过程的顺利性和安全性。
- 软着陆:
-
- 测试减震装置的效果,确保无人机降落平稳。
13.4 安全性验证
- 电池保护:
-
- 模拟低电量情况,测试自动返航和紧急降落功能。
- 信号丢失:
-
- 模拟通信中断,验证无人机的失控保护模式。
- 紧急迫降:
-
- 模拟系统故障,测试应急降落系统的可靠性。
13.5 优化与迭代
- 数据分析:
-
- 收集飞行数据,分析控制算法的表现,进行参数优化。
- 故障排查:
-
- 记录测试过程中出现的问题,逐步修复和优化硬件与软件。
- 功能增强:
-
- 根据测试结果,添加更多功能,如更高级的避障算法、智能配送路径规划等。
14. 实施步骤与时间规划
14.1 项目阶段划分
- 需求分析与规划(1周)
-
- 确定具体需求,制定详细的项目计划和时间表。
- 硬件采购与组装(3周)
-
- 采购开源飞控板、传感器模块、通信模块等硬件组件。
- 进行无人机与电动车的组装与初步测试。
- 软件安装与配置(4周)
-
- 安装ArduPilot飞控固件,进行传感器校准与系统配置。
- 开发配送舱控制脚本,集成避障与降落逻辑。
- 系统集成与调试(5周)
-
- 将飞控系统与订单管理系统集成,测试多无人机协同配送。
- 进行全系统的功能测试,优化飞行控制和调度算法。
- 飞行测试与优化(6周)
-
- 进行多次飞行测试,验证导航精度、避障功能和配送流程。
- 根据测试结果调整系统参数,提升性能和可靠性。
- 试点运行与反馈收集(4周)
-
- 在高楼内限定区域进行试点运行,收集用户反馈和系统运行数据,进行进一步优化。
- 全面部署与运营(持续)
-
- 根据试点结果进行全面部署,开始大规模运营,支持一天100单的配送需求。
- 持续监控和优化系统性能,确保高效和安全的运营。
14.2 资源与团队配置
- 项目经理:负责整体项目规划与进度管理。
- 硬件工程师:负责无人机与电动车的硬件选型、组装与调试。
- 嵌入式软件工程师:开发飞行控制、导航、通信等嵌入式系统软件。
- 后端开发工程师:搭建订单管理、任务调度和数据处理的后端系统。
- 前端开发工程师:开发用户端应用,实现订单提交与追踪功能。
- 数据科学家:优化调度算法和导航系统,提升系统智能化水平。
- 测试工程师:负责系统的全面测试与质量保证。
15. 技术实现代码示例
15.1 Lua脚本控制配送舱
利用ArduPilot的Lua脚本功能,控制配送舱的开闭和配送流程。
-- delivery_control.luafunction open_delivery_box()-- 设置舵机到打开位置servo_set(6, 2000) -- 根据舵机的实际PWM范围调整gcs:send_text(6, "Delivery Box Opened")
endfunction close_delivery_box()-- 设置舵机到关闭位置servo_set(6, 1000) -- 根据舵机的实际PWM范围调整gcs:send_text(6, "Delivery Box Closed")
endfunction manage_delivery()if current_location == target_location thenopen_delivery_box()sleep(2000) -- 等待外卖释放close_delivery_box()initiate_landing()end
endreturn {main = manage_delivery
}
15.2 任务调度与分配
在后端服务器上实现简单的任务调度逻辑,分配订单给最合适的无人机。
# scheduler.pyimport math
from drone import Drone
from order import Orderclass Scheduler:def __init__(self, drones, orders):self.drones = drones # List of Drone objectsself.orders = orders # List of Order objectsdef assign_tasks(self):for order in self.orders:best_drone = Nonemin_distance = float('inf')for drone in self.drones:if drone.is_available() and drone.can_carry(order.weight):distance = self.calculate_distance(drone.current_position, order.pickup_location)if distance < min_distance:min_distance = distancebest_drone = droneif best_drone:best_drone.assign_order(order)print(f"Order {order.id} assigned to Drone {best_drone.id}")def calculate_distance(self, pos1, pos2):return math.sqrt((pos1.x - pos2.x)**2 + (pos1.y - pos2.y)**2)
15.3 电池监控与自动返航
利用ArduPilot的电池监控功能,触发自动返航。
-- battery_monitor.luafunction monitor_battery()local voltage = battery_voltage()if voltage < LOW_BATTERY_THRESHOLD_VOLTAGE thenreturn_home()end
endfunction return_home()-- 设置返航航点为电动车位置mission.set_return_to_launch()gcs:send_text(6, "Low Battery: Initiating Return Home")
endreturn {main = monitor_battery
}
相关文章:
最后100米配送
1. 项目概述 1.1 项目目标 集成无人机与电动车:设计并实现将无人机固定在电动车上,利用电动车的电源进行飞行,实现高楼内部从电动车位置到用户办公/居住地点的最后100米精准配送。低成本实现:通过利用电动车现有的电源和结构&am…...
Linux的进程替换以及基础IO
进程替换 上一篇草率的讲完了进程地址空间的组成结构和之间的关系,那么我们接下来了解一下程序的替换。 首先,在进程部分我们提过了,其实文件可以在运行时变成进程,而我们使用的Linux软件其实也是一个进程,所以进一步…...
《计算机网络A》单选题-复习题库
1. 计算机网络最突出的优点是(D) A、存储容量大B、将计算机技术与通信技术相结合C、集中计算D、资源共享 2. RIP 路由协议的最大跳数是(C) A、13B、14C、15D、16 3. 下面哪一个网络层次不属于 TCP/IP 体系模型(D&a…...
闲谭Scala(2)--安装与环境配置
1. 概述 Java开发环境安装,需要两步,第一安装JDK,第二配置环境变量。 Scala的话,也是两步,第一安装Scale环境,第二配置环境变量。 需要注意的是,配置环境变量,主要是想让windows操…...
Python基于卷积神经网络的车牌识别系统开发与实现
1. 简介 车牌识别是人工智能在交通领域的重要应用,广泛用于高速违章检测、停车场管理和智能交通系统等场景。本系统通过基于卷积神经网络(CNN)的深度学习算法,结合 Python 和 MySQL 实现车牌的快速识别与管理。 系统特点&#x…...
Spring Boot集成Netty创建一个TCP服务器,接收16进制数据(自定义解码器和编码器)
Netty Netty是一个高性能、异步事件驱动的网络应用程序框架,它提供了对并发和异步编程的抽象,使得开发网络应用程序变得更加简单和高效。 在Netty中,EventLoopGroup是处理I/O操作的多线程事件循环器。在上面的示例中,我们创建了两个EventLoopGroup实例:bossGroup和worker…...
Python 中的 with open:文件操作的最佳实践
在 Python 中,文件操作是最常用的一项任务,无论是读取文件内容,还是将数据写入文件。传统的文件操作方式使用 open() 和 close() 函数来处理文件,但在实际开发中,我们推荐使用 with open() 语句来进行文件操作。本文将…...
哪些框架、软件、中间件使用了netty? 哪些中间件、软件底层使用了epoll?
使用 Netty 的软件、中间件和框架 Netty 是一个异步事件驱动的网络应用框架,广泛应用于构建高性能的网络应用程序。以下是一些使用了 Netty 的知名软件、中间件和框架: 1. Elasticsearch 描述:Elasticsearch 是一个分布式的搜索和分析引擎…...
AI 智能助手对话系统
一个基于 React 和 Tailwind CSS 构建的现代化 AI 对话系统,提供流畅的用户体验和丰富的交互功能。 项目链接:即将开放… 功能特点 🤖 智能对话:支持与 AI 助手实时对话,流式输出回答📁 文件处理ÿ…...
2024年秋词法分析作业(满分25分)
【问题描述】 请根据给定的文法设计并实现词法分析程序,从源程序中识别出单词,记录其单词类别和单词值,输入输出及处理要求如下: (1)数据结构和与语法分析程序的接口请自行定义;类别码需按下表格…...
Docker镜像瘦身:从1.43G到22.4MB
Docker镜像瘦身:从1.43G到22.4MB 背景1、创建项目2、构建第一个镜像3、修改基础镜像4、多级构建5、使用Nginx背景 在使用 Docker 时,镜像大小至关重要。我们从 create-react-app (https://reactjs.org/docs/create-a-new-react-app.html)获得的样板项目通常都超过 1.43 GB…...
前端加解密对抗encrypt-labs
前言 项目地址:https://github.com/SwagXz/encrypt-labs 作者:SwagXz 现在日子越来越不好过了,无论攻防、企业src还是渗透项目,总能看到大量的存在加密的网站,XZ师傅的前端加密靶场还是很值得做一做的,环…...
Android Notification 问题:Invalid notification (no valid small icon)
问题描述与处理策略 1、问题描述 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.my.notifications/com.my.notifications.MainActivity}: java.lang.IllegalArgumentException: Invalid notification (no valid small icon): Notification(chan…...
Python爬虫教程——7个爬虫小案例(附源码)_爬虫实例
本文介绍了7个Python爬虫小案例,包括爬取豆瓣电影Top250、猫眼电影Top100、全国高校名单、中国天气网、当当网图书、糗事百科段子和新浪微博信息,帮助读者理解并实践Python爬虫基础知识。 包含编程资料、学习路线图、源代码、软件安装包等!【…...
Log4j2的Policies详解、SizeBasedTriggeringPolicy、TimeBasedTriggeringPolicy
文章目录 一、Policies二、SizeBasedTriggeringPolicy:基于文件大小的滚动策略2.1、文件达到指定大小就归档 三、TimeBasedTriggeringPolicy:基于时间间隔的滚动策略3.1、验证秒钟归档场景3.2、验证分钟场景3.3、验证小时场景 四、多策略组合使用五、扩展知识5.1、S…...
ES中查询中参数的解析
目录 query中参数match参数match_allmatch:匹配指定参数match_phrase query中其他的参数query_stringprefix前缀查询:wildcard通配符查询:range范围查询:fuzzy 查询: 组合查询bool参数mustmust_notshould条件 其他参数 query中参数 词条查询term:它仅匹配在给定字段…...
学习笔记:使用 pandas 和 Seaborn 绘制柱状图
学习笔记:使用 pandas 和 Seaborn 绘制柱状图 前言 今天在使用 pandas 对数据进行处理并在 Python 中绘制可视化图表时,遇到了一些关于字体设置和 Seaborn 主题覆盖的小问题。这里将学习到的方法和注意事项做个总结,以便之后的项目中可以快…...
【每日学点鸿蒙知识】placement设置top、组件携带自定义参数、主动隐藏输入框、Web设置字体、对话框设置全屏宽
1、popup组件placement设置top没有生效? 可以用offset属性将popup往下边偏移一下 来规避 2、组件携带自定义参数的接口是哪个? 参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-universal-attributes-…...
后端开发-Maven
环境说明: windows系统:11版本 idea版本:2023.3.2 Maven 介绍 Apache Maven 是一个 Java 项目的构建管理和理解工具。Maven 使用一个项目对象模型(POM),通过一组构建规则和约定来管理项目的构建…...
自动化办公-合并多个excel
在日常的办公自动化工作中,尤其是处理大量数据时,合并多个 Excel 表格是一个常见且繁琐的任务。幸运的是,借助 Python 语言中的强大库,我们可以轻松地自动化这个过程。本文将带你了解如何使用 Python 来合并多个 Excel 表格&#…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...
客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践
01技术背景与业务挑战 某短视频点播企业深耕国内用户市场,但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大,传统架构已较难满足当前企业发展的需求,企业面临着三重挑战: ① 业务:国内用户访问海外服…...
React父子组件通信:Props怎么用?如何从父组件向子组件传递数据?
系列回顾: 在上一篇《React核心概念:State是什么?》中,我们学习了如何使用useState让一个组件拥有自己的内部数据(State),并通过一个计数器案例,实现了组件的自我更新。这很棒&#…...
精益数据分析(98/126):电商转化率优化与网站性能的底层逻辑
精益数据分析(98/126):电商转化率优化与网站性能的底层逻辑 在电子商务领域,转化率与网站性能是决定商业成败的核心指标。今天,我们将深入解析不同类型电商平台的转化率基准,探讨页面加载速度对用户行为的…...
