最后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 表格&#…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...

人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...

在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...
怎么开发一个网络协议模块(C语言框架)之(六) ——通用对象池总结(核心)
+---------------------------+ | operEntryTbl[] | ← 操作对象池 (对象数组) +---------------------------+ | 0 | 1 | 2 | ... | N-1 | +---------------------------+↓ 初始化时全部加入 +------------------------+ +-------------------------+ | …...

解析“道作为序位生成器”的核心原理
解析“道作为序位生成器”的核心原理 以下完整展开道函数的零点调控机制,重点解析"道作为序位生成器"的核心原理与实现框架: 一、道函数的零点调控机制 1. 道作为序位生成器 道在认知坐标系$(x_{\text{物}}, y_{\text{意}}, z_{\text{文}}…...
数据库正常,但后端收不到数据原因及解决
从代码和日志来看,后端SQL查询确实返回了数据,但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离,并且ai辅助开发的时候,很容易出现前后端变量名不一致情况,还不报错,只是单…...