> Historical task-v4 baseline. The current visual task uses 320×200 and an ACT-style actor; see [visual update](visual-report.md). State-teacher measurements below retain their original settings.

# Reachable TCP goals and rendering-free state teacher

The canonical simulator now registers two tasks. **No RL or BC optimization was
run in this update.** Network inference checks use untrained models.

## Reachable randomized goals

Both tasks sample their lift goal around the nominal TCP, independently of bottle
position and initial arm-angle randomization. The center in robot-base coordinates
is `[0.656032, -0.138629, 0.265982]` m; its nominal world position is
`[0.147758, -0.171370, 0.988588]` m. The region follows the randomized robot base.

Full-scale bounds are ±5 cm X/Y and ±3 cm Z in base axes. Sixteen joint proposals
are drawn within nominal ±5° per arm joint and clipped to joint limits. CUDA FK
produces candidate positions, and the first within the Cartesian bounds wins.
The nominal FK point is the bounded fallback. Every output has a joint-space FK
witness; the goal sampler does not reject or move unreachable bottle starts.
The shared curriculum scales this region with the episode's DR scale.

This is an accepted FK-proposal distribution, not uniform Cartesian sampling.
Kinematic reachability does not guarantee a collision-free approach path in every
randomized scene. Goal height is no longer computed from bottle position or the
high-lift metric threshold. Goals remain fixed until reset, with target markers
in MJViser.

## Registered tasks

| | Visual task | State teacher |
|---|---|---|
| ID | `Mjlab-GS-Bottle-UR5` | `Mjlab-GS-Bottle-UR5-State` |
| Actor inputs | 16 proprioception + 3 commanded goal + RGB | 37 privileged state values |
| Critic inputs | 62 privileged state values | 37 clean state values |
| Actor network | CNN/spatial-softmax + 128–128 MLP | 256–128–64 MLP |
| Critic network | 128–128 MLP | 256–128–64 MLP |
| Rendering during headless steps | Gaussian/native wrist camera | None |
| Pose DR | Broad visual defaults | Smaller teacher defaults |
| Camera/appearance DR | Enabled | No model expansion or sampling |

The teacher uses native MJLab lift-cube-style observations: 12 relative joint
positions, 12 joint velocities, TCP-to-bottle (3), bottle-to-goal (3), and previous
action (7). Joint linkage states are included. Actor training noise is ±0.01 rad
for joints, ±0.05 rad/s for velocities and ±2 mm for relative positions; critic and
play observations are clean. The task uses UR5, not a Franka robot.

Teacher table DR is ±15 cm/±15°; robot/pedestal DR is ±10 cm/±15°; initial joint
ranges are ±[15,10,10,15,15,30]°. Bottle full-table proposals and contact/physics
randomization remain. The shared 5→15→35→65→100% curriculum applies. Defaults are
recorded in `configs/teacher.json`; larger envelopes can be configured later.

The native five-term lift-cube reward recipe, its speed-penalty curriculum,
7 action units and strict success metrics are shared. Task spec is
`bottle-lift-v4`; observation/action contract is `mjlab-gs-cartesian-v3`. Old actors
without goal conditioning and cross-mode checkpoints are rejected. Visual BC now
records and consumes `goal` and `next_goal` explicitly.

## Validation

- Nine unit tests passed, including 256 CPU-reference goal samples over scales
  0–1, joint limits, region bounds and nominal fallback behavior.
- Both GPU task variants passed, with 32 goal samples each. Maximum discrepancy
  between GPU goal FK and independent MuJoCo FK under randomized bases:
  **1.88e-07 m**. No nominal fallbacks in these 64 full-scale samples.
- Goals remain unchanged when bottle coordinates are deliberately moved 10 m
  away and initial arm angles change, with the same random seed. Partial resets
  preserve other worlds. Stepping preserves episode goals; timeout resets
  refresh them and keep terminal success metrics.
- Teacher construction/stepping passed with camera initialization patched to
  fail. Its observations contain only actor/critic state, with no RGB, and no
  camera/light/material DR field expansion.
- State-task fixed-quota evaluation completed both requested 15-second episodes:
  zero successes and zero invalid episodes with hold-open actions, as expected
  without a trained policy.
- Both untrained PPO network types emit finite 7D actions. Visual BC forward and
  goal-aware recording pass. Neither test claims learned behavior.
- Visual and state MJViser clients pass play/pause/step/reset, native scene and
  goal controls. The visual viewer has wrist RGB; the state viewer has no feed.

## Measured task throughput

| Mode | Environments | Environment steps/s | Process GPU GiB |
|---|---:|---:|---:|
| visual | 64 | 594.0 | 1.70 |
| state | 64 | 884.0 | 0.53 |
| state | 256 | 3,226.7 | 0.71 |
| state | 1024 | 10,870.6 | 1.59 |

RTX A6000, 40 timed vector steps after five warmup steps. All use the teacher
physical preset at its initial 5% curriculum scale; the visual comparator renders
128×128 RGB. Hold-open actions, no network/optimizer cost, browser streaming or
disk recording. Includes 50×1 ms physics, Cartesian IK, native managers, rewards,
all contact/success metrics and observation conversion. Memory is sampled NVML
process memory. The scene distributions are matched in settings, though random
sampling streams and scene occupancy differ. These are short measured workloads,
not maximum-capacity or trained-policy throughput claims.

At 256 worlds and 24 rollout steps, RGB alone would require 1.125 GiB for float32
128×128 images. The teacher stores no pixel rollout tensor; its two 37-float
observation groups total about 1.73 MiB over that rollout, excluding actions,
values, gradients, model weights and simulator storage.

## Next experiment

First train and qualify the state teacher. Then freeze it and collect action
labels from privileged state on the same visual simulator states used by the
student; preserve teacher normalization and the shared action convention. Student
rollouts with teacher labels can support DAgger-style distillation. The narrower
teacher DR should be expanded or matched before labeling broader visual starts.
Teacher-label collection and distillation are future work, not implemented here.

[Task specification](task.md) · [Teacher/student workflow and commands](teacher.md).
