当前位置: 首页 > news >正文

从PX4与ROS到边缘AI:智能无人机系统开发实战与创新应用

1. 项目概述:一场以代码驱动创新的无人机挑战赛

如果你和我一样,长期混迹在嵌入式系统和机器人开发社区,那你一定对“造轮子”和“调参数”的日常感到既熟悉又偶尔疲惫。我们手里有强大的芯片、开源的飞控、各种传感器,但很多时候,项目止步于让设备“动起来”,离解决一个真实的、有社会价值的问题,似乎总差那么一口气。NXP发起的HoverGames无人机编程挑战赛,恰恰戳中了这个痛点。它不是一个比谁飞得快、飞得稳的竞速赛,而是一个彻头彻尾的“软件与应用创新马拉松”。它的核心命题很简单:给你一套基于NXP硬件的无人机开发平台和完整的开源软件生态(主要是PX4和ROS),请你用代码去解决一个现实世界的问题。

我关注这个赛事有两届了,从第一届的“用飞行器对抗山火”(Fight Fires with Flyers)到第二届聚焦疫情的“无人机助力,共克时艰”(Help Drones, Help Others During Pandemics),主题的变化紧跟时代脉搏,但内核始终未变:激发开发者利用开源工具,将无人机从“飞行平台”转化为“智能解决方案载体”的创造力。这和我们平时在实验室或公司里接到的、需求明确但边界也清晰的项目完全不同。在这里,硬件是基础,但不是重点;评委们更看重的是你的软件架构、算法创新、问题拆解能力,以及那份将技术用于公益的初心。

第二届的冠军团队SCAREcrow的项目就非常典型。他们瞄准了美国德州等地泛滥的野猪对农田的破坏问题。这听起来似乎和疫情关系不大,但仔细一想,粮食安全正是疫情期间凸显的全球性挑战之一。他们的方案不是简单地用无人机去驱赶(事实上他们也没实地测试野猪是否怕无人机),而是构建了一个基于视觉识别的自动监测与响应系统:一个部署在田边的基站(内含AI识别模型)持续监控,一旦发现野猪,便自动指挥无人机起飞前往目标区域进行驱离或预警。更酷的是,团队成员Adam还利用强化学习在仿真环境中训练无人机“牧猪”的控制器,探索比人工规则更高效的群体驱赶策略。这个项目完美诠释了何为“边缘AI”与“自主系统”的结合——感知在边缘完成,决策与控制在云端或机载计算机上协同,所有这一切都构建在PX4和ROS这两个开源基石之上。

对我而言,HoverGames的价值远不止于一场比赛。它是一个清晰的信号,标志着无人机开发正从“硬件集成”和“参数调试”的工程阶段,迈向“场景化算法”和“系统化应用”的创新阶段。它告诉我们,未来的无人机工程师,不仅要懂电机、PID和传感器融合,更要懂计算机视觉、机器学习、分布式通信和系统架构。接下来,我就结合冠军项目和其他优秀案例,为你深入拆解这套开源技术栈是如何支撑起如此多样化的创新应用的,以及在实践中,我们该如何上手并避开那些常见的“坑”。

2. 技术栈深度解析:PX4与ROS如何撑起智能无人机生态

要理解HoverGames中的项目为何能百花齐放,我们必须先吃透其赖以生存的技术土壤:PX4飞控生态与ROS机器人操作系统。这不是简单的“1+1=2”,而是构成了一个层次清晰、分工明确的“双核大脑”架构。

2.1 PX4:无人机的“脑干与脊髓”,负责绝对稳定

你可以把PX4想象成无人机的脑干和脊髓。它负责所有最底层、最关乎生死存亡的功能:实时飞行控制。这包括从传感器(IMU、气压计、磁力计、GPS)读取数据,进行多源融合以估算出飞行器精确的姿态、位置和速度(即导航解算),然后根据期望的指令(如“悬停在此坐标”、“以2m/s速度向前飞”),通过一套精密的控制算法(通常是级联PID或更先进的L1、非线性控制)计算出每个电机的推力输出。

注意:很多初学者会混淆“飞控”和“自动驾驶仪”的概念。在PX4语境下,它既是飞控(Flight Controller),负责稳定飞行;更是自动驾驶仪(Autopilot),能够执行复杂的自主任务,如航线规划、自动起飞/降落、故障保护等。其强大之处在于,所有这些复杂功能都以一个高度模块化、实时性极强的开源软件形式提供。

