AI巡检系统

机器人建图、导航、实时视频与智能任务编排操作平台

背景

在工业巡检和园区作业中,机器人不仅要完成自主移动,还需要把导航、相机采集、视觉模型、环境传感器和执行器组织成可重复运行的任务。HelioBot AI 巡检系统在基础导航系统之上提供统一操作平台,让这些能力通过同一个 Web 控制台配置和执行。

当前系统采用 FastAPI 单进程后端,同时提供 HTTP API、WebSocket 实时通道和本地 RobotRuntime;前端使用 React + TypeScript,实现地图管理、三维可视化、实时视频、模型服务管理和可视化任务编排。

核心优势

  • 统一机器人控制台:集中管理建图、地图、路点、导航、视频和机器人状态
  • 可视化任务编排:拖拽组合导航、检测、识别、采集、播报和执行器动作
  • 多模型接入:统一管理 LLM、VLM、YOLO、OCR 等本地或远程推理服务
  • 实时数据通道:WebSocket 推送机器人状态与地图数据,WebRTC 传输 RGB / 深度视频
  • 执行过程追踪:保存任务定义、实例状态、执行进度、节点结果和告警记录

与基础导航系统的关系

AI 巡检系统通过 RCM 接口调用基础导航系统的底盘、雷达、建图和 Navigation2 能力。真实机器人部署时,需要先编译 ROS2 Humble 工作空间,并确保 RCM Manager 能正常响应状态查询和任务指令。

功能说明

系统架构

Web 控制台:Vite / React / TypeScript / React Three Fiber / XYFlow / Zustand
接口与实时层:FastAPI HTTP API / WebSocket / WebRTC / 可选 LiveKit SFU
应用与任务层:RobotRuntime / py_trees / 任务实例 / 模型与告警服务
基础设施层:RCM + ROS2 / SQLite / 地图文件存储 / 相机与执行器适配

AI视觉识别

视觉节点先从指定相机采集图像,再调用模型管理中配置的推理端点:

  • 视觉检测:调用 YOLO 等检测服务,按置信度过滤目标并返回类别、边界框和截图
  • 结构化识别:支持表计读数、OCR 文本和通用识别,输出文本、数值与字段
  • VLM 场景理解:通过提示词分析当前画面,可输出文本或 JSON 结构化结论
  • 图像预处理:支持选择 RGB、云台或热成像来源,并配置 PTZ、ROI 和超时时间

任务编排引擎

任务编排是系统的核心能力,可将机器人动作组织成可保存、可执行的任务流:

  • 可视化编辑器:使用 XYFlow 拖拽节点、连接执行顺序,并配置节点基础和高级参数
  • 移动导航:提供路点导航、坐标导航和返回起点/充电点动作
  • 检测与采集:提供视觉检测、视觉识别、VLM 识别和环境传感器采集动作
  • 执行与输出:提供等待、语音、云台、机械臂、夹爪、AI 问答和告警通知动作

任务管理

  • 任务定义:创建任务并关联地图,支持编辑、启用/禁用、复制和删除
  • 运行控制:手动执行或取消任务,后端通过行为树和 RobotRuntime 调用对应 skill
  • 调度配置:为任务保存 Cron 表达式和启用状态,统一管理计划配置
  • 实例状态:查看最近实例、运行状态、完成进度、节点结果和错误信息

模型与实时媒体

  • 模型目录:管理模型类型、提供商、模型 ID、Endpoint、协议、鉴权方式和能力标签
  • 连通性检查:支持检查模型服务的网络、鉴权和协议状态,记录响应时间与检查结果
  • 直接 WebRTC:默认通过 aiortc 提供低延迟视频,当前 D435i 配置包含 RGB 和深度伪彩流
  • 三维可视化:实时显示点云、栅格地图、路径、机器人模型和路点,可切换二维/三维视图

告警与联动

  • 告警分级:支持 info、warning、error、critical 四个等级
  • 告警记录:使用 SQLite 保存标题、消息、机器人、来源、时间和处理状态
  • 告警操作:支持按等级查询、查看状态、确认单条告警和清空未处理告警
  • 任务输出:告警节点可配置级别、标题、通知渠道和是否需要确认

安装部署

