地下车库自动消防智能巡检无人车系统
地下车库自动消防智能巡检无人车系统

下位机 RTOS 任务划分
| 任务 | 周期 / 触发 | 主要职责 |
|---|---|---|
MotorControlTask |
10 ms 周期 | 编码器反馈读取、PID 运算、电机 PWM 输出 |
SensorUpdateTask |
20 ms 周期 | 更新 IMU、里程、电量、限位等状态 |
CommTask |
10–20 ms 周期 | 接收上位机命令并上传状态反馈 |
ExtinguishTask |
事件触发 | 控制云台、泵阀与喷射时序 |
SafetyTask |
50 ms 周期 | 急停、欠压、通信超时与异常报码 |
StatusTask |
100 ms 周期 | 状态灯、蜂鸣器与简单交互信息 |
底盘速度闭环 PID
下位机的实时核心是麦轮独立的速度闭环,由 MotorControlTask 以固定 10 ms 周期采用串级PID控制:
$$
u(k) = K_p e(k) + K_i\sum_{t=0}^{k} e(t) + K_d,(e(k)-e(k-1))
$$
实际问题及其解决方案
- 低速测速分辨率不足:由于编码器在固定周期内计脉冲,低速时单周期脉冲数很少,量化误差被放大;同时编码器采样有极大抖动,Kd会把这个阶梯放大。在实际工程中,为了便于快速整定参数,我们需要在测速环节提高分辨率,以对速度反馈做滤波。
- 积分饱和:电机堵转或 PWM 已达上限时误差持续存在,积分项会一直累加到很大的值;等目标反向时,输出要先抵消这部分累积量,进而导致模型输出迟滞。解决方法是通过积分限幅配合输出限幅解决,核心思想即避免Ki项过大。
- 启动死区:占空比低于某个门限时电机因静摩擦不转,此时误差存在但输出无效。需要设定最小有效占空比或做死区补偿。
参数整定
在串环PID模型中,我们按先内环再外环的顺序推进:先保证不发散、不振荡、能稳定跟踪,再优化响应速度与稳态误差。整定顺序为先加 $K_p$ 到出现小幅振荡再回退,再加 $K_i$ 消除稳态误差,最后按超调情况引入 $K_d$。
导航模型与算法
问题建模:将地下车库抽象为有向图 $G=(V,E)$,节点集合除巡检目标点外还涵盖转弯点、狭窄通道入口、充电等待点与消防高风险区入口等功能点位。综合目标函数同时计入路径长度、风险代价与应急响应时间:
$$
\min J = \alpha\sum_{i=1}^{n}\sum_{j=1}^{n} d_{ij}x_{ij} + \beta\sum_{i=1}^{n}\sum_{j=1}^{n} r_{ij}x_{ij} + \gamma T_{resp}
$$三类权重按任务阶段动态调整——日常巡检抬高 $\alpha$ 保覆盖率,重点区域巡检抬高 $\beta$ 偏向规避危险点,火情确认后抬高 $\gamma$ 优先快速接近。约束包含出入度约束、最大巡检长度 $L_{path} \le L_{max}$ 与安全电量 $E_{remain} \ge E_{safe}$。
分层求解:初始路径基于预设巡检点位用 A* 生成,优先保证可通行、可停靠与可切换应急路线;局部重规划在尽量不推翻全局任务的前提下进行分级处理,障碍影响范围小时调整当前局部轨迹即可,只有持续占道时才触发全局路径更新。
评价指标:从巡检覆盖率 $\eta_{cover} = N_{visited}/N_{total}$、平均响应时间、路径平滑度、平均跟踪误差 $e_{track} = \frac{1}{M}\sum_{k=1}^{M}|p_k - \hat{p}_k|$、任务成功率五个维度建立指标体系。
火焰识别与自动灭火
分层处置策略:采用 “检测网络 + 规则复核 + 状态机决策 + 执行闭环” 四层结构。YOLO 负责检查图像中是否存在火焰,规则层负责「是否足够可信、是否触发任务切换」,状态机负责「识别之后整车该怎么做」,下位机负责执行闭环与安全联锁。
连续帧火情确认:设检测结果为 $D={(b_i, c_i, s_i)}$,为抑制单帧误判引入连续帧确认,构造综合评分:
$$
S_{fire} = \lambda_1\bar{s} + \lambda_2 n_{cont} + \lambda_3 a_{stable}
$$其中 $\bar{s}$ 为连续帧平均置信度、$n_{cont}$ 为连续命中帧数、$a_{stable}$ 为检测框面积变化稳定度。
数据集与训练:预处理包含图像采集、标注、尺寸归一化、亮度增强、模糊与噪声模拟、反光场景增强,重点补充暗光、局部遮挡、车灯反光与烟雾干扰样本。划分比例 7:2:1,且同一视频序列的图像尽量不同时出现在训练与测试集,防止场景泄露。
部署与推理加速:采用输入尺寸压缩、关闭批处理、异步推理、固定帧率采样、置信度阈值调优、日志异步写入降低系统负担,并对视觉线程与导航线程设置不同优先级。
灭火状态机:状态及设计上,我们将整个系统面对的各种情况划分为“目标候选、火情确认、接近火源、姿态调整、喷射执行、效果复核、结束归位”七个状态,每个状态明确定义进入与退出条件。
喷头指向闭环:以目标中心与图像中心的偏差 $e_\theta(k) = x_{target}(k) - x_{center}$ 作为误差,对水平与俯仰方向分别构建 PID 回路;下位机安全联锁在距离不足、云台未到位、泵阀压力异常或急停触发时禁止进入喷射状态。
技术栈
STM32 · FreeRTOS · 串级 PID · 激光雷达 SLAM · 占据栅格地图 · A* / Dijkstra · YOLO · 状态机
仓库:消防车
