跳到主要内容

数据流

本节面向希望直接在 Python 中处理 EGO1 或 EGO1GS 数据的工程师。它使用命令行。如果你只是想采集和查看录制内容,操作员指南 即可满足你的全部需求。

概述

EGO1 与 EGO1GS 都以 MCAP 格式录制 —— 这是一种自描述的开放格式,消息模式(schema)嵌入在文件中。 消息采用 protobuf 编码,数据可使用开源的 visio-schema Python 包进行解析。两款设备的文件结构 与核心 topic 完全一致,因此针对 EGO1 编写的代码无需改动即可读取 EGO1GS 的录制;EGO1GS 只是多出若干 通道。

同一份数据可通过两种通道获取:

ChannelFormUse
TCP (Wi-Fi)通过设备的 Wi-Fi 热点访问 192.168.4.1:50001通过热点进行实时流传输
File (MCAP)MicroSD 卡上的 .mcap 文件离线分析

设备 / 热点名称:GILABS-XXXXXXXX(后缀是设备的短代码)。

自固件 1.0.4 起支持 USB 录制

自固件 1.0.4 起,USB 录制已获完整支持。更早的固件上 USB 连接仅供供电——请升级固件。

录制的通道

一次录制会复用以下 topic。模式(schema)为 protobuf,嵌入在 MCAP 文件中。在典型的 会话中,两个相机以约 30 fps 运行,融合后的 IMU 四元数以约 200 Hz 运行(EGO1GS 上约 470 Hz——请读取 时间戳,而不要假定固定速率)。

TopicSchemaContents
/ego/camera/0foxglove.CompressedVideo相机 0 视频(H.265),立体声对
/ego/camera/1foxglove.CompressedVideo相机 1 视频(H.265),立体声对
/ego/imu/0/rawvisio_schema.v1.sensor.ImuRaw原始 IMU 采样(批量)
/ego/imu/0/quatvisio_schema.v1.ros.geometry_msgs.Quaternion融合后的姿态四元数
/ego/system_healthvisio_schema.v1.sensor.SystemHealth设备健康状态(CPU / 磁盘 / 客户端)
/ego/command_resultvisio_schema.v1.control.CommandResult控制命令的执行结果
/device_infovisio_schema.v1.service.device_info.DeviceInfo设备标识符 / 信息

EGO1GS 独有的通道

EGO1GS 的录制包含上表的全部 topic,另外还有:

TopicSchemaContents
/ego/audio/0foxglove.RawAudio立体声音频,PCM s16 @ 16 kHz,同一硬件时钟
/ego/camera/0/annotationsfoxglove.ImageAnnotations相机 0 上的手部检测框(仅限检测器固件)

文件中不一定含有这两者:关闭音频录制的设备不会写入 /ego/audio/0 通道(而不是写一个空通道), 而 /ego/camera/0/annotations 只存在于运行手部检测固件的设备上。请从文件内嵌的通道列表判断它实际 包含什么,不要凭假设。

完整的快速参考表见通道与网络参考

后续