RAP Lab field manual · R1 EDU · arms-first

From safe motion to publishable evidence.

A staged research-development plan for the equipment already in the lab: first validate R1 control, then integrate bounded voice, LeRobot and physiology paths, and only then run studies on mind attribution, trust and technostress.

Operating boundary: this guide assumes the R1 EDU has no dexterous hands and no onboard Orin module. Heavy inference runs offboard. The confirmed starting scope is stationary arm and torso social gestures—not grasping, unverified head motion or locomotion. Navigation is a later track that requires verified Unitree locomotion access, route and stop testing, and dedicated supervision.

Annotated Unitree R1 humanoid showing its binocular camera, microphone array, speakers, computing modules, battery and joint degrees of freedom
UNITREE R1 · LAB HARDWARE REFERENCE
INPUTspeech · teleoperation · experimental condition
R1 EDUbounded motion library · ROS 2 / SDK bridge · safety supervisor
EVIDENCEbehavior logs · ring physiology · EEG · scales · interviews
No R1 upgradefor scripted gestures, voice studies or physiology; XR teleoperation may still require a headset
16-channel EEGCyton + Daisy; 125 Hz in 16-channel mode
1 research ringHR/HRV, EDA, temperature and motion
4 embodimentsR1, NAO, Furhat and laptop text
01 · Reality check

Design for the robot you actually own.

The R1’s value here is embodiment, motion, presence and controlled social signaling. Fine manipulation is outside today’s configuration.

Available now

Arm waves, points, bows, beckoning, presenting and waist/arm posture changes.
Voice-triggered behaviors using the existing offboard Ollama pipeline.
Stationary teamwork using pointing, turn-taking and bounded social cues.
R1 vs NAO vs Furhat vs text embodiment studies with matched dialogue.
Single-participant EDA/HRV and 16-channel EEG during interaction.
Scripted arm stimuli and read-only state, camera, audio, remote and physiology datasets after each interface passes its bench check.

Keep outside scope

×Grasping, tool use, reliable object handover and handshake grip.
×End-to-end language-model control of raw joints.
×Any locomotion until Unitree access, routes, stop behavior and supervision have been validated; also no stunts or participant contact.
×Claims of gaze, facial affect or dyadic physiological synchrony without the missing sensors.
×Calling simulated success “R1 deployment.” Simulation is a gate, not evidence of physical performance.

Full capability map for the delivered R1 EDU Standard

Works with current hardware

Embodied motion

  • 12 leg joints: standing, balance and regular walking through Unitree’s validated controller path.
  • 10 arm joints: two 5-DoF arms for waves, pointing, presenting, beckoning, guarding space, mirrored/asymmetric poses and timed movement sequences.
  • 2 waist joints: yaw/roll body orientation for social address, emphasis and posture manipulations.
  • Scripted arm control: bounded named-joint trajectories can drive waves and pointing after the delivered joint map and ownership transition pass the bench gates.
Works after interface verification

Perception, voice and onboard functions

  • Binocular camera: scene recording, visual condition checks, teleoperator view and policy observations once stream names and calibration are captured.
  • 4-mic array + speaker: speech input/output for the Ollama loop once the actual ALSA/ROS/vendor audio route is verified.
  • Head motion: the product family advertises 2-DoF head motion, but the lab’s confirmed 24-DoF joint count excludes it. Treat commandability as TO-VERIFY.
  • Built-in behaviors: enumerate the handheld remote/app menu and any R1 motion service on the unit; do not borrow G1/H1 behavior names.
Needs extra hardware or engineering

Extensions

  • Grasping and tool use: requires compatible gripper/dexterous hands, mounting, wiring and a new safety validation.
  • Heavy onboard VLA: requires an accelerator module; today, train and infer on the desktop and stream bounded arm actions.
  • XR arm teleoperation and capture: Unitree lists R1_A5 support, but the lab still needs a compatible Apple Vision Pro, PICO or Quest device, a verified R1_A5 joint-profile match and the image-service network path.
  • Autonomous navigation: needs verified R1 locomotion APIs, mapping/perception stack, route testing and participant-safe supervision.
Not applicable with dummy hands: finger trajectories, grasp force, pinch, compliant handshake grip, object retention, fine assembly and hand-mounted tactile sensing. “Reach toward,” “present,” and “handover pose” are valid; “pick,” “hold,” and “place” are not.
01

Recommended first scientific instrument: a gesture library

It needs no fingers, exposes the entire control chain, and gives the lab repeatable manipulations for intentionality, confidence, apology, turn-taking and social presence.

01A · SDK + ROS 2 control

Choose the least powerful layer that can do the job.

The public SDK2 repositories establish DDS-based high- and low-level access. R1 is listed by SDK2 and by Unitree’s XR project; public unitree_ros2 documentation still names Go2, B2 and H1—not R1—so the InDro R1 graph must be discovered on the lab unit.

R1 control layers from experiment logic to hardwareFour horizontally connected blocks show research task logic, ROS 2 orchestration, Unitree SDK2 over DDS, and the R1 safety and motor controller. A feedback path returns camera, joint, IMU, battery and remote state. Experiment logiccondition · timing · logsROS 2 / bridgenodes · bags · eventsUnitree SDK2DDS request / pub-subR1 controllerlimits · balance · motorsfeedback: camera · joint state · IMU · battery · remote
Control-layer rule: study logic selects approved skills; only the lowest controller layer touches joints. The safety supervisor remains between any learned output and the robot.
LayerUse it forDo not use it forR1 status
Remote / onboard controller

Initial posture, regular walking, bringing the robot into the vendor-supported operating mode, immediate operator intervention.

Experimental timing or repeatable research stimuli.

use first
High-level SDK2

Vendor-supported whole-body behaviors and controller state transitions. The official Python examples expose sportmode_test.py for supported robots.