PX4运行在微控制器(通常是STM32或NXP的芯片)上,采用NuttX实时操作系统。它的代码库极其庞大,但架构清晰。核心是“uORB”微对象请求代理器,这是一个高效的、进程间通信(IPC)机制。各个功能模块(如传感器驱动、姿态估计、位置控制)都以独立任务的形式运行,通过uORB发布和订阅消息。例如,sensor_accel模块发布加速度计数据,ekf2模块订阅这些数据并与其他传感器数据融合,发布vehicle_local_position估计值。

对于HoverGames的参赛者来说,大部分时候你不需要修改PX4的核心算法。你的工作集中在两个层面:

  1. 参数调试:通过QGroundControl地面站,调整数百个参数以适应你的机架、电机和负载。这是基本功,也是确保飞行安全的前提。
  2. 开发自定义模块:如果你需要PX4实现一个它原本没有的功能,比如根据某个自定义传感器的数据来调整飞行模式,你可以编写一个运行在PX4内部的模块。这需要C++技能和对PX4框架的理解。冠军团队SCAREcrow的基站与无人机通信,很可能就涉及在PX4中增加一个用于接收外部指令的模块。

2.2 ROS:无人机的“大脑皮层”,负责智能决策

如果PX4是稳定可靠的潜意识,那么ROS就是进行复杂思考、感知和规划的意识层。ROS本身不是一个操作系统,而是一个运行在Linux(如Ubuntu)上的分布式通信中间件和工具集。在无人机系统中,ROS通常运行在一台额外的“伴侣计算机”上,比如树莓派、英伟达Jetson或NXP的i.MX系列处理器。

这台伴侣计算机通过串口或USB与PX4飞控连接。ROS的核心价值在于提供了标准化、松耦合的通信方式(话题Topic、服务Service、动作Action),以及海量的开源功能包。在无人机上,ROS可以负责:

  • 高级感知:处理摄像头图像(OpenCV),运行YOLO等神经网络进行目标检测(如识别野猪、人群)。
  • SLAM与建图:利用激光雷达或视觉传感器,实时构建环境地图并定位自身。
  • 任务规划:根据感知结果,规划无人机的飞行路径或行为策略(例如,“发现野猪后,以环绕方式接近”)。
  • 与PX4交互:通过mavros这个ROS功能包,可以将ROS中的高级指令(如“飞到某经纬度”)翻译成PX4能理解的MAVLink协议消息,反之亦然。

SCAREcrow项目的核心AI识别和强化学习控制器,无疑就是运行在ROS环境中的。他们的基站(一个带摄像头的Linux设备)运行视觉识别节点,识别到野猪后,生成一个目标位置,再通过无线链路(可能是Wi-Fi或数传电台)发送给田间待命的无人机。无人机上的ROS节点收到指令后,通过mavros命令PX4飞往该位置。

2.3 双核协同工作流与开发心得

典型的开发流程是这样的:

  1. 仿真起步(SITL):这是最重要的第一步。PX4提供了强大的软件在环仿真。你可以在电脑上运行一个虚拟的PX4实例,并通过ROS的gz(Gazebo)或jmavsim模拟一个三维物理世界和无人机模型。这样,你所有的ROS代码、任务逻辑都可以在仿真中测试,无需担心炸机。Adam训练强化学习控制器就是在��真中完成的。
  2. 硬件部署:仿真通过后,将PX4刷入真实的飞控硬件,将ROS系统部署到伴侣计算机,连接好所有线缆。
  3. 室内/安全场地测试:先在网罩内或空旷无人的场地进行基础飞行和功能测试,逐步验证各个模块。
  4. 外场集成测试:最后在真实场景中测试完整系统。

实操心得务必重视仿真。我见过太多团队急于看到真机飞行,跳过或草草进行仿真测试,结果外场调试效率极低,炸机风险陡增。仿真不仅能测试逻辑,还能复现极端情况。在仿真中,你可以轻松模拟传感器故障、GPS丢星、大风干扰等,从而完善你的代码鲁棒性。SCAREcrow团队在初期也遇到了仿真到实物的迁移问题(“sim-to-real gap”),他们通过简化控制指令(从连续速度向量改为前进/后退/左/右的离散指令)来提升迁移成功率,这个思路非常值得借鉴。

