The dataset·
Embodied chain-of-thought, brain edition:
| ECoT | here |
|---|---|
| camera | band power · CQ · motion · metrics · facial · events @ 8 Hz |
| reasoning | TASK \| AMBIENT \| PLAN \| TOOL \| ACT \| REWARD |
| gripper | the agent's speech |
| success | your brain after the answer (Δstress, Δengagement) |
An episode = 3 s before you speak → the streamed answer → 12 s after (catches the next met tick).
A real frame·
Every frame carries the whole turn as one task string. Decoded:
frame 80 ·
task string · decodedTASKOne sentence: how does my brain look right now?
AMBIENT[brain: theta dominant · CQ 13/14 good]
PLANCalm and settled: theta's leading with solid contact…
TOOLnone
ACTCalm and settled…
REWARDΔstress=nan, Δengagement=nan
(nan is honest: met at 0.1 Hz didn't land inside that 12 s episode.)
Use it·
from lerobot.datasets.lerobot_dataset import LeRobotDataset
ds = LeRobotDataset("cagataydev/emotiv-ecot") # private
ds[80]["observation.state"].shape # [70]
ds[80]["task"] # the string above
● REC → talk → Publish. Or strands-emotiv record ambient --minutes 10 for baselines.
Full schema: DATASET.md.