Inventing an R1 method name from a G1/Go2 example.

TO-VERIFY API
ROS 2 orchestration

Study nodes, event markers, sensor routing, recording and calls into a verified R1 bridge.

Assuming public unitree_ros2 topics are identical on the InDro R1 image.

discover graph
Low-level SDK2

Read joint/IMU/battery state; only later, bounded joint control and learned arm policies behind limits.

First motion, locomotion experiments or any command while high-level motion owns the joints.

expert only

Bench cookbook: manipulate the robot without guessing

A

Discover the actual R1 interface

Run this first on the Ubuntu host connected through the InDro controller.

1

Freeze the software image

Record Ubuntu, ROS distribution, InDro package versions, R1 firmware, SDK2 commit and network interface. Photograph the remote’s labeled controls.

2

Inventory without commanding

source /opt/ros/<distro>/setup.bash
# Source the InDro/R1 workspace supplied with the controller.
ros2 node list
ros2 topic list -t
ros2 service list -t
ros2 action list -t

Replace only <distro> and the workspace source path. Save the output as the interface inventory.

3

Inspect, do not assume

ros2 topic info <verified_topic> --verbose
ros2 interface show <verified_message_type>
ros2 service type <verified_service>
ros2 action info <verified_action>
Pass: the team can point from each command/state stream to its real type and publisher/consumer on this exact unit.
B

Read state before commanding

Prove names, order, units and timing with motion disabled.

1

Record the discovered graph

Identify the R1 joint-state, IMU, battery and remote-controller streams from the inventory. Public SDK2 examples show these state classes exist, but their R1 topic names are TO-VERIFY.

2

Echo and bag only verified streams

ros2 topic echo <verified_joint_state_topic> --once
ros2 bag record \
  <verified_joint_state_topic> \
  <verified_imu_topic> \
  <verified_battery_topic> \
  <verified_remote_topic>
3

Map all 24 controlled joints

Confirm 6 per leg, 2 waist and 5 per arm; record index, name, sign, units, neutral angle and delivered limits. If head joints appear, add them separately rather than altering the confirmed 24-DoF baseline.

Pass: 60 seconds of stable, timestamped state with no unexplained index, NaN, stale frame or clock jump.
C

Move one joint under a permit

No public R1-specific low-level function signature was verified, so this is an execution checklist—not fabricated code.

1

Mechanical gate

Mount the gantry, clear everyone beyond full arm reach, keep the remote in the spotter’s hands and start above the session’s minimum battery threshold.

2

Control-ownership gate

Use the vendor/InDro procedure to release only the target arm group. Unitree’s public SDK2 Python guidance explicitly says high-level sport_mode must be disabled before low-level motor control. Verify the R1 equivalent on the unit.

3

Command envelope

Start from measured position, move one shoulder joint only a few degrees with conservative gains and velocity, continuously publish the required hold/trajectory stream, and reject stale/NaN/out-of-range commands.

4

Stop and inspect

Return to the captured neutral pose; stop publishing through the documented transition; inspect error, current/torque estimate and temperature. Repeat only after a clean log.

Do not copy a G1 or quadruped motor-index example onto R1. The official repositories prove the control pattern, not the R1 index map or safe gains.
D

Play a safe arm trajectory

Turn a validated one-joint path into a repeatable wave.

1

Author in named joint space

Use only the five verified right-arm joints. Every waypoint includes time-from-start; interpolate smoothly, cap position/velocity and begin/end at NEUTRAL_V1.

2

Run progressively

Offline plot → command shadow log → gantry + one joint → gantry + arm → ten full repetitions. Keep legs under the vendor balance controller; never mix a custom arm loop with unverified whole-body commands.

3

Version the behavior

Store joint map, radians, timing, interpolation, limit file, controller mode and firmware/SDK version with the trajectory.

Pass: ten trials complete within timing tolerance and return within neutral tolerance, with zero limit, balance, thermal or timeout events.
E

Camera, microphone and speaker

Separate verified hardware from still-unverified software routes.

1

Camera quick test

The official SDK2 Python repository supplies example/front_camera/camera_opencv.py; it is not documented there as R1-specific. Run read-only after the network interface is known.

python3 ./example/front_camera/camera_opencv.py <robot_network_interface>
2

XR image path

xr_teleoperate uses teleimager for physical-robot image service and supports UVC/V4L2/GStreamer/RealSense sources. Configure the actual binocular devices; confirm left/right ordering, resolution, FPS and timestamp source.

3

Audio route

On the InDro image, enumerate capture/playback devices and ROS audio nodes. Verify sample rate, channel mapping, echo cancellation and speaker latency. The generic SDK example controls volume, but a public R1 mic-stream API was not verified: label it TO-VERIFY.

Pass: save ten seconds of synchronized camera and mic input, play a test phrase, and document measured end-to-end latency without moving the robot.
F

Mode switching and emergency stop

One controller owns a joint group at a time.

1

Before any transition

Robot on gantry; arms near initial pose; spotter has remote; no participant present; control process heartbeats visible; current mode read back from the robot.

2

XR motion mode

Unitree’s R1-capable XR project supports regular mode only; running mode is explicitly unsupported. In motion mode, both XR joysticks pressed invoke a soft emergency stop to damping mode, while the handheld R3 controller remains required for robot control mode.

3

Exit cleanly

Bring arms near initial pose before quitting. The official XR path returns arms over five seconds before ending control. Confirm the mode change on telemetry; do not assume process exit means motors are safe.

4

Test failure paths

With gantry and empty zone, test network loss, stale command, policy crash, operator exit, soft stop and physical power isolation. Write the observed robot response and restart sequence.

Emergency hierarchy: physical clearance and remote/power stop outrank software. A soft stop is not a substitute for the spotter.