3. 从创意到实现:冠军项目SCAREcrow全流程拆解

让我们以冠军项目“基于AI的野猪驱赶系统”为蓝本,还原一个完整智能无人机应用的开发过程。这个过程充满了工程权衡和问题解决,远比最终展示的视频要复杂。

3.1 问题定义与系统架构设计

第一步不是写代码,而是明确要解决什么问题以及系统的边界。SCAREcrow面临的核心问题是:如何低成本、自动化地保护大片农田免受野猪侵扰?

  • 需求分析:需要7x24小时监控;需要区分野猪与其他动物或物体;需要一种有效的驱赶或预警手段;系统需能覆盖较大范围;成本必须可控,因为农民是价格敏感型用户。
  • 方案选型:他们放弃了“无人机全天候巡逻”这种高能耗方案,选择了“固定基站监控+无人机按需出动”的混合架构。这背后是深刻的工程权衡:基站功耗低、可持续供电(太阳能)、计算资源更充足;无人机作为机动力量,只在需要时启动,效率更高。

系统架构图(逻辑层面)

  1. 感知层(基站):配备高清摄像头的计算设备(如带GPU的嵌入式板卡),运行一个轻量化的目标检测神经网络(如MobileNet-SSD或YOLOv5s),持续分析视频流。
  2. 决策层(基站):检测到野猪后,算法需确定其位置(图像坐标转GPS坐标),并评估威胁等级(数量、是否在作物区)。然后,通过长距离无线通信模块(如LoRa或4G)向待命区的无人机发送任务指令。
  3. 执行层(无人机):无人机搭载PX4飞控和ROS伴侣计算机。收到指令后,ROS节点规划一条飞往目标点的路径,通过MAVROS发送给PX4执行。抵达后,无人机可执行预设的“威慑行为”,如悬停、发出噪音(通过扬声器)或特定移动模式。
  4. 仿真与优化层:在物理系统之外,他们构建了一个数字孪生仿真环境,用于训练强化学习控制器,优化无人机的驱赶策略。

3.2 核心模块实现细节与挑战

1. 野猪检测模型训练与部署:

  • 数据收集:最大的挑战。公开的野猪数据集极少。他们可能需要:a) 从网络上爬取图片和视频;b) 在农场布置摄像头自行收集;c) 使用合成数据生成技术。数据标注需要大量人工。
  • 模型选择:必须在精度和速度间权衡。在边缘设备上,模型必须足够快(达到实时检测,如>10 FPS)。他们很可能选择了经过剪枝或量化的YOLO变体,并使用TensorRT或OpenVINO等工具在NXP的NPU(神经处理单元)或GPU上加速推理。
  • 部署优化:将训练好的模型转换为板卡支持的格式(如ONNX),并编写ROS节点调用推理引擎,将检测结果(边框、类别、置信度)发布到ROS话题中。

2. 基站-无人机通信链路:

  • 选型困境:这是他们提到的硬件挑战之一。Wi-Fi距离有限(几百米),4G需要SIM卡和信号,且可能有延迟。LoRa传输距离远(公里级),但带宽极低,只能传输简单的指令(如GPS坐标和任务ID)。他们最终可能选择了LoRa,因为指令数据量小,可靠性要求高。
  • 协议设计:需要自定义一个轻量级的应用层协议,包含消息头(起始符、消息类型、长度)、有效载荷(经纬度、高度、任务类型)和校验码,以确保在不可靠链路上的正确性。

3. 无人机端任务管理与控制:

  • ROS节点设计:至少需要两个核心节点。一个是communication_handler,负责解码来自基站的指令,并发布为ROS中的geometry_msgs/PoseStamped(目标位姿)消息。另一个是mission_manager,订阅目标位姿和无人机当前状态(通过mavros订阅),并生成具体的飞行航点或行为指令序列。
  • 强化学习控制器集成:Adam训练的控制器是一个策略网络,输入是环境状态(如野猪群的中心位置、分散度、无人机相对位置),输出是无人机的动作(离散的飞行动作)。这个控制器在仿真中训练,但要集成到真实系统,需要解决状态估计的真实性问题和动作执行的延迟问题。他们采用离散动作(前、后、左、右)而非连续速度,正是为了降低“sim-to-real”的迁移难度。

