跳转至

关于我

徐昊  一个喜欢捣鼓各种技术的学生

“任何足够先进的技术都等同于魔术。”————阿瑟·C.克拉克(Arthur C. Clarke),作家

山东大学2022级控制科学与工程学院机器人工程本科生,未来期望专注机器人技术研发。

生活中是咖啡爱好者,相信「技术的温度藏在细节里」。

  • 🧑‍💻 2025.4.18至今的编程累计时长


学习成绩

前五学期GPA:90.9/100 排名:8/83 (9.6%)

科目 分数 科目 分数
高等数学(1) 94 人工智能技术实践 95
电路 97 嵌入式系统技术实践 95
单片机应用技术基础 97 图像处理与计算机视觉 95
运筹学 94 微机原理与接口技术 92
Python编程与算法导论 97 机器人学 91
人工智能导论 95 机器学习 91

所有实践课程均取得优秀等级(95分)

英语水平

四级 六级
616 520

课程设计经历

时间 课程名称 作品名称 成绩
大一下 面向对象的程序设计 游戏:码呀码
大二下 电子技术综合设计 波形发生、分解、合成及测量装置 一等奖
大二下 人工智能实践 基于LSTM的换热站瞬时热值预测模型 95
大二下 嵌入式系统设计 农业大棚温湿度监控系统
大三上 图像处理与计算机视觉 图像修复与拼接算法 95
大三下 智能机器人技术实践I 四足机器人在复杂环境下的运动控制 未知
大三下 机器人操作系统 无人机的自主建图与运动路径规划 未知
大三下 信号分析与处理 用C++手搓二维快速傅里叶(逆)变换算法 未知

竞赛经历

时间 竞赛名称 作品名称 成绩
2022年11月(大一上) 第八届山东省大学生单片机应用创新设计大赛 一种基于北斗PNT模块的突发公共安全事件救灾团队的智能穿戴系统 二等奖
2023年11-12月(大二上) 山东大学STC杯 模拟交通信号灯系统 特等奖第一名
2024年1-2月(大二上) 山东大学STM32系统设计大赛 智慧大棚系统 二等奖
2024年7-8月(大二下) 第19届全国大学生智能汽车竞赛完全模型组 “城市反恐”主题竞速赛 山东省第二名+国家二等奖
2025年5月- 第27届中国机器人及人工智能大赛 四足仿生机器人中型组 未知

项目经历

第19届全国大学生智能汽车竞赛完全模型组

2024.10~2025.8

比赛规则:https://blog.csdn.net/zhuoqingjoking97298/article/details/134667660

工程仓库:https://gitee.com/Rrexx/2024AI_Models

以“城市反恐”为主题,模拟特种智能车辆在城市执行巡逻任务,车辆不但需要自主驶过常规道路,还要根据沿途的任务元素所代表的突发事件,驶入特殊区域,并按指定方式通过。

通过视觉实现车辆自主快速沿复杂赛道巡线的同时,通过OpenCV全局扫描色块,看到对应颜色后开启yolo模型识别赛道外的AI元素标志,并控制车辆在指定地点做出要求的行为动作。

省赛时比赛视频:

控制程序设计框图:

%%{init: {'themeVariables': {'fontSize': '1.5rem'}}}%%
graph TD
    %% 上位机模块 - 蓝色
    subgraph 上位机[EdgeBoard板卡]
        direction TB
        style 上位机 fill:#D0E7FF,stroke:#4A90E2,font-size:0rem

        EdgeBoard板卡[上位机-EdgeBoard板卡]:::title1

        图像采集[摄像头图像采集]:::blue
        灰度转换[RGB转灰度图]:::blue
        二值化[大津法二值化]:::blue

        边线生长法[边线生长法]:::green
        中心扫线法[中心扫线法]:::green
        中线拟合[赛道中线拟合]:::green
        巡线误差计算[巡线误差计算]:::green

        AI模型[Yolo模型目标检测]:::orange
        圆环处理[圆环处理]:::orange
        十字处理[十字处理]:::orange
        追逐区处理[追逐区处理]:::orange
        危险区处理[危险区处理]:::orange
        救援区处理[救援区处理]:::orange
        元素决策[元素状态决策]:::orange

        误差封装[封装巡线误差]:::purple
        标志位封装[封装元素标志位]:::purple
        串口通信[UART通信传输]:::purple
    end

    %% 下位机模块 - 红色系
    subgraph 下位机[英飞凌单片机]
        direction TB
        style 下位机 fill:#FFEBEE,stroke:#E53935,font-size:0rem

        英飞凌单片机[下位机-英飞凌单片机]:::title2

        串口接收[接收串口数据]:::red
        数据解析[解析标志位/误差]:::red
        速度决策[元素速度决策]:::red
        降速控制[特殊路段降速]:::red
        惯导控制[特殊元素惯导控制]:::red
        贝塞尔拟合[三阶贝塞尔曲线]:::red
        入库控制[锥桶引导入库]:::red
        电机控制[电机闭环控制]:::red
        舵机控制[舵机闭环控制]:::red
        执行[执行控制指令]:::red

        按键输入[按键参数调整]:::orangeDeep
        无线串口[无线串口调试]:::orangeDeep
        参数调整[实时参数调整]:::orangeDeep
        屏幕显示[TFT状态显示]:::orangeDeep
    end

    %% 垂直数据流
    图像采集 --> 灰度转换
    灰度转换 --> 二值化
    二值化 --> 边线生长法
    二值化 --> 中心扫线法
    边线生长法 --> 中线拟合
    中心扫线法 --> 中线拟合
    中线拟合 --> 巡线误差计算
    巡线误差计算 --> 误差封装

    AI模型 --> 圆环处理
    AI模型 --> 十字处理
    AI模型 --> 追逐区处理
    AI模型 --> 危险区处理
    AI模型 --> 救援区处理
    圆环处理 --> 元素决策
    十字处理 --> 元素决策
    追逐区处理 --> 元素决策
    危险区处理 --> 元素决策
    救援区处理 --> 元素决策
    元素决策 --> 标志位封装

    误差封装 --> 串口通信
    标志位封装 --> 串口通信
    串口通信 --> 串口接收

    串口接收 --> 数据解析
    数据解析 --> 速度决策
    数据解析 --> 惯导控制
    速度决策 --> 降速控制
    降速控制 --> 电机控制
    惯导控制 --> 贝塞尔拟合
    惯导控制 --> 入库控制
    贝塞尔拟合 --> 舵机控制
    入库控制 --> 舵机控制
    电机控制 --> 执行
    舵机控制 --> 执行

    数据解析 --> 按键输入
    按键输入 --> 参数调整
    参数调整 --> 无线串口
    参数调整 --> 屏幕显示

classDef blue fill:#BBDEFB,stroke:#2196F3,stroke-width:2px,font-size:1.5rem;
classDef green fill:#C8E6C9,stroke:#4CAF50,stroke-width:2px,font-size:1.5rem;
classDef orange fill:#FFE0B2,stroke:#FF9800,stroke-width:2px,font-size:1.5rem;
classDef purple fill:#E1BEE7,stroke:#9C27B0,stroke-width:2px,font-size:1.5rem;
classDef red fill:#FFCDD2,stroke:#F44336,stroke-width:2px,font-size:1.5rem;
classDef orangeDeep fill:#FFCC80,stroke:#EF6C00,stroke-width:2px,font-size:1.5rem;
classDef title1 fill:#D0E7FF,stroke:#D0E7FF,stroke-width:2px,font-size:2rem;
classDef title2 fill:#FFEBEE,stroke:#FFEBEE,stroke-width:2px,font-size:2rem;

第27届中国人工智能与机器人大赛四足仿生机器人中型组

2025.5~

比赛规则:第二十七届中国机器人及人工智能大赛比赛规则(线下)

工程仓库:https://github.com/RRRexyz/YoboGo-control

在YoboGo提供的四足机器狗上的UpBoard主控板上部署MIT Mini Cheetah控制算法作为底层运动驱动,实现机器狗整体运动状态和姿态角的精确控制,并编写程序通过视觉检测实现机器狗的自主巡线,同时根据agx主板传来的元素标志控制机器狗完成对应的比赛任务。agx控制板上部署yolo模型精准识别赛道上的色带并通过UDP通信协议下发到UpBoard控制板上,UpBoard控制板收到标志位后计算期望速度和姿态,然后通过LCM通信协议发送到MIT Mini Cheetah控制层实现对机器狗的控制。整体框图:

graph TD
    subgraph AGX板卡
    A[部署YOLO模型]:::agx --> B[识别赛道色带]:::agx
    B --> C[检测元素标志]:::agx
    end
    C --> D[UDP通信协议]:::com
    subgraph UpBoard主控板
    D --> E[接收标志位]:::up
    E --> F[计算期望速度]:::up
    E --> G[计算姿态角]:::up
    F --> H[LCM通信协议]:::com
    G --> H
    subgraph MIT Mini Cheetah控制层
    H --> I[运动状态控制]:::mc
    H --> J[姿态角控制]:::mc
    end
    end
    I --> K[四足机器狗]:::dog
    J --> K
    K --> L[自主巡线]:::action
    K --> M[执行比赛任务]:::action

    classDef agx fill:#FFD2D2,stroke:#FF6B6B;
    classDef up fill:#DAEAF6,stroke:#5D8BF4;
    classDef mc fill:#D6E4D0,stroke:#7D9D50;
    classDef com fill:#FFF5BA,stroke:#E6B325;
    classDef dog fill:#E9DEFF,stroke:#9A7BBD;
    classDef action fill:#DAF2E0,stroke:#4FBF6E;

MIT Mini Cheetah控制模型的软硬件框图: alt text

我们实际上是用自己编写的控制程序代替了图中的“遥控器”,实现机器狗的自主巡线和元素识别处理。

比赛的时候忘记录像了,随便找了个调试时候拍的视频:

无人机在复杂环境的定位、建图与运动规划

2025.4~2025.5

基于PX4(飞行控制) + VINS-Fusion(双目视觉惯导SLAM方案) + RTABMap(三维稠密重建) + EgoPlanner(三维运动规划) 的无人机在复杂环境的定位、建图与运动规划。

详情见博客:机器人操作系统期中作业全流程记录

用C++手搓快速二维傅里叶(逆)变换算法

2025.5~

项目内容:

  1. 使用 C/C++编写代码,读取灰度图像。
  2. 对图像进行 FFT 运算,生成频域复数矩阵并可视化。
  3. 对频域数据直接进行 IFFT,重建原始图像,计算重建图像与原图的均 方误差(MSE)或峰值信噪比(PSNR),验证 FFT/IFFT 的可逆性。
  4. 对频域数据进行低通滤波,再做 IFFT,比较滤波后图像与原图像的均 方误差(MSE)或峰值信噪比(PSNR)。

项目仓库:https://github.com/RRRexyz/fft-ifft-2d

我的方案:

  1. 用Qt编写GUI界面,用于显示原始图像、变换后图像、重建后图像、滤波后图像以进行对比。
  2. 使用OpenCV库读取图像并将其转换为灰度图(cv::Mat格式)。
  3. 按照快速傅里叶变换的算法逻辑,编写进行一维FFT运算的函数。
  4. 级联地进行两次不同维度的快速傅里叶变换,实现二维傅里叶变换,获得图像的频域复数矩阵。
  5. 将频域复数矩阵取模长并归一化为灰度图,得到变换后图像。
  6. 仿照上述过程编写一维和二维IFFT函数(实际上只需要多乘以一个系数),实现图像的重建。
  7. 用OpenCV的内置函数对图像进行低通滤波,然后重复上述过程。
  8. 计算三张图像之间的均方误差(MSE)或峰值信噪比(PSNR)并显示。

alt text

党史问答系统后端服务

2025.4

项目旨在开发一个党建知识答题系统,核心目标是提升党员政治理论素养和学习积极性。系统提供多期答题功能,党员可随时选择未答期号参与(每期限答一次,逐题提交),并支持历史补答错过的内容。核心亮点包括实时排行榜​(按正确数和用时对当前活跃期及总成绩排名)和个人成绩页面​(展示支部、姓名、历史作答详情),以此营造竞争氛围、激励学习。系统要求答题过程连续公平。技术方案采用Vue.js进行前端开发​(含登录、答题、个人、排行榜页面)和基于Python的FastAPI进行后端开发​(提供用户、题目、排行榜管理接口)。

项目计划书:党史问答系统项目计划书

最终界面效果:

后端API文档:https://apifox.com/apidoc/shared-30f54d43-79a8-492a-9ad8-44821285c1fa

通用问答+抽奖系统

2025.1~2025.2

本项目旨在为山东大学学生在线开发一个微信端问答与抽奖互动系统,提升线下活动和线上推广的用户参与度。系统支持三种模式​:仅问答、仅抽奖、问答加抽奖。

​用户端​:微信扫码即可参与,​无需登录,通过Cookies限制参与次数。答题后可查看结果与正确答案;满足条件可进入抽奖环节。抽奖采用实时概率算法​(奖品数/总奖品数),结果即时反馈,支持现场兑奖或生成防伪兑奖二维码​(过后领取)。

​管理端​:管理员可创建并管理项目​(设置名称、时间、奖品、题目),生成用户参与二维码。可查看项目状态​(未开始/进行中/已截止)、参与数据(人数、正确率)和实时调整剩余奖品数量。管理员账户手动生成并验证(双Token机制),接口实施权限控制。

