实时音视频技术如何驱动无人仓储:AGV 监控、远程干预与人机协同

无人仓储的最终状态是「人不在仓库,但能看到每台 AGV 的运行状态」。当 AGV 在巷道中卡住或发生路径冲突时,远程操作员需要立刻看到现场画面并接管控制,延迟超过 1 秒,可能已经撞上了货架。本文以即构科技(ZEGO)的方案为例拆解无人仓储的实时音视频(RTC) 架构。

实时音视频技术如何驱动无人仓储:AGV 监控、远程干预与人机协同

一、无人仓储的技术需求

场景需求核心指标难点
AGV 车载画面回传端到端延迟 < 300msAGV 在仓库内通过 Wi-Fi 连接,信号受货架遮挡
远程干预远程操作员看到实况后下发指令 < 200msAGV 紧急停止指令必须在 200ms 内到达
多机监控同时查看 10-20 台 AGV 画面仓库面积大,AGV 数量多,调度中心需要全局视图
异常画面录制触发式录制,异常事件前后 30 秒AGV 碰撞后需要回放确认原因
低码率保底360p @ 200kbps 在弱 Wi-Fi 下维持连接仓库内部 Wi-Fi 信号受金属货架严重干扰

二、核心架构

┌──────────────────────────────────────────────────────┐
│                  业务层:仓储管理系统                    │
│   AGV 调度 · 任务分配 · 异常告警 · 运维分析             │
├──────────────────────────────────────────────────────┤
│               RTC 音视频传输层                          │
│   AGV 推流·远程干预·异常联动·多机管理                   │
├──────────────┬──────────────────┬────────────────────┤
│   AGV 端     │    传感器端       │     远程调度中心    │
│  推流画面回传│  状态信息 SEI     │ 拉流 20 台 AGV     │
│  `自定义采集`│  `SEI 嵌入`       │  `自定义渲染`       │
│  `低码率`   │  `事件触发录制`    │  `多房间`           │
├──────────────┴──────────────────┴────────────────────┤
│                  基础设施层                             │
│  SD-RTN™ · 工业 Wi-Fi · 边缘计算 · 云端录制            │

三、核心技术实现

3.1 AGV 车载摄像头自定义视频采集

AGV 通常搭载 USB 或 MIPI 摄像头,通过嵌入式计算板(如 Jetson Nano/RK3588)采集画面:

// AGV 端:接收摄像头数据并推流
// 1. 开启自定义视频采集
engine->enableCustomVideoCapture(true, ZEGO_PUBLISH_CHANNEL_MAIN);

// 2. 从摄像头驱动获取到一帧数据后发送
// AGV 摄像头通常为 YUYV 或 MJPEG 格式
void onAGVCameraFrame(unsigned char* frameData, int w, int h) {
    // 发送裸数据到 SDK
    engine->sendCustomVideoCaptureRawData(
        frameData,
        w * h * 3 / 2,    // NV12 格式
        w, h,
        w,                 // stride
        ZEGO_VIDEO_BUFFER_TYPE_RAW_DATA,
        getTimestamp(),
        ZEGO_PUBLISH_CHANNEL_MAIN
    );
}

3.2 AGV 状态数据嵌入 SEI 帧

远程调度员需要在画面上看到 AGV 的运行状态(速度、电量、任务号)。通过 SEI 嵌入到每一帧中:

// AGV 端:每帧推送携带状态信息的 SEI
uint64_t ntpNow = getNtpTime();
unsigned char agvData[32];
memcpy(agvData, &ntpNow, 8);
float speed = getAGVSpeed();            // 当前速度
float battery = getBatteryLevel();       // 剩余电量 %
uint32_t taskID = getCurrentTaskID();    // 当前任务
memcpy(agvData + 8, &speed, 4);
memcpy(agvData + 12, &battery, 4);
memcpy(agvData + 16, &taskID, 4);
engine->sendSEI(agvData, 20, ZEGO_PUBLISH_CHANNEL_MAIN);

3.3 多 AGV 同时拉流 + 自定义渲染

远程调度中心需要同时查看 10-20 台 AGV 的画面,通过自定义渲染在自定义 UI 中排列显示。

// 调度中心:监听流新增 → 自动拉流
class DispatchHandler : public IZegoEventHandler {
    void onRoomStreamUpdate(const std::string& roomID,
                            ZegoUpdateType type,
                            const std::vector<ZegoStream>& list) override {
        if (type == ZEGO_UPDATE_TYPE_ADD) {
            for (auto& stream : list) {
                engine->startPlayingStream(stream.streamID);
            }
        }
    }
};

// 通过自定义渲染在 AGV 地图上叠加视频画面
ZegoCustomVideoRenderConfig renderConfig;
renderConfig.bufferType = ZEGO_VIDEO_BUFFER_TYPE_RAW_DATA;
renderConfig.frameFormatSeries = ZEGO_VIDEO_FRAME_FORMAT_SERIES_RGB;
engine->enableCustomVideoRender(true, &renderConfig);

四、FAQ

Q1:仓库 Wi-Fi 环境下如何保障画面稳定?

仓库 Wi-Fi 受货架遮挡信号衰减严重。在 AGV 端开启流量控制 enableTrafficControl 自适应降级 + setMinVideoBitrateForTrafficControl(150) 极低码率保底。AGV 靠近信号盲区时自动降帧率到 5fps,保持音频/控制信号不中断。

Q2:10 台 AGV 同时推流,带宽够吗?

单台 AGV 360p @ 200kbps,10 台共 2Mbps 上行。仓库 Wi-Fi 通常提供 50-100Mbps 上行带宽,完全足够。

五、总结

无人仓储的 RTC 需求可以概括为「AGV 画面回传 + 状态 SEI 嵌入 + 远程干预」。通过自定义采集接入 AGV 的车载摄像头、SEI 帧附带运行状态、多房间自动监听新 AGV 上线。ZEGO SDK 覆盖了从单台 AGV 到数百台集群的远程管理需求。

本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/info/69325.html

(0)

相关推荐