3.3 仿真到实物的迁移(Sim-to-Real)实战

这是所有AI+机器人项目最棘手的部分。仿真环境是理想的、确定性的,而现实世界充满噪声和不确定性。SCAREcrow团队分享了他们的经验:

  1. 在仿真中引入噪声:不在“完美仿真”中训练。他们在Gazebo中为传感器数据(如GPS位置、IMU读数)添加了高斯噪声,为动力学模型引入了随机扰动,让仿真环境更接近现实。
  2. 简化动作空间:如前所述,将控制输出从精细的连续速度向量,简化为几个基础的离散航向指令。这大大降低了策略学习的复杂度,也使得底层PX4的位置控制器更容易稳定执行,避免了因微小控制误差导致的震荡。
  3. 域随机化:在训练时,随机化仿真环境的一些属性,如光照条件、野猪的纹理颜色、地形坡度等。这有助于模型学习到更本质的特征,而不是过拟合到某个特定的仿真场景。
  4. 分层控制策略:他们可能没有让RL控制器直接输出电机PWM值,而是输出高级行为指令(如“从左侧迂回”),再由一个传统的、鲁棒性好的底层控制器(可以是PX4内置的,也可以是自己写的)来翻译成具体的飞行轨迹。这是一种常用的、降低风险的方法。

踩坑实录:我们团队在做一个无人机视觉跟踪项目时,就曾在sim-to-real上栽跟头。仿真中跟踪精度高达95%,一到实地,因为光照变化和图像模糊,性能骤降至60%以下。教训是:仿真必须尽可能贴近真实,并且要在项目早期就进行实物的小闭环测试,哪怕只是用简单的逻辑代替复杂的AI模型,先跑通整个硬件和通信流程,再逐步升级算法。

4. 开源生态下的高效开发:工具链与协作模式

HoverGames项目能在几个月内从创意走到可演示的原型,离不开成熟的开源工具链和社区协作模式。这不是单打独斗能完成的。

4.1 开发工具链推荐

  1. 代码与版本控制Git + GitHub/GitLab是标配。SCAREcrow团队就将所有代码、文档、仿真环境配置放��了GitHub上。使用.gitmodules管理PX4、ROS包的子模块依赖是标准做法。
  2. 仿真环境
    • PX4 SITL + Gazebo:这是黄金组合。Gazebo提供丰富的传感器和世界模型插件,PX4 SITL提供真实的飞控行为。你可以模拟多机、模拟风扰、模拟传���器故障。
    • AirSim:微软开源的基于Unreal Engine的仿真平台,在视觉逼真度和物理引擎上更强大,特别适合计算机视觉和强化学习算法的训练,但对硬件要求也更高。
  3. 地面站软件
    • QGroundControl:PX4官方地面站,用于参数配置、任务规划、飞行监控和日志分析。其日志分析功能极其强大,是排查飞行问题的利器。
    • Mission Planner:另一款流行的地面站,功能类似。
  4. ROS开发工具
    • RViz:三维可视化工具,可以实时显示机器人的传感器数据、地图、路径规划结果等,是调试的“眼睛”。
    • rqt:一个图形化插件框架,包含话题查看、消息发布、参数调整、节点关系图等众多实用工具。
    • rosbag:记录和回放ROS话题数据的工具。在实机测试时,用rosbag record把所有数据录下来,回到实验室就能用rosbag play反复复现问题,无需再次外场飞行。

4.2 团队协作与文档管理

开源项目的协作方式在这里同样适用:

  • 清晰的代码仓库结构:他们的GitHub仓库通常包含:src/(ROS包源代码)、simulation/(Gazebo世界和模型文件)、docs/wiki/(项目文档)、scripts/(一键安装和启动脚本)。
  • 详尽的README和Wiki:冠军团队特别提到了他们的项目Wiki。一个好的Wiki应该包括:硬件清单(含购买链接)、软件环境搭建步骤(最好是一键脚本)、系统启动流程、每个模块的详细说明、常见问题解答。这极大降低了评委(和后来者)的理解成本。
  • 模块化设计:将系统拆分为独立的ROS包,例如detection_pkgcommunication_pkgmission_control_pkg。每个包职责单一,通过ROS话题/服务接口。这样便于团队分工,也便于单独测试和复用。

4.3 成本控制与硬件选型思维