系统设计注重灵活组合模式、公平参与规则和高效管理能力。

项目计划书:通用问答抽奖系统计划书

API文档:https://apifox.com/apidoc/shared-811ae5ec-9de3-48a1-80f9-02841893512b

游戏:码呀码

202.1~2025.2

题目要求:控制学院第五届“学以致用”专业知识实践应用系列比赛之“码呀码”编程能力大赛赛题

这是一个程序员主题消除游戏项目(类似羊了个羊):

  1. ​初始化:​​ 输入玩家名,选择难度(设定卡牌数量/万能卡比例)或加载预设布局文件,自动生成多层卡牌布局(类似“羊了个羊”)和7个缓冲区。
  2. ​核心玩法:​​点击上方未被遮挡的卡牌移入缓冲区。
  3. ​消除规则:​​
    • 三张相同卡牌(标准三消)。
    • 特定程序员主题组合(如 if-else, public-private, int-float 等)中的任意两张(特殊双消)。
    • 万能卡牌:单张可消除缓冲区任一被选中的卡牌;两张万能卡可清空整个缓冲区。
  4. ​计分规则:​​ 特殊双消(2分)、标准三消(5分)、清空缓冲区(15分)。实时显示得分。
  5. ​胜利/失败:​​
    • ​通关:​​ 消除所有卡牌 ​或​ 卡牌取完且缓冲区仅剩一张万能卡。
    • ​失败:​​ 缓冲区满(7张)且无法消除。 ​ - 记录:​​ 通过关卡后将玩家名和得分追加记录到排行榜。
    • ​技术:​​ 核心使用C/C++(课程学生组队要求),需考虑遮挡判断、点击交互、规则匹配逻辑和文件操作。

项目仓库:https://github.com/RRRexyz/Game-mayama

游戏截图:

科研课题

车联网关键技术-基于V2X的车辆通行辅助应用

2023.4~2023.5

主要任务:

  1. 绿波车速引导策略设计:基于V2X通信技术的绿波车速引导策略,实现交叉口高效通行,减少车辆延误和停车次数。通过 RSU(路侧单元)实时广播交叉口的信号灯相位与计时信息(SPAT消息)以及车道地理信息(MAP消息),OBU(车载单元)接收数据并计算车辆到达交叉口的时间。同时根据信号灯的绿波时间窗口,为车辆提供最优车速引导,提升整体通行效率。
  2. 交叉口感知辅助通行策略设计:利用路侧单元(RSU)和V2X通信技术,实时收集交叉口车辆信息,包括等待车辆数量、车速与位置数据(用于判断是否有车辆正在接近或已进入路口)以及当前信号灯状态和剩余通行时间,并基于交通流动态调整信号灯相位。当绿灯方向短时间内没有车辆通行,且红灯方向有车辆等待时,系统通过绿灯早断机制提前结束绿灯时间,缩短红灯方向的等待时间,提高整体通行效率。
  3. 紧急车辆动态通行策略设计:针对紧急车辆(如救护车、消防车等),设计动态优先通行策略,提升其在复杂交通场景中的通行效率。利用V2X通信获取信号灯和周边车辆信息,实现以下功能:1、优先级识别:通过OBU广播车辆类型和任务状态,路侧单元实时识别紧急车辆。2、信号灯优化联动:基于SPAT(信号灯时相与计时)消息动态调整信号灯状态,为紧急车辆提供绿灯通行通道。3、路径动态调整:结合当前交通状况和事故分布,实时规划紧急车辆的优先路径,并通过V2V通知其他车辆避让。4、车队协同避让:利用V2X通信协调周边普通车辆减速或停车,为紧急车辆让出通行空间。
  4. 多车队列协同通行策略设计:基于V2X通信技术,设计多车队列协同通行策略,提升路口和车流密集场景的整体通行效率。包括以下几个核心内容:1、队列动态构建:通过V2V通信检测车辆的速度、位置等信息,根据行驶方向动态构建车队。2、统一控制策略:利用V2X通信在队列内实现统一的加速、减速控制,确保队列的紧密协同和通行效率。3、信号灯协同通行:结合路侧单元提供的信号灯状态,规划整个车队的通过时间窗,减少停车和等待次数。4、异常处理与队列重组:应对队列中断(如车辆退出队列或出现故障),动态调整队列结构,确保通行秩序不受影响。

RSU路侧单元的软件架构: alt text

OBU车载单元的软件架构: alt text

OBU内部数据流向: alt text

任务2和任务3部分功能的实现效果(紧急车辆到达路口时强制绿灯放行):