ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

26年中国机器人及人工智能大赛全地形协同任务挑战赛开源分享

26年中国机器人及人工智能大赛全地形协同任务挑战赛开源分享 # 【省一开源】全地形协同零件分拣小车 | 遥控车自主车双系统完整实现 比赛成绩第二十八届中国机器人及人工智能大赛 — 全地形协同机器人零件分拣挑战赛 省级一等奖 时间2026年6月 代码仓库GitHub - 全地形协同零件分拣小车待补充你的GitHub地址--- 目录一、项目简介二、遥控车设计2.1 小车构思2.2 小车三主动轮履带底盘设计2.3 机械臂设计2.4 置物仓设计2.5 合并组装三、遥控器设计3.1 选择模块及主控芯片3.2 查找芯片手册3.3 绘画原理图3.4 打板、焊接3.5 测试遥控器四、调试遥控车及遥控器五、自主车设计5.1 小车构思5.2 K210 训练识别物体与通信连接5.3 组装、调试小车六、项目亮点与创新点七、代码结构说明八、致谢## 一、项目简介本项目研发了全地形协同零件分拣小车构建遥控车 自主车双机协同体系围绕“移动-感知-通信-执行”四环节攻关。整套系统可自主完成**扫码 → 抓取 → 越障 → 转运 → 识别 → 投放 → 返程**全流程作业在模拟赛道中实现 **100% 任务覆盖率**全程运行稳定可靠。| 系统组成 | 核心功能 | 关键技术 || --- | --- | --- || 遥控车 | 任务发起与物料转运 | 三主动轮履带底盘、机械臂、分仓置物、HC-05蓝牙遥控 || 自主车 | 自主识别与精准投放 | 坦克式履带底盘、K210视觉识别、近红外定位、批量倾倒机构 |小车装配图---## 二、遥控车设计### 2.1 小车构思** 任务需求分析**比赛场地包含扫码区、零件堆放台、二级台阶、投掷区、栅格共 5 种地形。遥控车作为任务发起与物料转运单元需要完成以下核心任务1. **扫码读取任务**通过 GM65 二维码扫描模块采集任务指令OLED 实时显示2. **精准抓取零件**机械臂抓取三种形状物块三棱柱、圆柱、正方体各 5 个共 15 个3. **攀越二级台阶**携带零件稳定通过 5cm 高二级台阶4. **安全运输物料**运输过程中物块不碰撞、不脱落5. **双车任务交接**将物块放置中转台触发自主车启动** 设计思路**围绕“遥控协同操控、分仓安全运输、机械精准抓取、越障稳定通行”四大核心模块遵循“功能 → 地形 → 结构”对应原则确保遥控车在复杂地形下作业的稳定性与高效性。---### 2.2 小车三主动轮履带底盘设计** 设计方案三主动轮履带 双辅助轮 复合动力底盘**传统移动机器人在应对非结构化地形时普遍存在单一驱动模式适应性不足的问题。轮式底盘在阶梯地形前动力不足纯履带底盘在平地转向不灵活且能耗高。**创新设计亮点**1. **结构融合设计**将履带的高通过性与轮式的高效率有机结合- 三组主动轮 履带包裹模拟履带驱动效果- 尾部双辅助轮作为动态配重抑制攀爬时后仰2. **摩擦力增强机制**- 在履带上均匀嵌入 **6mm 高防滑螺钉**- 摩擦系数提升 **60%**彻底解决攀爬打滑问题3. **动态配重系统**- 车尾配置辅助轮组作为动态配重- 越障时辅助轮接触地面承担重量- 重心偏移角控制在 **5° 以内**** 性能指标**| 指标 | 数据 || --- | --- || 二级台阶通过稳定性 | 提升 40% 以上 || 攀爬打滑率 | 从 60% 降至 0% || 最大后仰角 | 从 15° 控制在 5° 以内 || 负载能力 | 超 2kg || 栅格通过率 | 100% | ** 迭代过程**V1.0 纯轮式打滑率60%失败→ V2.0 履带主动轮组合打滑率30%后仰未解决→ V3.0 三主动轮履带双辅助轮最终方案---### 2.3 机械臂设计** 设计方案轻量化高增益机械臂 3D打印定制夹爪****机械臂结构**- **4 自由度设计**底座旋转、大臂、小臂、腕部 末端夹爪- **双舵机同步联动**小臂采用双舵机反向同步运动抓取力矩提升 **200%**- **齿轮增力夹爪**爪部舵机通过齿轮组驱动末端夹持力矩放大约 **150%****定制化 3D 打印夹爪**自主设计适配三种物块的专用夹爪优化夹持面弧度与开合行程| 物块形状 | 夹持方式 | 抓取成功率 || --- | --- | --- || 三棱柱 | 棱边夹持 | 100% || 圆柱 | 曲面夹持 | 100% || 正方体 | 平面夹持 | 100% |**⚡ 控制优化一步直达预设角度**将机械臂角度控制从“10度步进试探”改为“一步直达”预设角度模式预先标定抓取、分仓放置、触须触发等关键位置- 单次动作效率提升70% 以上- 单次抓取-放置动作耗时从 5s 缩短至 1.5s- 引入“0.3秒内不重复检测同一形状”逻辑避免误触发---### 2.4 置物仓设计** 设计方案独立分仓式物料转运系统****问题背景**传统多物块运输易发生碰撞干扰物块移位、掉落率高。**解决方案**1. **三仓物理隔离**- 车身集成 **3 个独立置物分仓**- 按物块类型三棱柱/圆柱/正方体物理隔离- 每个分仓可容纳 5 个同类型物块2. **限位结构设计**- 每个分仓设计独立限位结构- 防止运输过程中物块移位、碰撞、掉落- 配合分仓置物区优化夹爪伸入角度3. **与机械臂协同**- 专用夹爪可精准伸入单个独立置物仓抓取/放置物料- 实现从抓取到车载分区的全流程无缝衔接** 效果** 物块运输干扰率降至 **0%**可稳定运输 15 个物块无脱落、无碰撞。---### 2.5 合并组装** 整体装配要点**1. **底盘组装顺序**- 安装三主动轮组 → 套装履带 → 嵌入防滑螺钉 → 安装尾部辅助轮组- 固定电机支架 → 连接传动机构 → 调试履带张紧度2. **车身与控制单元安装**- Basra 主控板 Bigrish 扩展板固定于车身中部- GM65 扫码模块侧置安装实现行进中扫描- OLED 显示屏前置安装便于观察- HC-02 蓝牙模块从机插接扩展坞3. **机械臂安装**- 底座舵机固定于车身前部- 大臂/小臂双舵机同步联动安装- 腕部舵机 3D 打印夹爪组装- 连接舵机线至扩展板对应接口4. **置物仓安装**- 三分仓置物区固定于车身中后部- 确保与机械臂工作范围匹配- 检查限位结构可靠性5. **电气接线检查**- 电机驱动线 → FAN8100MTC 驱动芯片- 舵机线 → 扩展板舵机接口- 传感器线 → 对应模拟/数字口- 电源线 → 电池供电注意正负极---## 三、遥控器设计### 3.1 选择模块及主控芯片** 一体化协同遥控器方案****核心控制器ATmega328PArduino Nano**选用 ATmega328P 作为核心控制单元核心资源| 资源 | 参数 | 用途 || --- | --- | --- || ADC 模拟输入 | 8 路 10 位 | 摇杆、电位器信号采集 || 数字 I/O | 多路 | 蓝牙通信、按键输入 || 工作电压 | 5V | 兼容所有外设模块 || 体积 | 小巧 | 适合遥控器集成设计 |**外设模块清单**| 模块类型 | 器件名称 | 引脚分配 | 功能说明 || --- | --- | --- | --- || 蓝牙通信 | HC-05主机 | TX→D3RX→D2 | 软件串口通信9600 波特率 || 机械臂控制 | 电位器 1底座 | A0 | 270° 舵机角度控制 || 机械臂控制 | 电位器 2大臂 | A1 | 270° 舵机角度控制 || 机械臂控制 | 电位器 3小臂 | A2 | 180° 舵机角度控制 || 机械臂控制 | 电位器 4腕部 | A3 | 180° 舵机角度控制 || 小车控制 | 双轴摇杆 | X轴→A6Y轴→A7 | 小车运动方向/速度控制 || 功能按键 | 一键复位按键 | D12 | 机械臂恢复初始姿态 || 功能按键 | 舵机切换按键 | A4 | 末端舵机 60°/90° 切换 || 电源模块 | 降压模块 | 输入≥7V输出5V | 为整个系统提供稳定 5V 供电 |---### 3.2 查找芯片手册** 关键芯片资料汇总**1. **ATmega328P**- 8-bit AVR 微控制器32KB Flash2KB SRAM1KB EEPROM- 16MHz 工作频率6 路 10-bit ADC- 支持 UART/SPI/I2C 通信- 官方数据手册[Atmel-42735-8-bit-AVR-Microcontroller-ATmega328-328P_Datasheet.pdf](https://ww1.microchip.com/downloads/en/DeviceDoc/ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061A.pdf)2. **HC-05 蓝牙模块**- 蓝牙 V2.0EDRClass 2 模块- 工作频率 2.4GHz ISM 频段- 串口波特率可配置默认 9600- 支持主从模式切换AT 指令配置3. **电位器旋转式**- 线性电位器阻值 10kΩ- 输出 0\~5V 模拟信号随 0\~1023 ADC 值变化- 用于控制舵机角度0°\~180°/270° 映射4. **双轴摇杆模块**- 两路电位器输出X/Y 轴- 自带按键按下功能- 中心位置约 512ADC 值 **提示**在设计前务必查阅对应芯片的数据手册确认引脚定义、电气特性和工作参数避免因选型错误导致返工。---### 3.3 绘画原理图**️ 遥控器原理图设计要点**使用 **Altium Designer / 立创EDA / KiCad** 等 PCB 设计软件绘制原理图。**核心电路模块**1. **主控最小系统**- ATmega328P 芯片 16MHz 晶振- 复位电路复位按键 10k 上拉电阻- 电源滤波电容100nF 10μF2. **蓝牙模块电路**- HC-05 VCC → 5VGND → GND- TX → D3软串口 RXRX → D2软串口 TX需分压- STATE 引脚可选接 LED 指示连接状态3. **电位器电路**4 路- 电位器两端接 5V 和 GND- 中间抽头接 ADC 引脚A0\~A3- 建议并联 100nF 电容滤波4. **摇杆模块电路**- VRx → A6VRy → A7- SW按键→ 数字口可选- VCC → 5VGND → GND5. **按键电路**2 路- 按键一端接 GND另一端接数字口D12、A4- 使用内部上拉电阻INPUT_PULLUP- 按下为低电平松开为高电平6. **电源电路**- 锂电池输入 → 降压模块 → 5V 输出- 电源开关 电源指示 LED- 大容量滤波电容确保供电稳定 **原理图注意事项** - 所有电源引脚就近加 0.1μF 去耦电容 - 模拟地与数字地单点连接 - 蓝牙模块 RX 引脚如接 5V 单片机需分压3.3V 模块---### 3.4 打板、焊接** PCB 打板与焊接流程**1. **PCB 设计检查DFM**- 线宽 ≥ 10mil过孔内径 ≥ 8mil- 电源走线尽量加宽≥30mil- 丝印清晰标注引脚定义和模块名称- 检查是否有短路、断路、器件封装错误2. **打板**- 导出 Gerber 文件包含各层顶层、底层、丝印、阻焊、钻孔- 选择 PCB 厂家嘉立创、捷配等下单- 推荐参数1.6mm 板厚、喷锡工艺、绿油白字3. **焊接准备**- 工具电烙铁350℃左右、焊锡丝、助焊剂、镊子、吸锡器- 物料按 BOM 表清点所有元器件- 检查 PCB 板是否有瑕疵4. **焊接顺序建议从低到高**电阻/电容 → IC 芯片 → 排针/排母 → 电位器 → 按键 → 接口座 → 模块5. **关键焊接技巧**- **ATmega328P SOP 封装**先焊对角引脚固定 → 拖焊所有引脚 → 检查连锡- **HC-05 模块**建议用排针座插接方便更换调试- **电位器**确保旋钮方向与标注一致顺时针增大- **摇杆**固定牢固避免使用中松动6. **焊接后检查**- 目视检查有无虚焊、连锡、错件、漏件- 万用表蜂鸣档测电源与地是否短路- 上电前再次确认正负极7. **solidwoks绘制遥控器摇杆部分**---成品### 3.5 测试遥控器** 遥控器测试步骤**步骤 1电源测试- 接入电源测量 5V 输出电压是否正常±0.2V 以内- 观察有无冒烟、异常发热现象步骤 2串口调试- 上传测试代码打开串口监视器9600 波特率- 依次拨动每个电位器观察串口输出的 ADC 值是否在 0\~1023 间平滑变化- 推动摇杆X/Y 轴数值是否跟随变化中心值约 512步骤 3按键测试- 按下复位按键观察串口是否输出对应提示- 按下舵机切换按键确认状态切换正常- 测试按键消抖效果快速按动不重复触发步骤 4蓝牙配对测试- HC-05 上电手机搜索蓝牙设备- 找到 HC-05 并配对默认密码通常为 1234 或 0000- 使用串口蓝牙 APP 发送数据验证双向通信步骤 5与小车端联调- 小车端 HC-02从机上电等待自动配对- 转动电位器观察小车端机械臂各关节是否平滑跟随- 推动摇杆小车是否响应前进/后退/左转/右转- 测试一键复位功能- 测试夹爪开合切换步骤 6抗干扰与稳定性测试- 连续工作 30 分钟以上观察有无失控、断连- 在不同距离1m/5m/10m测试控制稳定性- 测试断联安全机制断联后小车是否立即停止**⚙️ 常见问题与解决方案**| 问题 | 原因 | 解决方案 || --- | --- | --- || 电位器抖动舵机颤动 | 模拟信号噪声 | 增加 5 次采样平均滤波 || 按键误触发 | 机械抖动 | 50ms 软件消抖 等待释放 || 蓝牙数据频繁接收端卡顿 | 发送频率过高 | 设置变化阈值 50ms 发送间隔 || 舵机超程转动 | 角度无限制 | 使用 constrain() 限制角度范围 |---## 四、调试遥控车及遥控器** 联调流程与关键调试要点**### 4.1 通信协议制定**数据帧格式**逗号分隔换行结尾底座角度,大臂角度,小臂角度,腕部角度,摇杆X,摇杆Y,夹爪状态\n- 共 7 个参数波特率 9600- 仅当信号变化超过阈值时发送降低通信负载### 4.2 调试步骤1. **基础功能测试**- 单独测试电机正反转、PWM 调速- 单独测试每个舵机的角度范围- 测试蓝牙收发数据正确性2. **机械臂零点标定**- 将各电位器调至中心位置- 记录对应舵机初始角度- 调整 map() 函数参数使控制手感自然3. **小车运动调试**- 调整左右电机 PWM 差值使小车直线行驶- 测试转向灵敏度调整摇杆死区- 测试前进/后退/原地转向4. **机械臂协同调试**- 抓取练习在零件堆放台反复练习抓取三种物块- 放置练习精准放入三个分仓对应位置- 越障练习携带物块攀爬二级台阶调整辅助轮配重5. **扫码功能调试**- GM65 模块设置连续扫描模式- 调整安装高度和角度确保行进中可识别- OLED 显示条码信息正确性验证### 4.3 软串口分流技术解决串口冲突**问题**遥控车需同时使用硬件串口进行蓝牙通信HC-02和 GM65 扫码模块通信导致数据流冲突。**解决方案**通过 SoftwareSerial 库为 GM65 扫码模块创建独立虚拟串口// 软串口分流 - GM65扫码模块使用独立虚拟串口\SoftwareSerial QRSerial(2, A3); // RXD2, TXA3\\void setup() {\ Serial.begin(9600); // 硬件串口 - 蓝牙通信\ QRSerial.begin(9600); // 软串口 - 扫码模块\}\\void loop() {\ // 优先处理蓝牙指令\ if (Serial.available()) {\ // 处理遥控器数据...\ }\ // 空闲时处理扫码数据\ if (QRSerial.available()) {\ // 读取条码并更新OLED...\ }\}** 成效**通信冲突率从约 **60% 降至 0%**OLED 信息回传准确率 **100%**。---## 五、自主车设计### 5.1 小车构思** 任务需求**自主车作为自主识别与精准投放单元需要完成1. **栅格地形通行**稳定通过 3cm 高栅格区域2. **循迹行驶**沿黑线自动行驶自动转弯3. **K210 形状识别**识别三种物块形状4. **批量精准投放**将同类物块一次性倒入对应收纳盒5. **自动返程**全部投放完成后自动返回起点** 设计思路**针对栅格宽度设计合适的小车底盘针对投放任务设计可一次性全部倒出的仓体结构。**核心设计决策**| 设计方面 | 方案选择 | 原因 || --- | --- | --- || 底盘类型 | 坦克式履带底盘 | 彻底解决栅格陷轮问题行驶稳定 || 识别方案 | K210 视觉模块 | 离线 AI 识别无需联网延迟低 || 投放方式 | 大舵机整仓倾倒 | 效率高一次性倒出速度提升 300% || 定位方式 | 双近红外传感器 | 识别固定顺序收纳盒抗干扰强 || 启动方式 | 物理触须触发 | 替代无线通信零干扰可靠性 100% |---### 5.2 K210训练识别物体与通信连接** K210 视觉识别模块简介**K210 是面向嵌入式 AI 与机器视觉的边缘计算模块采用嘉楠科技 Kendryte K210 芯片- 双核 64 位 RISC-V CPU主频 400 MHz- 内置硬件神经网络加速器 KPU算力可达 1 TOPS- 支持离线运行 AI 模型典型功耗 lt; 0.5W- 支持 MaixPyMicroPython开发** 训练目标**识别三棱柱、圆柱、正方体三种形状物块步骤 1数据集采集- 采集 **1000 张** 不同角度、光照条件下的物块图像- 每种物块约 300\~400 张样本- 涵盖不同距离、角度、光照强度- 使用 LabelImg / 在线标注工具进行标注步骤 2模型训练- 使用 MaxiiMager / 官方训练工具训练 YOLO 模型- 数据集按 8:2 划分为训练集和验证集- 训练迭代至 loss 收敛- 导出为 K210 支持的 .kmodel 格式步骤 3模型部署# K210 端 MaixPy 示例代码\import sensor, image, lcd, time\from Maix import KPU\\# 初始化摄像头\sensor.reset()\sensor.set_pixformat(sensor.RGB565)\sensor.set_framesize(sensor.QVGA)\sensor.run(1)\\# 加载模型\task KPU.load(/sd/model.kmodel)\\# 类别标签\labels [三棱柱, 圆柱, 正方体]\\while True:\ img sensor.snapshot()\ # 运行模型推理\ objs KPU.detect(task, img)\ for obj in objs:\ # 输出识别结果通过串口发送给主控\ class_id obj.classid() 1 # 1/2/3 对应三种物块\ print(class_id)步骤 4与主控通信连接**硬件连接**| K210 模块 | Basra 主控板 | 说明 || --- | --- | --- || TX | RX硬件串口 | K210 → 主控发送识别结果 || RX | TX硬件串口 | 主控 → K210可选 || GND | GND | 共地 || 5V | 5V/VIN | 供电 |**通信协议**K210 仅在识别到物体时发送对应的数字- 1 → 三棱柱- 2 → 圆柱- 3 → 正方体**主控端接收处理**// 串口处理仅处理1/2/3收到0或其他直接忽略\int readK210() {\ if (Serial.available() 0) {\ byte data Serial.read();\ // 兼容数字和字符格式\ if (data 1 data 3) return data;\ if (data 1 data 3) return data - 0;\ }\ return 0; // 0 表示未识别到有效物体\}**抗干扰设计**- 连续多帧检测到同一目标才确认有效- 加入 0.3秒内不重复检测同一形状 逻辑避免误触发- 安装 90° 金属支架固定传感器高度至 1.8cm** 识别性能**| 指标 | 数值 || --- | --- || 形状识别准确率 | 100% || 识别延迟 | lt; 50ms || 抗光照变化 | ±5000 lux || 数据传输正确率 | 100% |---### 5.3 组装、调试小车5.3.1 组装流程1. **履带底盘组装**- 安装左右履带轮组 → 套装履带- 固定双直流减速电机- 安装前置配重万向轮4 个抑制后仰2. **控制单元安装**- Basra 主控板 Bigrish 扩展板固定- 灰度传感器安装高度 1.8cm经测试为最佳高度- 双近红外传感器前置安装识别收纳盒- K210 视觉模块安装90° 金属支架固定3. **收纳仓与投放机构**- 安装大扭矩舵机驱动整仓倾倒- 安装可活动仓壁防卡松脱结构- 调试倾倒角度确保一次性全部倒出4. **触须触发模块**- 弹性触须安装于车头前端- 连接至数字输入口上拉输入- 遥控车机械臂触碰 → 触发自主车启动5.3.2 调试要点**1循迹调试**// 双路灰度循迹核心逻辑\void lineTracking() {\ int L digitalRead(A3); // 左传感器\ int R digitalRead(A2); // 右传感器\ \ if (L HIGH R HIGH) run_pwm(); // 直行\ else if (L HIGH R LOW) right_pwm(); // 右转差速\ else if (R HIGH L LOW) left_pwm(); // 左转差速\ else run_pwm(); // 默认直行\}- 调整左右电机 PWM 差值使小车走直线- 调整转向差速比确保直角转弯不冲出赛道- 控制周期 10ms确保响应迅速**2灰度传感器高度调试**- 测试方法在不同高度1.5\~2.5cm测试黑白差值- 最佳高度**1.8cm**模拟量极差值最大- 极差值越大传感器分辨性能越好**3栅格通行调试**- 进入栅格前关闭灰度循迹- 采用定时直行策略避免栅格纹理干扰- 调整直行时间确保完整通过**4投放机构调试**- 标定倾倒舵机角度通常 60°\~90°- 测试满载 5 个物块是否全部一次性倒出- 调试可活动仓壁松脱时机防止卡滞**5全流程联调**待机 → 触须触发启动 → 循迹行驶 → K210识别收纳 → 循迹 → \近红外识别收纳盒 → 倾倒投放 → 返程 → 循环 → 全部完成后返回起点** 最终性能指标**| 指标 | 数值 || --- | --- || 栅格通过率 | 100% || 形状识别准确率 | 100% || 投放成功率 | 100% || 单次投掷时间 | 0.8 秒 || 投掷效率提升 | 300% || 全流程任务覆盖率 | 100% |---## 六、项目亮点与创新点### 五大核心创新1. **复合式越障底盘设计**- 遥控车 三主动轮履带 双辅助轮 复合动力底盘- 自主车坦克式履带底盘- 二级台阶通过稳定性提升 40%栅格通过率 65% → 100%2. **多模态协同感知策略**- K210 形状识别 近红外定位 物理触须触发- 照度变化超 5000lux 仍稳定工作感知误判率 0%3. **基于软串口分流的无冲突通信技术**- 软串口 硬件串口物理隔离- 通信冲突率 60% → 0%任务交接延迟 lt; 100ms4. **分仓式物料转运系统**- 三仓物理隔离 限位结构- 运输物块干扰率 0%可稳定承载 15 个工件5. **批量倾倒式投放机构**- 大舵机驱动 可活动仓壁防卡设计- 单次投掷 0.8 秒效率提升 300%---## 七、代码结构说明SharkChili-Robot/\├── remote_car/ # 遥控车端代码\│ ├── remote_car.ino # 主程序蓝牙接收电机机械臂扫码OLED\│ └── README.md # 遥控车接线说明\│\├── controller/ # 遥控器端代码\│ ├── controller.ino # 主程序电位器摇杆按键蓝牙发送\│ └── README.md # 遥控器BOM与原理图\│\├── auto_car/ # 自主车端代码\│ ├── auto_car.ino # 主程序循迹K210投放返程\│ └── README.md # 自主车接线说明\│\├── k210/ # K210视觉模块代码\│ ├── main.py # MaixPy 识别程序\│ ├── model.kmodel # 训练好的模型文件\│ └── dataset/ # 数据集样本示例\│\├── 3d_models/ # 3D打印模型文件\│ ├── gripper/ # 定制夹爪模型\│ ├── storage_bin/ # 置物仓模型\│ └── controller_case/ # 遥控器外壳\│\├── pcb/ # PCB工程文件\│ ├── controller/ # 遥控器原理图PCB\│ └── README.md # PCB设计说明\│\└── docs/ # 文档\ ├── 技术报告.pdf # 完整技术报告\ └── 比赛照片/ # 实物照片 完整代码及文件已开源至 GitHub欢迎 Star Fork---** 版权声明**本项目仅供学习交流使用转载请注明出处。版权声明**本项目仅供学习交流使用转载请注明出处。
返回列表