前置条件

  • Ubuntu 22.04 或兼容 Linux,Python 3.10
  • Node.js 20.19+ 或 22.12+,npm 9+
  • 真实机器人模式需部署 ROS2 Humble、robot-nav2 与 RCM Manager
  • 视频功能需配置 USB、RealSense 或 RTSP 相机;当前默认配置为 Intel RealSense D435i

部署方式

前端和后端分别安装依赖。Python 3.13 与当前锁定的 SQLAlchemy 版本不兼容,应使用 Python 3.10。无 ROS 和相机的开发环境可关闭 RCM 与实时视频后独立运行。

安装与启动

# 安装后端依赖
python3.10 -m pip install -r backend/requirements.txt

# 启动后端(无机器人、无视频的开发模式)
RCM_ENABLED=false REALTIME_VIDEO_ENABLED=false \
PYTHONPATH=backend python3.10 -m uvicorn main:app --host 0.0.0.0 --port 8000

# 安装并启动前端
cd frontend
npm install
npm run dev

真实机器人配置

# backend/config/application.yaml 或环境变量
ROS_ENABLED=true
RCM_ENABLED=true
ROS_WORKSPACE_ROOT=/home/lijun/robot/robot-nav2
ROS_SETUP_SCRIPTS=/opt/ros/humble/setup.bash,/home/lijun/robot/robot-nav2/install/setup.bash

# 默认服务地址
# API / 健康检查:http://localhost:8000/api/health
# API 文档:http://localhost:8000/docs
# 前端开发服务:http://localhost:5173

使用

配置模型服务

首次使用视觉或 AI 节点前,在「模型管理」中完成:

  1. 选择模型类型和提供商,填写模型 ID、Endpoint 与协议
  2. 选择 none、Bearer 或 API Key 鉴权,并配置密钥引用
  3. 声明 detect、recognize、vlm、qa 等实际支持的能力
  4. 执行服务检查,确认网络、鉴权和协议状态正常后启用模型

创建巡检任务

在「任务编排」页面完成任务定义:

  • 新建任务:填写名称并关联一张已有地图
  • 编排节点:例如「路点导航 → 云台控制 → 视觉识别 → AI 问答 → 告警通知」
  • 配置参数:为每个节点设置路点、相机、模型、ROI、置信度、超时和输出变量
  • 保存定义:返回任务列表后可启用、禁用、编辑或删除任务

执行与查看状态

  • 在任务列表点击执行,运行中可取消当前实例
  • 列表实时显示实例状态、完成进度和最近更新时间
  • 打开实例详情查看 instance ID、状态、进度和节点执行结果
  • 需要计划配置时填写 Cron 表达式,例如 0 8 * * *,并启用调度配置
  • 在首页看板查看机器人连接、点云、地图、路径、视频和告警状态

异常汇总

Q: AI识别结果不准确?

A: 检查相机画面、PTZ 和 ROI,确认模型能力与节点类型匹配;在模型管理中执行连通性检查,并调整置信度、提示词和识别类型。

Q: 任务执行卡在某一巡检点?

A: 打开最近实例详情查看当前进度和错误;分别检查 RCM 导航状态、相机媒体状态和模型 Endpoint。修复后取消旧实例并重新执行。

Q: 识别响应速度慢?

A: 降低相机分辨率或缩小 ROI,检查远程模型服务延迟,并适当调整节点 timeout。边缘推理时同时检查主机负载和散热。

Q: 后端无法启动?

A: 使用 Python 3.10,确认已安装 backend/requirements.txt;检查 application.yaml 中的数据库、地图目录和硬件配置路径,并先用 RCM_ENABLED=false、REALTIME_VIDEO_ENABLED=false 排除外部依赖。

Q: 前端无法连接后端?

A: 确认后端 8000 端口可访问;开发环境检查 VITE_BACKEND_TARGET 或 VITE_API_URL,并确认 WebSocket 地址与 HTTP 后端使用同一主机。

Q: 实时视频无画面?

A: 检查 REALTIME_VIDEO_ENABLED、MEDIA_MODE 和 hardware.yaml;访问 /api/v1/media/state 查看采集 FPS、错误和 PeerConnection 状态,并确认 D435i 序列号或相机地址正确。

Q: 点云或地图不更新?

A: 确认 ROS_ENABLED=true,并检查 topics.yaml 中的话题名和转换器配置;使用 ROS2 命令确认源话题有数据,再检查 WebSocket 连接和 Topic Bridge 状态。