Safety gate by control path

PathBefore enableDuring motionExit / evidence
Handheld remote

Inspect battery, zone, gantry and labeled stop behavior; operator demonstrates the intended mode without a participant.

Spotter holds remote, maintains line of sight and stays outside swept volume.

Return to stable stand; log mode and any intervention.

High-level SDK

Verify the method exists on this R1/firmware and rehearse stop; never call a name copied from another Unitree robot.

Bound command frequency and duration; read controller state.

Cancel through documented API and verify state transition.

XR teleoperation

R1_A5 match, arms aligned, no --ee, regular mode only, R3 remote with spotter.

Teleoperator and spotter communicate; both-joystick soft stop tested.

Arms near initial pose; five-second return observed; episode labelled.

ROS 2 bridge

Record node/topic/service/action inventory; confirm QoS, units and ownership.

Heartbeat and stale-command timeout; bag state and event markers.

Stop publishers; confirm robot-side owner released—not merely node exit.

Low-level SDK2

High-level owner released; 24-joint map, limits, signs, rate and gains bench-verified; gantry mandatory.

Finite/range/velocity checks every cycle; watchdog, neutral and operator stop active.

Ramp to neutral, release ownership, inspect faults/temperature/log.

Learned policy

Frozen checkpoint; offline and shadow gates passed; firewall validated with malformed actions.

Arms only; confidence is never a safety signal; human stop always available.

Any anomaly aborts the trial and labels the episode; no online learning in participant sessions.

01B · LeRobot on top

Teach arm behavior; do not hand locomotion to LeRobot.

LeRobot supplies the dataset, policy-training and inference layer. Unitree’s current unitree_lerobot deployment code targets G1 configurations; R1 episode capture is supported by xr_teleoperate, but conversion and deployment need a tested R1_A5 adapter.

LeRobot teleoperation to policy pipelineA six-stage flow shows an XR operator controlling the R1 arms, episode recording, quality control and conversion, ACT Diffusion or VLA training offboard, shadow evaluation, and bounded deployment through a safety firewall back to the R1. TeleoperateR1_A5 · XRRecordimages · states · actionsQC + convertLeRobotDatasetTrain offboardACT · Diffusion · VLAEvaluateoffline · shadow · gantryDeploybounded arm actionsfailure labels + new demonstrations feed the next version
The research loop is iterative, but participant studies use a frozen checkpoint. The policy never writes to locomotion and never bypasses range, velocity, freshness or ownership checks.
Install and pin the official paths.

On Ubuntu, clone xr_teleoperate, initialize its submodules, install its Python 3.10 environment and install unitree_sdk2_python. Record repository commits. First run only in visualization/shadow mode.

git clone https://github.com/unitreerobotics/xr_teleoperate.git
cd xr_teleoperate
git submodule update --init --depth 1

cd ~
git clone https://github.com/unitreerobotics/unitree_sdk2_python.git
cd unitree_sdk2_python
pip install -e .
Verify the R1_A5 teleoperation profile.

The official project lists both R1 5-DoF and 7-DoF arms as complete. For this robot choose R1_A5, no end-effector flag, and the actual DDS interface. Keep locomotion disabled for the first arm-only session.

cd ~/xr_teleoperate/teleop
python teleop_hand_and_arm.py \
  --input-mode=controller \
  --arm=R1_A5 \
  --network-interface=<robot_network_interface> \
  --record \
  --task-dir=$HOME/datasets/r1_wave \
  --task-name="r1_wave" \
  --task-goal="perform two small right-arm wave cycles and return to neutral"
First-run rule: align the operator arm to the robot initial pose before pressing r; use s to start/stop each episode and q only after the arms are near initial pose.
Record a disciplined demonstration set.

Gantry on; fixed camera/robot/floor marks; one trained operator; neutral reset; two wave cycles; neutral return. Capture at the project’s documented 30 Hz default unless bench timing supports another fixed rate. Inspect after the first episode, then every ten.

Quality-control the raw episodes.

Each frame needs: monotonic timestamp; frame and episode index; binocular/head image reference; ordered ten-arm-joint position (and velocity if the source provides it); ordered ten-arm-joint target action; task label; robot/SDK/config version; and episode outcome/failure reason. Reject only by written rules: missing frames, discontinuity, limit event, wrong start, no neutral return or operator abort. Do not silently remove hard-but-valid trials.

Build the R1 conversion configuration.

unitree_lerobot provides Unitree JSON→LeRobot conversion and a ROBOT_CONFIGS extension point, but its documented presets are G1/Z1—not R1. Add an explicit Unitree_R1_A5 mapping for the verified ten arm joints, image keys, names, units and FPS; then round-trip one episode before batch conversion.

TO-VERIFY / custom: do not run the documented converter with Unitree_G1_Dex3. The R1 adapter must be implemented and reviewed against the actual episode schema.
Validate the LeRobot dataset.

Load one episode, visualize video and plot every state/action channel. Split by recording block or start condition, not by frame. Compute normalization statistics on training episodes only. Freeze a versioned dataset card before training.

Train three levels of policy.

ACT first: best initial baseline for short, repeatable arm sequences. Diffusion second: compare multimodal or smoother trajectories after ACT works. VLA later: use only when language-conditioned variation is the research question and offboard compute is available; R1’s base CPU is not the training box.

cd unitree_lerobot/lerobot
python src/lerobot/scripts/lerobot_train.py \
  --dataset.repo_id=<lab_or_hub_repo_id> \
  --policy.push_to_hub=false \
  --policy.type=act

The command is sourced from Unitree’s LeRobot repository; substitute only a validated R1 dataset ID. Repeat later with --policy.type=diffusion.

Create the R1 deployment adapter and firewall.

