19f1208fbb5e7.png

项目:混凝土建筑物裂缝检测的爬壁机器人 来源:第四届 3D 视觉创新应用竞赛 | 河南工业大学 | 赵耀 关键词:负压吸附、爬壁机器人、混凝土裂缝检测、YOLOv5、CBAM、Isaac Sim、Jetson Orin Nano GitHub:Measure_Climbing-robot

1. 项目概述:让裂缝检测从“高空冒险”变成“智能巡检” 🏗️

混凝土建筑物长期服役后,外墙、桥梁、水利结构等部位可能出现裂缝。裂缝看起来只是一条细线,却可能带来水分渗透、钢筋锈蚀、结构承载能力下降等问题。传统方式主要依赖人工高空检测,不仅效率有限,而且安全风险很高。

本项目面向这一痛点,设计了一款能够在混凝土墙面上稳定吸附、行走、导航并实时识别裂缝的爬壁机器人。它通过负压吸附机构贴附在墙面上,利用履带式行走机构完成壁面运动,并搭载奥比 Gemini2 相机与 NVIDIA Jetson Orin Nano 进行图像采集和裂缝识别推理。

👉一句话概括:这是一台把“爬墙能力”和“机器视觉”组合起来的建筑健康巡检机器人。它负责去人不方便去的地方,看人容易漏看的细裂缝,并把结果记录下来。🔍

2. 为什么需要它:项目背景与应用价值

19f120e59569e.png

随着大量混凝土建筑进入周期性检测和养护阶段,结构裂缝巡检已经成为建筑、桥梁、水利等领域的重要工作。项目资料中提到,传统人工检测存在高空作业危险、检测效率低、结果受经验影响明显等问题;而爬壁机器人能够替代人工进入高危区域,在检测效率、数据记录和安全性上形成明显优势。

3. 系统总体方案:四个模块协同工作 ⚙️

项目整体可拆分为四个部分:爬壁本体、运动控制、仿真与路径规划、裂缝识别检测。它们不是孤立模块,而是共同构成“看得见、爬得稳、走得到、识别准”的闭环。

19f12114836db.png

3.1 主要硬件配置

模块 设备 / 方案 功能定位
吸附机构 轴流式风机、3D 打印专用负压腔 在混凝土墙面形成吸附力,保障贴壁能力
行走机构 履带式行走机构 提供壁面移动能力和一定越障能力
主控单元 STM32F407 控制板 负责底层运动控制、传感器读取与执行机构控制
边缘计算 NVIDIA Jetson Orin Nano 运行 YOLOv5 裂缝检测模型,完成实时推理
视觉传感 奥比 Gemini2 相机 获取墙面图像,为裂缝识别提供输入
辅助感知 陀螺仪、激光雷达等传感器 支持姿态反馈、避障导航与轨迹纠偏
供电系统 24V 锂电池 + 降压模块 为机器人脱离家用电源、户外运行提供条件

3.2 软件与算法模块

模块 技术路线 项目中的作用
裂缝检测 改进 YOLOv5 + CBAM 注意力机制 识别混凝土墙面裂缝并输出检测框
图像采集 奥比 Gemini2 相机实时取图 为 Jetson 推理提供现场图像
路径规划 改进 A* + Floyd 平滑优化 引导机器人避障并到达巡检区域
轨迹纠偏 基于 PID 的闭环控制 根据位姿偏差调整运动轨迹
仿真验证 Isaac Sim + ROS Bridge 复现壁面运动、相机视角和仿真通讯
结果记录 检测图像、裂缝信息、GUI 展示 支持后续复核、导出和维护决策

4. 核心技术一:负压吸附与壁面运动 🌀

爬壁机器人的第一要务不是“跑得快”,而是“贴得稳”。项目采用负压吸附方式,通过离心风机在负压腔内形成低压区域,使机器人能够紧密吸附在混凝土墙面上。

负压吸附系统需要在安全性和能耗之间取得平衡:负压太小,机器人可能打滑或滑落;负压太大,摩擦力和功耗上升,转向也会更困难。因此项目提出了基于位姿的自适应负压闭环控制思路,根据气压反馈和姿态状态动态调节风机转速。

