借助XIAOESP32S3平台和XSensDot来记录动作影像和IMU传感器数据,实时回传至移动端.
XIAO-ESP32S3 * 2(因为是双路的代码)
Movella DOT
Android 8.1+(API 27+)
本栏目将讲述使用方法.
请使用git clone拉取本项目
测试文本存于./Sample_Data/test.json
[
{ "text": "第一句測試指令", "delay": 1000 },
{ "text": "第二句測試指令", "delay": 1500 }
]其中text内文本会通过系统内建TTS播送,delay为延时(ms)
Note
实验性功能,未经充分测试
源码文件存于./compile内,使用IDE开启compile.ino编辑其中WiFi / Server内容
Tip
本项目为双路ESP32Cam录制,如果只要单路录制只需保留CameraL/R其中一个地址即可
更改后即可烧录到esp32
- 启动WebSocket服务器
- 导入测试JSON
- 设置DoT个数(1-8)
- 连接DoT
- 录制/停止
- 导出实验数据
ESP32上电---APP上启动WS---导入测试json---连接dot---开始录制---停止并保存---导出
本项目中“状态”分为两类:
- APP界面状态(
Eva内status/dotStatus文本) - ESP32串口日志(
compile.ino中Serial.println/printf输出)
- APP点击
启动 WS后,状态显示:WS listening on 9002/ws/cameraL & /ws/cameraR - ESP32上电后连接Wi-Fi,串口显示:
[WiFi] connecting... OK <ip> - ESP32尝试连接APP的WS服务,串口显示:
[WS-CAM] connected随后进入事件回调显示:[WS-CAM] open - 左右相机接入后,APP状态会出现:
L connected/R connected - 开始录制后,APP状态显示:
錄製中… <session_path> - 停止录制后,APP状态显示:
錄製結束,L:x R:y,路徑: <session_path>
Idle: 初始状态,尚未启动WS或无新事件WS listening ...: 手机端WS服务已启动,等待ESP32连接L connected / R connected: 对应路径(/ws/cameraL、/ws/cameraR)已有ESP32接入L disconnected / R disconnected: 对应相机流断开寫檔失敗: ...: 接收到图像但保存失败(通常是存储或路径问题)DOT: 掃描中... / DOT connected / DOT init done: Movella DOT连接流程状态
[WS-CAM] retry in 1s...: 尚未连接到APP WS服务(端口/IP/热点不通)[WS-CAM] connected: TCP/WS连接建立成功[WS-CAM] open: WebSocket已进入可发送状态(cam_ws_ready=true)[WS-CAM] closed (...): 连接关闭,同时打印发送统计[CAM-CAP] ...: 相机采集统计(采集数、队列、失败数)[CAM-SEND] ...: 图像发送统计(发送数、丢帧、失败)
- APP在点击
開始錄製/停止並保存时会向所有WS客户端发送文本:START/STOP - 当前
compile.ino并未对START/STOP做专门处理;ESP32视频发送以WS是否已连通为准(cam_ws_ready) - ESP32当前已实现并处理的文本指令为:
SET:FRAMESIZE=...、SET:QUALITY=...、SET:FPS=...、SNAP:HQ
- APP已显示
WS listening...但ESP32一直retry in 1s...: 检查compile.ino中的SERVER_HOST/SERVER_PORT/CAM_WS_PATH是否与APP一致 - 只有L或R连接:
检查对应ESP32烧录时的
CAM_WS_PATH(L机用/ws/cameraL,R机用/ws/cameraR) - 已连接但无画面增长:
看ESP32是否出现
[CAM-SEND] ERROR或长时间No frame sent警告
本项目采用 Apache License 2.0 开源许可证,详见 LICENSE。
- 本仓库的开源许可证仅适用于本项目自有代码。
- Movella/Xsens SDK(如
.aar)属于第三方组件,需遵守其官方许可证与分发条款。 - 如用于论文公开与代码复现,请在论文或附录中注明第三方组件来源与许可信息。