Translate policy output names to the verified R1_A5 arm order. Check tensor shape, finite values, timestamp age, range, velocity and controller ownership; smooth/rate-limit; keep legs and waist under approved control; send only through the validated R1 arm path. A fault returns neutral or hands control to the operator.

Deploy in six gates.

Dataset replay offline → policy outputs logged only → recorded actions shadow-compared → one joint on gantry → full arm on gantry → ten empty-room trials. Only after the same safety/performance threshold passes may the checkpoint become a participant stimulus.

Boundary that prevents the wrong project

LeRobot is the right layer for learned arm gestures, imitation, language-conditioned upper-body policies and dataset publishing. It is not the lab’s locomotion controller. Walking stays with the vendor’s whole-body controller and remote/XR motion path unless a separate, independently validated locomotion program is approved.

02 · Before code

Assign ownership before the robot moves.

One person may hold multiple roles, but every role must have a named owner for each session.

Top-down safety layout for R1 bench motionThe R1 stands inside a gantry at the center of a marked clear zone. The operator stays at the workstation outside the zone and the spotter stands at the edge holding the remote with a clear path to power isolation.Operatorcontrol + logsR1 + gantrySpotterremote / stopclear route to powermarked no-entry zone: at least full arm reach; expand for any walking test
Minimum empty-room layout for first motion. Participant position is not added until the behavior, stops and clearance have passed repeated bench trials.

Safety lead

Owns clear zone, controller, stop word, participant distance and abort decisions.

Robot operator

Starts SDK/ROS nodes, verifies state, executes approved motion and logs faults.

Data lead

Owns clocks, event markers, filenames, sensor quality and the session manifest.

Protocol lead

Reads the script, randomizes condition, records deviations and keeps experimenter behavior fixed.

A

Freeze configuration

Record the R1 arm variant, firmware, SDK/ROS versions, host OS, network interface, camera stream, joint names/order, units and neutral pose. Verify the Furhat SDK path and whether ring data can export locally without a cloud round-trip.

documented
B

Write the stop plan

Define physical clearance, maximum tested joint range, velocity cap, stale-command timeout, neutral fallback, stop word, controller holder and who may call an abort.

required
C

Separate networks

Put real-time robot control on the dedicated lab network; run training on the powerful desktop, not in the control loop. Keep experiment logging on a synchronized host.

architecture
D

Prepare governance

Draft protocol, consent, data-retention plan, adverse-event process and publication boundary before collecting participant data. Decide separately whether robot logs, video, voice or physiology can be shared.

ethics gate
03 · Shared build pipeline

Prove one layer at a time.

These nine stages are the common technical spine for every research program below. Do not skip forward when a pass condition fails.

00

Safety envelope and dry run

Build the conditions under which any motion is allowed.

1

Prepare the bay

Clear a two-arm-reach zone; remove trip hazards; mark operator and participant positions; inspect battery, fasteners and cables; place the robot in a stable neutral stance.

2

Assign two humans

Operator controls software. Spotter holds the physical controller/emergency stop, watches balance and may abort without discussion.

3

Test stop paths before motion

Test software stop, controller stop, power isolation and stale-command timeout. Say the shared stop word aloud. Record the expected robot response.

Pass: each stop path returns the robot to a documented safe state without ambiguity.
4

Write a motion permit

List allowed joints, conservative range, speed, duration, start pose and no-go zones. A new behavior does not run until the safety lead signs off.

Output: protocols/safety-envelope-v1.md and a photographed floor layout.
01

Read-only bring-up

Understand state and timing before publishing any command.

1

Inventory versions

Record host OS, R1 firmware, SDK/ROS package versions and commits, network interface, robot address/topic namespace, camera resolution and nominal update rates. Do not upgrade during a study.

2

Read joints

With motion disabled, stream timestamped joint positions, velocities and controller state for 60 seconds. Confirm count, order, units and signs against the delivered R1 documentation.

3

Read vision and audio

Open one camera stream and the microphone path. Check image orientation, frame age and whether audio capture conflicts with the voice pipeline.

4

Measure clock drift

Compare robot, logging desktop and sensor-host clocks at start and end of the 60-second run. Pick one master clock and log offsets.

Pass: stable state stream, mapped joints, fresh frames, no unexplained drops and a saved schema.
Output: config/r1-interface-contract.yaml plus a 60-second raw log.
02

Scripted gesture library

Create deterministic research stimuli before learning them.

1

Save neutral

Capture the approved arm, torso and head pose. Every gesture begins and ends here. Record joint-space tolerance for “neutral reached.”

2

Author one joint trajectory

Begin with a small right-arm wave. Use waypoints and eased interpolation. Keep locomotion disabled and body balance logic outside the gesture controller.

{
  "id": "WAVE_SMALL_V1",
  "start": "NEUTRAL_V1",
  "max_duration_s": 4,
  "allowed_groups": ["right_arm"],
  "on_timeout": "RETURN_NEUTRAL"
}
3

Validate progressively

Log-only → one joint at low gain → one arm → full gesture. Run ten repetitions; inspect peak position, peak velocity, return error and any balance response.

4

Build the bounded catalog

Add nod, bow, point-left/right, beckon, present and hesitation only after the wave passes. Each behavior gets version, start/end pose, duration, degrees of freedom, stop rule and video reference.

Pass: ten consecutive repetitions return within the neutral tolerance with no limit, balance or timeout fault.
03

Voice and behavior orchestration

Let the language model choose only from approved skill IDs.

1

Define the contract

Ollama returns speech text, one allow-listed gesture ID and a timing relation. Reject malformed output or unknown IDs to NO_ACTION.

{
  "say": "Welcome to the RAP Lab.",
  "gesture": "WAVE_SMALL_V1",
  "timing": "gesture_then_speak"
}
2