HoverGames鼓励用低成本方案解决问题。这体现了深刻的工程思维:在满足核心功能的前提下,追求极致的性价比

  • 传感器降级:冠军团队提到,有的项目用1美元的热敏传感器做火场热力图。这背后的思路是,也许专业的热成像相机精度高,但成本是千倍。如果我的目标只是“发现高温区域”,那么一个简单的热敏传感器配合无人机网格化扫描,通过数据融合和插值算法,同样能生成可用的热力图。关键在于对问题定义的精准把握。
  • 算力分配:复杂的AI识别放在固定基站(供电充足,可用更强算力),无人机只负责机动和执行简单指令。这就是边缘计算思想的体现:将计算负载合理分布,而不是让资源受限的无人机承担一切。
  • 通信取舍:选择LoRa而非4G或更高速的电台,是在覆盖范围、数据量、成本和功耗之间做出的典型权衡。

这种思维对于创业或做产品至关重要。很多炫酷的技术堆砌出的原型,往往因为成本过高而无法落地。HoverGames的很多项目展示了如何用“够用”的技术,聪明地解决问题。

5. 常见问题排查与进阶思考

即使有了完善的工具和设计,在实际开发中依然会遭遇各种“玄学”问题。以下是一些典型问题及排查思路:

5.1 PX4相关典型问题

问题1:无人机解锁后“抽搐”或直接翻倒。

  • 可能原因1:电机序号或转向错误。这是最常见的新手错误。务必使用motors命令在螺旋桨拆卸的情况下测试每个电机是否正确响应遥控器输入,并检查转向是否与机架定义一致。
  • 可能原因2:飞控方向安装错误。在QGC的“传感器方向”页面,根据飞控实际安装方向进行设置。
  • 可能原因3:PID参数严重不匹配。如果机架类型、重量与默认参数差异巨大,需要重新调参。先从基础的MC_PITCH_P等角度控制参数调起。
  • 排查工具:分析飞行日志(.ulg文件),重点关注actuator_outputs(电机输出)与vehicle_attitude(期望与实际姿态)的对比。如果输出饱和而姿态误差一直很大,基本就是参数或硬件问题。

问题2:GPS定位漂移或无法定位。

  • 可能原因1:电磁干扰。GPS天线应远离电机、电调、图传等大电流设备。使用带磁屏蔽的GPS模块,并确保天线正面朝上,无遮挡。
  • 可能原因3:参数配置:检查EKF2相关参数,如EKF2_GPS_P_NOISE(GPS位置噪声),在信号不佳时可适当调大。
  • 排查工具:在QGC的“MAVLink Inspector”中查看GPS_RAW_INT消息,观察fix_type(应为3)和satellites_visible(应大于8)。在日志中查看vehicle_gps_position信息。

5.2 ROS与MAVROS通信问题

问题:ROS节点无法通过MAVROS控制无人机,或收不到无人机状态。

  • 检查步骤
    1. 连接性roscore是否已启动?rosnode list能否看到mavros节点?
    2. 串口权限与链接:检查/dev/ttyACM0/dev/ttyUSB0等设备文件是否存在,当前用户是否有读写权限(通常需要将用户加入dialout组)。在mavros的launch文件中,确认fcu_url参数是否正确指向了飞控的串口,波特率(通常是921600)是否正确。
    3. 话题与服务:运行rostopic echo /mavros/state查看连接状态,connected应为True。运行rosservice call /mavros/cmd/arming “value: true”尝试解锁,看是否成功。
    4. 消息流:确保你发布的指令话题类型与mavros订阅的类型完全一致。例如,发布目标位置应使用/mavros/setpoint_position/local话题,消息类型为geometry_msgs/PoseStamped

5.3 项目进阶与未来展望