loop:
    读取负压腔压力值 P_current
    读取机器人姿态 angle、运动状态 speed
    根据姿态和运动状态计算目标负压 P_target
    error = P_target - P_current
    使用 PID / 闭环控制调节风机转速
    若负压不足或姿态异常,触发安全保护策略

实物功能指标:负压腔内最大压强值约 2500 Pa,爬行速度约 7.8 m/min,工作续航时长约 45-65 min。本项目的机器人已经从概念设计推进到了可运行样机阶段。

**5. 核心技术二:改进 A* 避障导航 🧭**

在墙面巡检时,机器人并不只是“直线向前”。墙面可能存在障碍、裂缝区域、边界或不可通行区域,因此需要路径规划算法引导机器人到达检测点。

项目采用改进 A* 算法,并引入三类优化思路:

改进点 技术含义 效果
搜索方向优化 剔除与目标方向相反的扩展节点 减少无效搜索
代价函数优化 考虑差动转向能力和运动代价 更贴合机器人运动特性
Floyd 路径优化 对规划路径进行平滑和缩短 改善路径长度与可执行性

可以把这个过程理解成:先用 A* 找到“能走的路”,再用方向约束让它少走弯路,最后用 Floyd 优化让路径更顺滑一点。

open_list = [start]
closed_list = []

while open_list is not empty:
    current = node_with_min_cost(open_list)

    if current == goal:
        path = traceback_parent_nodes(current)
        path = floyd_smooth(path)
        return path

    move current from open_list to closed_list

    for neighbor in valid_neighbors(current):
        if neighbor is moving away from goal:
            continue

        g = movement_cost(start, neighbor)
        h = heuristic_cost(neighbor, goal)
        turn = differential_turning_penalty(current, neighbor)
        f = g + h + turn

        update_open_list(neighbor, f)

技术文档中的 MATLAB 仿真结果显示,改进 A 相比常规 A 算法,运行时间缩短 59.1%,路径长度减少 3.5%,搜索节点数减少 41.6%。这组结果很漂亮,也说明路径规划不是“纸上谈兵”,而是做过可量化对比验证。

指标 常规 A* 改进 A* 改进比例
运行时间 0.351247 s 0.143435 s 59.1%
路径长度 73.2102 cm 70.6217 cm 3.5%
搜索节点数 981 572 41.6%

6. 核心技术三:改进 YOLOv5 裂缝识别 🔍

19f12143a7745.png

裂缝识别是项目的视觉核心。团队采集混凝土墙体裂缝图像,使用 Labelme 进行标注,并通过 Mosaic 数据增强提高数据多样性。技术文档显示,项目最终标注了 486 张裂缝图片,并在 YOLOv5 基础上引入 CBAM 卷积注意力模块、采用 ReLU 激活函数,以提升对细长裂缝特征的关注能力。

在仓库中,数据配置文件 grain_parameter.yaml 定义了训练数据路径和类别。该文件显示当前数据配置中有 2 个类别:heavily 与 lightly,用于区分较重与较轻裂缝;同时,检测结果图中也可看到输出标签 crack,说明项目代码与演示结果中存在不同阶段的类别配置。文案发布时建议统一命名,避免读者误解。

train: grain/datasets/images/train
val: grain/datasets/images/train
test:

nc: 2
names: ['heavily', 'lightly']

6.1 检测推理流程

项目外层 detect.py 基于 YOLOv5 推理脚本修改而来,核心流程包括加载模型、读取图像/视频流、预处理、前向推理、非极大值抑制、检测框坐标还原和结果保存。

model = DetectMultiBackend(weights, device=device, data=data)
dataset = LoadImages(source, img_size=imgsz, stride=stride)