Test disconnected

Run at least 100 benign, paraphrased, ambiguous and adversarial utterances. Score correct skill, wrong skill and safe rejection. The robot stays offline.

3

Run shadow mode

Connect state streams but send no commands. Log selected behavior, safety checks and intended timing. Human reviewers approve the first 20 correct selections.

4

Enable supervised execution

Orchestrator order: stop listening → validate current pose and clearance → reserve controller → run gesture → play speech according to condition → return neutral → release controller → resume listening.

Fallback: stale frame, late inference, off-neutral pose or control conflict produces speech-only or no action—never a late joint command.
04

Teleoperation and episode capture

Use teleoperation only after read-only and scripted motion are stable.

1

Verify the interface and input device

Confirm delivered arm configuration before choosing any R1 arm profile. Confirm whether the lab has a compatible XR headset; that remains an open inventory question. Without one, record scripted demonstrations now and add XR later.

2

Define episode schema

For each frame store monotonic timestamp, camera image, arm joint position/velocity, commanded action, controller state, behavior label and operator event. Save session metadata once, not redundantly in every frame.

3

Standardize resets

Mark floor position and camera tripod; run RETURN_NEUTRAL; confirm clearance; start recording; execute exactly two wave cycles; stop; annotate pass/failure; reset.

4

Collect in blocks

Collect ten episodes, inspect them, then continue toward fifty clean demonstrations. Do not wait until episode fifty to discover swapped joints or missing frames.

Pass: camera, state and action align; every dimension is named; no NaNs; failure episodes are labeled rather than silently deleted.
05

R1 → LeRobot adapter and baseline

LeRobot is the training/data layer; the R1 adapter and safety supervisor remain custom engineering.

1

Implement the observation contract

Expose fixed keys for camera image and selected arm state. Normalize only with statistics saved from the training split. Keep units and joint order explicit.

observation = {
  "observation.images.head": rgb_frame,
  "observation.state": ordered_arm_joint_positions
}
2

Implement the action firewall

Check shape and freshness; clip to tested joint range; rate-limit velocity; reject NaN/Inf; enforce timeout; verify controller ownership; return neutral on fault. The neural policy never bypasses this layer.

3

Convert and inspect

Split by start condition, not random frame. Plot every state/action channel, review each video and retain a separate held-out condition. Generate dataset statistics only from training episodes.

4

Train the simplest baseline

Use an ACT imitation policy first. Save config, code commit, seed, data version, checkpoint and training curves. Loss is diagnostic, not the outcome.

5

Deploy progressively

Offline inference → shadow actions → one joint → one arm → full gesture. Compare scripted and learned variants on familiar and held-out starts.

Go: safe repeatability on familiar starts and a documented held-out failure profile. Freeze the checkpoint before participant use.
06

Physiology and event synchronization

Instrument the event timeline before interpreting arousal or workload.

1

Choose sensors by question

Use the ring alone for lower-burden HR/HRV + EDA. Add OpenBCI when the theory requires EEG. In 16-channel mode Cyton + Daisy samples at 125 Hz, suitable for band-power and limited ERP-style work, not high-frequency claims.

2

Prepare participant and baseline

Check consent and contraindications; fit ring and electrodes; inspect contact and signal quality; seat participant; record a quiet baseline before any robot movement.

3

Emit event markers

Use one event dictionary across robot, task UI and acquisition host: session start, baseline start/end, robot speech start/end, gesture start/end, advice, error, repair, participant response and trial end.

TRIAL_017 | t_master | CONDITION=APOLOGY_BOW
ROBOT_ERROR_ONSET
REPAIR_SPEECH_ONSET
REPAIR_GESTURE_ONSET
PARTICIPANT_CHOICE
TRIAL_END
4

Run a synchronization bench test

Send repeated markers while recording all streams; estimate offset, jitter and missing markers. The ring’s iOS/cloud path may be the bottleneck—verify local raw export before committing to event-level analyses.

Do not claim synchrony: with one ring and one EEG board, the lab can analyze participant physiology aligned to robot events—not two-person physiological synchrony.
07

Pilot in three passes

Debug technology, then manipulation, then full protocol.

1

Engineering pilot

Team members only. Stress start/stop, lost network, stale camera, repeated gestures, low battery, voice timeout and sensor reconnect. No human-subject measures.

2

Manipulation check

Test whether intended constructs differ—such as confident vs hesitant or apology vs no repair—without unintended differences in loudness, duration, danger or perceived malfunction.

3

Protocol pilot

Run consent through debrief, including randomization, sensors, questionnaire, interview and file handoff. Time every segment and note deviations.

Pass: no critical faults, usable sensor quality, clear manipulation, complete data linkage and a protocol the team can deliver consistently.
08

Freeze before recruitment

Turn a working demo into a controlled research instrument.

1

Version stimuli

Export robot trajectories, speech audio/text, prompts, UI, questionnaires and randomization table. Compute hashes and record the deployed versions.

2

Preregister decisions

State hypotheses, inclusion/exclusion, manipulation checks, primary DVs, processing choices, artifact rules, stopping rule and analysis model before collecting confirmatory data.

3

Rehearse staff

Each operator completes the same certification run: setup, baseline, condition delivery, abort, recovery, notes and teardown.

4

Lock change control

No software, firmware, prompt, timing or questionnaire changes mid-study without documented version break and analysis decision.

Output: a signed release manifest linking protocol, code, model, sensor config and stimuli.
04 · Research portfolio

Eight programs, one reusable platform.

Start with Programs 1–3. They use the R1’s strongest capability—controlled social motion—without requiring hands.

Program 01 · best fit now

Mental-state framing × embodied gesture

Ask whether the same robot action is interpreted differently when the R1 speaks in intentional language (“I decided”) versus mechanistic language (“my program selected”), and when a congruent gesture is present or absent.