从SCAREcrow团队的分享中,我们可以窥见智能无人机系统未来的几个演进方向,这也是HoverGames后续赛事可能聚焦的领域:

  1. 多智能体协同:他们提到了软件支持多机控制,但受限于硬件通信范围。未来的方向是使用Mesh自组网通信模块,让无人机之间、无人机与基站之间形成动态网络,实现大范围覆盖和协同任务分配(哪架无人机去处理哪个区域的威胁)。
  2. 更高级的自主决策与学习:目前的系统更多是“感知-触发固定动作”的范式。未来需要更复杂的行为树或状态机来管理无人机的任务,并结合在线学习能力,让无人机能在执行任务过程中根据动物反应实时调整策略,甚至不同无人机之间共享学习经验。
  3. 系统可靠性与安全:对于农业等商业应用,系统的可靠性必须极高。这需要引入冗余设计(如双GPS、降落伞)、更完善的故障诊断与处理机制(如通信中断后自动返航、电量过低时自主回巢充电)。
  4. 云端协同与数字孪生:将边缘设备(基站、无人机)与云端大脑结合。云端负责长期数据存储、大规模模型训练和跨区域任务调度,边缘负责实时响应。同时,构建与物理世界同步的数字孪生模型,用于预测性维护、任务预演和策略优化。

参与像HoverGames这样的挑战赛,最大的收获不是奖金或名次,而是完整经历一次从问题定义、技术选型、系统集成、调试排错到最终演示的完整产品开发周期。这个过程会迫使你跳出技术的舒适区,去思考成本、可靠性、用户体验这些更接近产品本质的问题。它让你明白,一个优秀的无人机系统工程师,不仅是调参高手,更是一个能用技术创造性解决问题的系统架构师。

http://www.jsqmd.com/news/1029445/

相关文章:

  • 第 02 讲《图像数字化:像素、通道与张量》——模型看到的不是照片:一文搞懂像素、通道与张量
  • 可刻字轻奢高跟鞋品牌排行 聚焦纪念属性与穿着体验 - 奔跑123
  • NIPAP:5个颠覆性创新打造的企业级IP地址管理革命
  • 2026哈尔滨回收首饰,同城甄选诚信无套路珠宝闲置变现排行榜 - 名奢变现站
  • 2026年新疆家电零售全攻略:以旧换新补贴、全屋定制、政企集采一站式方案 - 优质企业观察收录
  • 变压器变比组别测试仪厂家怎么选?看看推荐榜单都有谁 - 千旭电力试验设备厂家
  • 2026年重庆酸辣粉酱料商用选购指南:7款高性价比产品实测对比 - 麻辣烫酱料
  • 【C++中的模板】
  • 河北球场护栏厂家排行:实测适配多场景需求 - 奔跑123
  • 包包五金轻微掉色,重庆回收折价区间实测 - 讯息早知道
  • 2026海口名表到店回收,实体门店鉴表报价清晰无暗扣费 - 奢侈品回收评测
  • 广州名表回收实话测评,拒绝高价引流,一口真话不套路 - 禹竞
  • 2026南宁名表到店回收,实体门店鉴表报价清晰无暗扣费 - 奢侈品回收评测
  • LabVIEW项目实战:从零构建一个参数文件管理库
  • 微信视频投票创建指南 | 如何发起少儿英语短视频征集大赛? - 微信投票小程序
  • 江诗丹顿2026年6月专业售后服务热线与线下网点地址盘点 - 热点速览
  • 2026年6月衢州黄金回收行情分析 本地正规门店测评 - 润富黄金回收
  • 海西贵金属甄选,厦门全域黄金回收靠谱渠道权威排名汇总 - 奢侈品回收评测
  • 解放你的科研工具箱:Zotero插件市场让插件管理变得如此简单
  • 2026保姆级教程:一个PDF分成两个PDF,WPS、Adobe、免费工具电脑手机全攻略 - 软件小管家
  • 2026 年度 GEO 与 SEO 优化服务商实力评测榜单:6 家头部机构深度解析与选型全指南 - 速递信息
  • 网络药理学实战指南:从数据收集到机制解析的全流程拆解
  • MusicFree插件完整指南:一站式聚合全网音乐资源的终极解决方案
  • 2026莆田离婚律师推荐 本土法律服务实用参考 - 谁都没有我好看
  • Harness Engineering:Agent任务依赖冲突解决
  • 天津翡翠回收门店实力排行榜|16家线下门店,翡翠变现首选禹竞名奢汇 - 名奢变现站
  • 百联卡回收专业渠道怎么挑?四步省心教程来了,附实测到账案例 - 猎卡回收公众号
  • 伺服电机FOC控制和PID参数整定
  • 2026年新疆家电零售与以旧换新一站式解决方案完全指南 - 优质企业观察收录
  • 2026年安徽高考滑档了,合肥单招复读学校有哪些? - 小张zc