for path, im, im0s, vid_cap, s in dataset:
    im = torch.from_numpy(im).to(device).float()
    im /= 255.0
    if len(im.shape) == 3:
        im = im[None]

    pred = model(im)
    pred = non_max_suppression(
        pred,
        conf_thres=0.25,
        iou_thres=0.45,
        max_det=1000
    )

    for det in pred:
        det[:, :4] = scale_coords(im.shape[2:], det[:, :4], im0s.shape).round()
        annotator.box_label(xyxy, label, color=colors(c, True))

    cv2.imwrite(save_path, annotator.result())

这段代码反映了一个非常典型的边缘视觉部署逻辑:相机或图片输入后,模型给出候选框,NMS 去掉重复框,最后把检测结果画回原图并保存到 runs/detect/exp 目录。

6.2 训练配置与实验指标

仓库中的 exp11 训练记录显示,该训练运行采用 YOLOv5s 权重、grain/yolov5s.yaml 模型配置、grain/grain_parameter.yaml 数据配置,图像尺寸为 640,训练轮数为 100,batch size 为 16。

配置项 文件记录
初始权重 yolov5s.pt
模型配置 grain/yolov5s.yaml
数据配置 grain/grain_parameter.yaml
输入尺寸 640
训练轮数 100
Batch size 16
结果目录 runs/train/exp11

PPT 中展示的模型对比结果显示,改进算法在准确率、召回率、mAP50、mAP50-95 和 FPS 上均优于多个对照模型。为避免飞书粘贴后拥挤,下面将表格压缩为核心指标:

算法 准确率 召回率 mAP50 mAP50-95 FPS
YOLOv4 91.5 91.8 92.3 78.5 34.7
YOLOv5s 92.3 92.5 94.5 79.3 38.5
Fast R-CNN 92.8 96.0 98.6 81.7 31.4
改进算法 98.9 98.7 98.2 85.6 42.7

需要注意的是:仓库内 exp11/results.csv 的末轮日志显示 mAP50 为 0.62393,mAP50-95 为 0.29116;这更像是某次本地训练运行的日志结果。PPT 中的指标则是项目汇报中的优化后性能展示。两者属于不同记录来源,建议正式汇报时统一实验版本和数据集划分。

7. 边缘部署:把模型搬到 Jetson Orin Nano 上 🚀

项目已将 YOLOv5 裂缝识别算法从 Windows 端迁移到 Jetson Orin Nano 开发板,并完成相机调用与实时推理。技术文档中特别强调,部署的关键在于 JetPack、CUDA、Python、PyTorch、torchvision 版本之间必须匹配。

19f121d7bb95b.png

项目资料中记录的最终环境为:

组件 版本 / 说明
开发板 NVIDIA Jetson Orin Nano
JetPack 5.1.2
CUDA 11.4
Python 3.8
PyTorch 2.1.0
torchvision 0.16.1
相机 Orbbec Gemini2

为了让机器人真正“无线自由爬”,团队还完成了两项很接地气但很关键的工程工作:通过 24V 锂电池、降压模块为 Jetson Orin Nano 供电;通过 DP 欺骗头解决无实体显示屏时远程控制图像丢失的问题。小细节,大闭环。✅

8. 仿真验证:Isaac Sim 里的“墙面练习场” 🧪

在真实墙面实验前,项目使用 Isaac Sim 搭建爬壁机器人工作场景,复现机器人运动、相机视角和 ROS 通讯流程。技术文档中记录了 USD 文件复现、Action Graph 控制、ROS Bridge、RViz 图像主题显示等步骤。

19f121ff3ad51.png
Isaac Sim 仿真流程:
    打开 USD 工程文件
    播放场景并固定模型
    通过 Action Graph 配置控制逻辑
    使用键盘方向键控制壁面爬行
    创建相机视角模拟墙面图像采集
    通过 ROS Bridge 发布相机与里程计信息
    在 RViz / image_view 中可视化仿真数据

仿真并不是为了“好看”,而是为了提前验证机器人在竖直壁面运动、相机采集视角、路径规划与控制逻辑之间是否协调。对于爬壁机器人这种高风险平台,先在仿真里多摔几次,总比真机从墙上摔下来好。

9. 裂缝信息记录与健康判断 📊