Design
2 framing × 2 gesture, between subjects
Task
Short collaborative advice or quiz
Primary DVs
Agency/experience, intentional language, reliance
Secondary
Godspeed, perceived malfunction, ring arousal
Use

R1 + laptop + ring

  • WAVE or POINT behavior
  • Matched prerecorded voice
  • Task interface and event logger
  • Ring optional for arousal
Freeze the spoken script.

Write one dialogue; create intentional and mechanistic variants that differ only in agency framing. Match word count, voice, timing and advice accuracy.

Freeze the motor manipulation.

Use one validated gesture and a no-gesture control. Keep start pose, distance, duration and robot orientation identical.

Create randomization.

Generate balanced assignment to the four cells. Hide condition from the person administering outcome scales where feasible.

Run manipulation checks first.

Confirm intentional framing raises perceived intentionality and gesture presence is noticed without raising danger or malfunction.

Run the main sequence.

Consent → baseline → interaction → immediate reliance choice → scales → free-text “why did the robot act that way?” → debrief.

Analyze the mechanism.

Test framing, gesture and interaction on mind attribution and reliance; code free text blind to condition. Treat arousal as secondary unless preregistered.

Program 02 · strongest paper path

Trust formation, violation and embodied repair

A repeated advice task creates trust, introduces controlled errors, then compares repair strategies. The R1’s bow or nod makes repair visibly embodied.

Design
Reliability phase + repeated violation + repair condition
Repairs
Apology, explanation, apology + bow, no repair
Primary DV
Behavioral reliance after violation
Secondary
MDMT, ability/benevolence/integrity, EDA/HR
Use

R1 + task UI + ring

  • Deterministic advice schedule
  • Visible error events
  • Speech + bow stimulus
  • Event-level physiology
Build the advice task.

Use objectively scored items with controlled difficulty. Precompute when advice is correct or wrong; do not let a live LLM determine experimental reliability.

Set the formation phase.

Deliver a fixed series of mostly correct recommendations so trust has time to form. Log advice, participant choice and outcome.

Stage the violation.

At preregistered trials, give consequential but ethically bounded wrong advice. Mark error onset and outcome reveal.

Deliver one frozen repair.

Play matched speech; in the embodied condition, add the same validated bow. Keep voice, length, delay and content controlled.

Measure recovery behaviorally.

Offer new advice opportunities immediately after repair. Primary outcome is how often participants follow subsequent advice—not only what they say.

Model repeated trials.

Use trial-level models for reliance and time; test repair × trial and baseline trust. Align EDA/HR windows to violation and repair markers.

Program 03 · LeRobot contribution

Scripted versus learned social motion

Compare a deterministic gesture with an ACT imitation policy trained on R1 demonstrations. The theoretical question is whether small natural variation changes intentionality, naturalness and predictability.

Design
Scripted vs learned; matched endpoint and duration
Stimuli
Wave, point or hesitation
Primary DVs
Naturalness, predictability, mind attribution
Engineering DV
Completion, path variance, return error
Use

R1 + LeRobot + desktop

  • 50+ clean demonstrations
  • Custom R1 adapter
  • ACT baseline
  • Frozen policy checkpoint
Choose one movement with no grasp.

Wave is safest. Define start, endpoint, two oscillations, total duration and neutral return.

Build the scripted benchmark first.

Verify ten repetitions and retain joint traces. This is both control condition and safety reference.

Collect demonstrations.

Use one operator for the first dataset, standardized reset and block-level QC. Keep failures with labels.

Train and evaluate ACT.

Separate held-out start positions. Compare task completion, temporal smoothness and neutral return before any human study.

Match the stimulus.

Adjust only what is necessary to align duration and path endpoints; document all matching decisions. Do not cherry-pick “best-looking” learned trials.

Run perception study.

Randomize policy condition; collect naturalness, predictability, eeriness and intentionality. Report both robot performance and participant perception.

Program 04 · future gated track

Authority and delegation in human–robot teams

Begin with the R1 stationary as a coordinator using speech and pointing. Add mobile guidance only after Unitree locomotion access, bounded routes, stop behavior and supervision have been independently validated.

Design
Three authority conditions
Task
Locate/inspect marked zones
Primary DVs
Delegation choices, completion time, errors
Secondary
NASA-TLX, satisfaction, trust
Use

R1 + task UI

  • Stationary speech and pointing first
  • Known safe waypoints only after mobility validation
  • No carrying or grasping
  • Observer + stop controller
Start stationary; open the mobility gate separately.

Run allocation with speech and pointing first. For later mobile work, verify Unitree locomotion access, create marked waypoints, test every route without participants, and freeze speed, clearance and stop behavior.

Define divisible work.

Use zones or visual checks that robot can guide toward and participant can complete. Equalize workload and difficulty.

Implement authority conditions.

Human assigns, robot recommends then human confirms, or robot allocates from the same scripted rule.

Log decisions.

Capture offered task, allocation, override, latency, travel time, errors and reason for override.

Run supervised trials.

For stationary trials, the spotter watches arm clearance. If the mobility gate has passed, the spotter also owns locomotion stop and aborts on route obstruction or control instability.

Analyze tradeoffs.

Separate efficiency from preference. Test whether control authority changes delegation and satisfaction even when performance is similar.

Program 05 · signature NeuroIS lane

Physiological response to robot social signals

Manipulate empathetic versus neutral dialogue or confident versus hesitant motion and align EEG, EDA and cardiac response to exact events.

Design
Between-subject style or within-subject event blocks
Primary physiology
SCR rate/amplitude, HR, RMSSD
EEG candidates
Frontal alpha asymmetry, engagement/workload indices
Self-report
Arousal, safety, trust, presence
Use

