数据流
本节面向希望直接在 Python 中处理 EGO1 或 EGO1GS 数据的工程师。它使用命令行。如果你只是想采集和查看录制内容,操作员指南 即可满足你的全部需求。
概述
EGO1 与 EGO1GS 都以 MCAP 格式录制 —— 这是一种自描述的开放格式,消息模式(schema)嵌入在文件中。
消息采用 protobuf 编码,数据可使用开源的 visio-schema Python 包进行解析。两款设备的文件结构
与核心 topic 完全一致,因此针对 EGO1 编写的代码无需改动即可读取 EGO1GS 的录制;EGO1GS 只是多出若干
通道。
同一份数据可通过两种通道获取:
| Channel | Form | Use |
|---|---|---|
| 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——请读取 时间戳,而不要假定固定速率)。
| Topic | Schema | Contents |
|---|---|---|
/ego/camera/0 | foxglove.CompressedVideo | 相机 0 视频(H.265),立体声对 |
/ego/camera/1 | foxglove.CompressedVideo | 相机 1 视频(H.265),立体声对 |
/ego/imu/0/raw | visio_schema.v1.sensor.ImuRaw | 原始 IMU 采样(批量) |
/ego/imu/0/quat | visio_schema.v1.ros.geometry_msgs.Quaternion | 融合后的姿态四元数 |
/ego/system_health | visio_schema.v1.sensor.SystemHealth | 设备健康状态(CPU / 磁盘 / 客户端) |
/ego/command_result | visio_schema.v1.control.CommandResult | 控制命令的执行结果 |
/device_info | visio_schema.v1.service.device_info.DeviceInfo | 设备标识符 / 信息 |
EGO1GS 独有的通道
EGO1GS 的录制包含上表的全部 topic,另外还有:
| Topic | Schema | Contents |
|---|---|---|
/ego/audio/0 | foxglove.RawAudio | 立体声音频,PCM s16 @ 16 kHz,同一硬件时钟 |
/ego/camera/0/annotations | foxglove.ImageAnnotations | 相机 0 上的手部检测框(仅限检测器固件) |
文件中不一定含有这两者:关闭音频录制的设备不会写入 /ego/audio/0 通道(而不是写一个空通道),
而 /ego/camera/0/annotations 只存在于运行手部检测固件的设备上。请从文件内嵌的通道列表判断它实际
包含什么,不要凭假设。
完整的快速参考表见通道与网络参考。
后续
- 安装 visio-schema —— 配置 Python 包。
- visio-display CLI —— 通过命令行录制和可视化。