
项目:混凝土建筑物裂缝检测的爬壁机器人 来源:第四届 3D 视觉创新应用竞赛 | 河南工业大学 | 赵耀 关键词:负压吸附、爬壁机器人、混凝土裂缝检测、YOLOv5、CBAM、Isaac Sim、Jetson Orin Nano GitHub:Measure_Climbing-robot
1. 项目概述:让裂缝检测从“高空冒险”变成“智能巡检” 🏗️
混凝土建筑物长期服役后,外墙、桥梁、水利结构等部位可能出现裂缝。裂缝看起来只是一条细线,却可能带来水分渗透、钢筋锈蚀、结构承载能力下降等问题。传统方式主要依赖人工高空检测,不仅效率有限,而且安全风险很高。
本项目面向这一痛点,设计了一款能够在混凝土墙面上稳定吸附、行走、导航并实时识别裂缝的爬壁机器人。它通过负压吸附机构贴附在墙面上,利用履带式行走机构完成壁面运动,并搭载奥比 Gemini2 相机与 NVIDIA Jetson Orin Nano 进行图像采集和裂缝识别推理。
👉一句话概括:这是一台把“爬墙能力”和“机器视觉”组合起来的建筑健康巡检机器人。它负责去人不方便去的地方,看人容易漏看的细裂缝,并把结果记录下来。🔍
2. 为什么需要它:项目背景与应用价值

随着大量混凝土建筑进入周期性检测和养护阶段,结构裂缝巡检已经成为建筑、桥梁、水利等领域的重要工作。项目资料中提到,传统人工检测存在高空作业危险、检测效率低、结果受经验影响明显等问题;而爬壁机器人能够替代人工进入高危区域,在检测效率、数据记录和安全性上形成明显优势。
3. 系统总体方案:四个模块协同工作 ⚙️
项目整体可拆分为四个部分:爬壁本体、运动控制、仿真与路径规划、裂缝识别检测。它们不是孤立模块,而是共同构成“看得见、爬得稳、走得到、识别准”的闭环。

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 裂缝识别 🔍

裂缝识别是项目的视觉核心。团队采集混凝土墙体裂缝图像,使用 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 版本之间必须匹配。

项目资料中记录的最终环境为:
| 组件 | 版本 / 说明 |
|---|---|
| 开发板 | 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 图像主题显示等步骤。

Isaac Sim 仿真流程:
打开 USD 工程文件
播放场景并固定模型
通过 Action Graph 配置控制逻辑
使用键盘方向键控制壁面爬行
创建相机视角模拟墙面图像采集
通过 ROS Bridge 发布相机与里程计信息
在 RViz / image_view 中可视化仿真数据
仿真并不是为了“好看”,而是为了提前验证机器人在竖直壁面运动、相机采集视角、路径规划与控制逻辑之间是否协调。对于爬壁机器人这种高风险平台,先在仿真里多摔几次,总比真机从墙上摔下来好。
9. 裂缝信息记录与健康判断 📊
一个基于 MATLAB GUI 的裂缝检测系统:将相机拍摄的裂缝图片导入后,通过滤波去噪、形态学闭运算等图像处理方式获得二值图像,并进一步计算裂缝长宽。
系统依据裂缝最大宽度给出健康状态判断:
| 裂缝最大宽度 | 状态判断 | 建议 |
|---|---|---|
| 小于 0.2 mm | 安全 | 定期观察 |
| 0.2-0.3 mm | 需要维护 | 建议安排检修 |
| 大于 0.3 mm | 危险 | 建议立即维护并重点复核 |

这一部分让项目从“识别裂缝”进一步走向“辅助维护决策”:不仅告诉你“这里有裂缝”,还尝试告诉你“裂缝严重到什么程度,是否需要维护”。
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 模型对裂缝进行实时识别,为建筑、桥梁、水利等工程结构的安全维护提供新的工具形态。
更可贵的是,项目不是停留在“算法跑通”或“模型好看”的层面,而是推进到了仿真、部署、供电、户外测试和结果记录。后续如果继续扩充数据集、统一实验指标并引入更精细的裂缝分割与尺度标定,这台“贴墙小巡检员”会更接近真正的工程化应用。🚀