R1/Furhat + EEG + ring

  • Cyton + Daisy, 16 channels
  • Standard montage
  • Research Ring AT01
  • Master event log
Choose one physiological claim.

Prefer event reactivity or workload over broad “engagement.” Map every construct to a measure and processing decision.

Bench-test synchronization.

Characterize offset and jitter across OpenBCI, ring, robot and task. If ring export cannot support event timing, limit it to block-level outcomes.

Standardize preparation.

Same room, seating, instructions, baseline duration, sensor placement and artifact checklist. Log cap/electrode quality and ring fit.

Mark every event.

Record speech, gesture, error, repair and participant response onset. Never infer event time later from memory.

Predefine artifact rules.

Specify EEG channel rejection, motion windows, HRV segment requirements and EDA non-responder handling before confirmatory analysis.

Report multimodal evidence honestly.

Treat EEG, EDA and cardiac measures as distinct signals; correct for multiple testing and avoid labeling correlation as synchrony or causation.

Program 06 · existing lab advantage

Embodiment ladder with one dialogue model

Deliver identical conversational content through R1, NAO, Furhat and text. Holding language constant isolates embodiment more cleanly than comparing unrelated systems.

Design
R1 vs NAO vs Furhat vs text
Task
Advice-taking or structured interview
Primary DVs
Social presence, disclosure, advice acceptance
Secondary
Trust, engagement, arousal
Use

All existing embodiments

  • Shared dialogue script/model
  • Matched voice where possible
  • R1/NAO gesture library
  • Furhat gaze/expression
Create a modality-neutral script.

Avoid content that only one embodiment can deliver. Fix prompts, model version, temperature, retrieval context and fallback behavior.

Match presentation.

Control voice, dialogue length, room, screen text and timing. Document what cannot be matched—face, body, gaze, mobility.

Define embodiment-specific behavior.

Use minimal, functionally equivalent acknowledgment: R1/NAO nod, Furhat gaze/expression, text typing indicator only if theoretically justified.

Validate content equivalence.

Replay generated sessions offline; check semantic content and advice quality before participants see them.

Run stratified randomization.

Balance prior robot experience and preserve identical instructions. Log every generated turn and fallback.

Interpret as an embodiment bundle.

Do not attribute every difference to “physicality” when bodies, faces and gaze differ. Use planned contrasts aligned with theory.

Program 07 · IS bridge

AI opacity, errors and technostress

Use an AI-assisted decision task to test how explanation and error rate shape stress, trust and reliance—first behaviorally, then physiologically.

Design
2 opacity × 2 staged error rate
Delivery
R1, Furhat or laptop agent
Primary DVs
Technostress, performance, reliance
Secondary
EDA/HR, EEG workload, discontinuance
Use

Agent + task UI + sensors

  • Precomputed recommendation schedule
  • Explanation/no-explanation scripts
  • Ring for continuous arousal
  • EEG only if justified
Pick a consequential but safe task.

Use timed categorization, ranking or quality-control judgments with objective answers and no real-world harm.

Precompute AI outputs.

Set identical recommendations by item and assign error conditions in advance. Do not let live model variability alter error rate.

Create explanations.

Match length and specificity; explanation condition reveals the same evidence consistently, while black-box condition gives recommendation only.

Measure process, not just attitude.

Log reliance, overrides, decision time and accuracy alongside technostress scales and physiology.

Separate embodiment from opacity.

Hold agent body constant in the first study. Add embodiment only in a follow-up factorial design if power supports it.

Connect experiment and survey.

A later field survey can test generalizability, but do not mix causal experimental claims with cross-sectional associations.

Program 08 · infrastructure paper

Sensor synchronization and ring validation

Turn the lab’s measurement bottleneck into a methods contribution: characterize end-to-end timing, then validate ring outputs against borrowed reference sensors.

Study A
OpenBCI + ring + robot event latency/jitter
Study B
Ring HR/HRV/EDA agreement
Reference
Borrowed ECG and lab-grade EDA
Analysis
Offset distribution, Bland–Altman, ICC
Use

Owned stack + borrowed reference

  • Ring: PPG/EDA/ECG/temp/accel
  • OpenBCI + event source
  • R1/Furhat markers
  • Reference unit not yet owned
Resolve raw export first.

Verify whether the Senstream/iOS workflow exposes raw local timestamps without cloud delay. This determines whether event-level sync is viable.

Build a repeatable marker generator.

Emit a known sequence to robot/task logs and all acquisition streams. Run repeated blocks under idle and network load.

Estimate timing performance.

Report median offset, spread, drift, missing markers and recovery after reconnect—not only the best run.

Borrow reference sensors.

For validation, obtain ECG and palmar EDA reference equipment. Do not call PPG an ECG gold standard.

Run rest, stress and robot blocks.

Record concurrent devices during quiet rest, bounded stress induction and robot interaction. Mark movement to evaluate artifact sensitivity.

Report agreement.

Use Bland–Altman and ICC for HR/RMSSD/SCL/SCR outcomes, stratify by motion and disclose dropped or unusable time.

05 · Session operations

Run every participant the same way.

This is the master run-of-show. Program-specific steps slot into the “task blocks” stage.