一个基于 MATLAB GUI 的裂缝检测系统:将相机拍摄的裂缝图片导入后,通过滤波去噪、形态学闭运算等图像处理方式获得二值图像,并进一步计算裂缝长宽。

系统依据裂缝最大宽度给出健康状态判断:

裂缝最大宽度 状态判断 建议
小于 0.2 mm 安全 定期观察
0.2-0.3 mm 需要维护 建议安排检修
大于 0.3 mm 危险 建议立即维护并重点复核
19f122576d39e.png

这一部分让项目从“识别裂缝”进一步走向“辅助维护决策”:不仅告诉你“这里有裂缝”,还尝试告诉你“裂缝严重到什么程度,是否需要维护”。

10. 开发与测试:从资料调研到户外实验

项目开发过程覆盖了从理论调研到实机实验的完整链条。团队查阅了 100 余篇论文与专利,实地考察混凝土建筑物,使用 SolidWorks 与 Fluent 进行结构设计和流体分析,通过机床加工与 3D 打印制作样机,并在 MATLAB、Isaac Sim、ROS 和真实墙面环境中进行测试。

阶段 工作内容 产出
资料调研 查阅论文、专利、竞品与应用场景 初步技术路线
结构设计 SolidWorks 建模、Fluent 流体分析 负压腔与本体结构
样机制作 机床加工、3D 打印、硬件安装 可爬壁机器人样机
仿真验证 MATLAB、Isaac Sim、ROS 路径规划与运动控制验证
算法训练 Labelme 标注、Mosaic 增强、YOLOv5 训练 裂缝识别模型
边缘部署 Jetson Orin Nano 环境配置与模型迁移 实时推理系统
户外测试 桥洞等真实混凝土场景测试 壁面行走与裂缝实时检测验证

11. 项目亮点与不足:严谨地夸一夸,也认真地补一补 🌟

亮点

亮点 说明
系统闭环完整 覆盖吸附、行走、导航、识别、记录等环节
面向真实需求 针对高空裂缝检测危险、低效等痛点设计
硬件与算法结合紧密 机器人本体、相机、Jetson 推理平台协同工作
验证路径丰富 包含 MATLAB、Isaac Sim、ROS、户外真机实验
工程落地意识强 解决了供电、远程控制、路径变更等部署细节

可继续优化的方向

方向 建议
数据集规模 继续采集更多真实墙面裂缝图像,覆盖光照、材质、角度差异
类别定义 统一 crack、heavily、lightly 等标签命名
指标复现 明确训练/验证/测试集划分,统一汇报指标来源
裂缝测量 将检测框识别与像素级分割、尺度标定结合,提高宽度测量可信度
安全冗余 增加负压不足、姿态异常、通信中断时的保护策略说明

12. 技术栈总结

类型 技术 / 工具
机器人本体 负压吸附、履带式行走、3D 打印负压腔、轴流式风机
控制系统 STM32F407、PID 轨迹纠偏、传感器反馈
视觉硬件 Orbbec Gemini2 相机
边缘计算 NVIDIA Jetson Orin Nano
目标检测 YOLOv5、CBAM、ReLU、Mosaic 数据增强
数据标注 Labelme
仿真平台 Isaac Sim、MATLAB、ROS Bridge、RViz
结果分析 检测结果图、训练曲线、混淆矩阵、MATLAB GUI

结语:让建筑安全巡检多一双“会爬墙的眼睛” 👀

这款混凝土建筑物裂缝检测爬壁机器人,把机器人运动控制、负压吸附、边缘计算和机器视觉串成了一条清晰的技术路线。它既能替代人工完成高风险墙面巡检,又能通过 YOLOv5 模型对裂缝进行实时识别,为建筑、桥梁、水利等工程结构的安全维护提供新的工具形态。

更可贵的是,项目不是停留在“算法跑通”或“模型好看”的层面,而是推进到了仿真、部署、供电、户外测试和结果记录。后续如果继续扩充数据集、统一实验指标并引入更精细的裂缝分割与尺度标定,这台“贴墙小巡检员”会更接近真正的工程化应用。🚀

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注