StageOperator actionData actionAbort / repeat rule
1 · Room resetClear zone; place chair, robot and markers; check battery and network.Create session ID and empty manifest; no participant name in robot logs.Do not begin if layout or stop path differs.
2 · ConsentExplain robot motion, sensors, recording and right to stop.Store consent separately from study data.Stop if consent is incomplete or participant withdraws.
3 · Sensor fitFit ring; prepare EEG if required; check comfort and signal.Record device IDs, placement, quality and start time.Refit once; if quality remains poor, follow preregistered missing-data rule.
4 · BaselineRead standard posture/breathing instructions; no robot motion.Mark baseline start/end; note interruptions.Restart once after major interruption.
5 · PracticeUse neutral practice items without experimental manipulation.Confirm response logging and participant understanding.Retrain once; exclude only by preregistered comprehension rule.
6 · Task blocksRun assigned condition from frozen release; avoid unscripted coaching.Monitor marker stream, sensor quality and robot faults.Abort on safety event; repeat only under predeclared technical-failure rule.
7 · OutcomesAdminister behavioral choice before reflective questionnaires where designed.Time-stamp scale start/end and interview.Never reconstruct missing responses from notes.
8 · DebriefExplain staged errors or deception, answer questions, offer withdrawal route.Record withdrawal/deletion request separately.Follow ethics-approved adverse-response plan.
9 · TeardownReturn neutral; stop motion; power down; clean sensors.Verify file counts, hashes and backups; complete deviation log.Session is incomplete until manifest passes.
06 · Data system

Make every claim traceable.

A single session ID must connect condition, robot behavior, task events, physiology and outcomes without exposing identity.

/config/

Robot interface, joint map, limits, sensor configuration, clock map.

/stimuli/

Speech, prompts, gesture trajectories, policy checkpoint and hashes.

/protocols/

Run-of-show, safety envelope, abort plan, operator certification.

/sessions/S0001/

Manifest, task events, robot logs, raw sensor files and deviations.

/processed/

Versioned derivatives; scripts regenerate them from raw data.

/release/

De-identified tables, codebook, analysis scripts and dataset card.

Preprocessing decisions

Freeze channel mapping, filters, artifact rejection, HRV window requirements, EDA response window, baseline correction, missingness rules and exclusion order. Preserve raw data read-only.

Analysis order

Manipulation check → primary behavioral model → preregistered self-report model → physiology → robustness → exploratory analyses clearly labeled. Report effect sizes and uncertainty, not only p-values.

Robot performance

Always report completion, timeout, safety stops, path or timing variance, return-to-neutral error and excluded trials. A perception paper still needs a credible stimulus audit.

Release boundary

Decide before collection whether frames include faces, voices, screens or bystanders. Public release requires separate consent, ethics approval and a dataset card; “used in study” is not permission to publish.

07 · Execution plan

Your first eight weeks.

A realistic sequence that produces both infrastructure and a pilotable research manipulation.

WEEK 1

Freeze R1 configuration, owners, network and safety envelope. Complete read-only 60-second state/camera log.

WEEK 2

Script and validate neutral + small wave. Ten safe repetitions and documented stop behavior.

WEEK 3

Add nod, bow, point and hesitation. Film reference runs; define stimulus versions.

WEEK 4

Connect Ollama through allow-listed behavior IDs. Complete disconnected tests and shadow-mode review.

WEEK 5

Resolve XR inventory. Record first ten episodes; inspect schema, timing, camera and action plots.

WEEK 6

Complete fifty clean wave episodes; build R1–LeRobot adapter and offline ACT baseline.

WEEK 7

Bench-test EEG/ring event sync. Pilot mental-state framing or trust-repair manipulation with lab members.

WEEK 8

Revise, freeze, preregister and prepare ethics materials. Do not recruit until release manifest and operator rehearsal pass.

GO

The first publishable package

Release a validated R1 social-gesture library + dataset/adapter methods note, then use the same frozen behaviors in a theory paper on mental-state attribution or embodied trust repair.

08 · Evidence base

Published precedents and equipment references.

Web-indexed sources were assembled September 23, 2026. Reconfirm prices and product details before purchasing.

Anthropomorphism — ICSR 2017Intentionality and appearance manipulation ↗ Trust repair — ACM THRI 2025Voice, repair strategy and behavioral reliance ↗ Justification and moral trust — 2025Large-sample repair evidence ↗ AI delegation and performanceHuman–AI allocation and self-efficacy ↗ Physiology and robot safety — 2026HRV, EDA and perceived safety ↗ TEMI telepresence — 2024Proxemics across telepresence robots ↗ LLM-driven Furhat — ICSR 2025Embodied interview training ↗ AI oversight and technostress — 2026Trust, autonomy and technostress ↗ BIOPAC Research Ring specificationSensor channels, rates and Senstream path ↗ OpenBCI equipment referenceCyton + Daisy and compatible sensor options ↗ Official Unitree R1 specificationJoint configuration, compute, camera, audio, battery and safety warnings ↗ Official Unitree SDK2C++ SDK, build environment and supported R1 platform listing ↗ Official SDK2 Python interfaceDDS, high/low state, motor-control pattern, camera and remote examples ↗ Official XR teleoperationR1_A5/R1_A7 support, image service, recording and stop controls ↗ Official Unitree LeRobot bridgeJSON conversion, ACT/Diffusion training and G1 deployment boundary ↗ Official Unitree ROS 2 packageDDS/ROS 2 setup and public support scope; R1 graph remains to verify ↗ Official R1 URDF descriptionSimulation model and meshes for R1 ↗ LeRobot robot workflowDataset replay, robot action loop and ACT training pattern ↗ Wearable physiology validation — 2023EDA/cardiac comparison against reference sensors ↗

Open questions to resolve on the bench: exact InDro ROS 2 graph and R1 motion services; head-joint commandability on the delivered 24-DoF unit; audio device/stream route; compatible XR headset availability; local raw-ring export; reference equipment access for ring validation.

Do this first

One safe wave. One clean log. One frozen manipulation.

That small milestone proves the control path, produces the first dataset schema and gives the lab a usable experimental stimulus without buying hands or onboard compute.

  1. Name operator and spotter.
  2. Complete read-only bring-up.
  3. Validate neutral and one wave.
  4. Connect behavior ID to voice.
  5. Pilot one theory-driven condition.