LICOA: Learning Instruction-Conditioned Optical Actions for Mobile Spatial Augmented Reality
Organizations: Southwest University · Peking University · Westlake University
Abstract
Spatial augmented reality (SAR) augments physical environments with projected content, but most systems assume that the projector pose, target region, or motion path has been fixed or specified. We instead make projected light an embodied action: given a language instruction and current visual observations, a system must decide how to move and where and at what scale to place the projection. We introduce LICOA to realize this capability. Its differential-drive chassis provides room-scale approach and repositioning, while a steerable mirror with two degrees of freedom (2DoF) and projection scale provide rapid local control of the beam. A shared interface maps synchronized external and onboard RGB cameras with robot control state to physical optical actions across pretrained action models. Because instruction-conditioned optical action lacks dedicated training data and a common evaluation protocol, we construct a matched simulation embodiment and a corpus with 150 tasks and 7,500 rendered episodes, then evaluate models trained only on this corpus in previously unseen real-world environments. Across 480 complete closed-loop real-world execution trials (rollouts) on 12 tasks, the best adapted action model achieves a 57.50% success rate and 40.64% success weighted by path length, compared with 8.33% and 5.15% for the same architecture trained from scratch. A further 150 real-world ablation rollouts support the need for both camera views and coordinated control of the chassis and mirror. These results establish a physical platform, shared perception and optical action interface, corpus, and real-world evaluation protocol for treating projected light as an embodied action.
Figures & tables
| System / architecture | Projector origin mobility | Action components | Spatial instruction | Learned closed-loop control | Matched simulation |
|---|---|---|---|---|---|
| Fixed ProCams [ 30 , 17 , 45 , 12 , 13 ] | Fixed | No | Content prompt in some | No | Optics simulation in some |
| Fixed multi-projector systems [ 11 , 56 , 36 ] | Fixed | No | No | No | No |
| Fixed beam-steered [ 53 , 42 , 64 ] | Fixed | Optical steering only | Restricted speech / gesture in some | Rules; no learned action model | No |
| Arm-mounted [ 47 , 7 , 49 , 27 ] | Arm workspace | Arm only | Speech / gesture / tracking / script | Tracking / script; no learned action model | No |
| Mobile + fixed optics [ 19 , 24 , 61 ] | Room-scale | Chassis; fixed optical axis | Detected surface | Geometry; no learned action model | No |
| Mobile + steerable optics [ 63 , 69 , 57 , 44 ] | Room-scale | Chassis + PT / gimbal | Marker / path / script / search | Servo / planning / script; no learned action model | No |
| Subsystem | Hardware | Role |
|---|---|---|
| Differential-drive chassis | Kobuki mobile chassis | Room-scale approach and repositioning |
| Onboard sensing | Microsoft Kinect v1 | Robot-centric RGB observation |
| External sensing | Logitech C270 | Global RGB observation |
| Embedded computing | NVIDIA Jetson Nano | Robot-side sensing and execution bridge |
| Projection | Custom laser projector | Optical output and footprint scaling |
| Optical steering | Custom 2DoF steerable mirror | Rapid local beam redirection |
| Scenes | External viewpoints/scene | Tasks/external viewpoint | Total tasks |
| Source trajectories/task | Appearances/trajectory | Total episodes |
| Method | Success | SR ( ) | SPL ( ) | MT ( ) |
|---|---|---|---|---|
| -scratch | ||||
| [ 3 ] | 57.50 | 40.64 | 43.44 | |
| -FAST [ 52 ] | ||||
| Fast-WAM [ 68 ] |
| Config. | Chassis | Mirror | Success | SR | SPL | MT | ||
|---|---|---|---|---|---|---|---|---|
| Full | ✓ | ✓ | ✓ | ✓ | ||||
| W/o onb. cam. | ✓ | ✓ | ✓ | |||||
| W/o ext. cam. | ✓ | ✓ | ✓ | |||||
| Mirror only | ✓ | ✓ | ✓ | |||||
| Chassis only | ✓ | ✓ | ✓ |
| Source | Output | Load | Purpose |
|---|---|---|---|
| Battery pack ( ) | Chassis supply | Kobuki mobile chassis | Differential-drive locomotion |
| Battery pack ( ) | Microsoft Kinect v1 | Onboard RGB camera power; image data use USB | |
| Battery pack ( ) | NVIDIA Jetson Nano | Embedded computing | |
| Battery pack ( ) | Two SimpleFOC Mini drivers | Actuation of the 2DoF steerable mirror | |
| Battery pack ( ) | Custom laser projector | Projection | |
| NVIDIA Jetson Nano | USB bus power | STM32F103C8T6 | Controller logic power, separate from USB-to-UART data |
| Setting | Configuration |
|---|---|
| Simulator | NVIDIA Isaac Sim 6.0.1; PhysX fixed-step simulation |
| Scene assets | First InteriorAgent USD indoor scenes; each a complete, large indoor environment; stage unit ; frozen environment rigid bodies with static triangle-mesh collision proxies |
| Differential-drive chassis | Differential drive; wheel radius ; wheelbase ; and |
| 2DoF steerable mirror and projection scale | Pan range ; tilt range ; projection scale |
| Virtual projector | Textured square RectLight; uniform white source image; intensity ; throw-ratio parameter |
| External and onboard RGB images | Onboard RGB camera and five fixed external camera viewpoints per scene; both streams rendered at |
| Configuration | Initialization | Trainable scope | Native objective | AdamW | Clip | Schedule |
|---|---|---|---|---|---|---|
| Pretrained | Full action model | Flow matching | -step warmup, then constant | |||
| -FAST | Pretrained | Full action model | FAST token causal cross-entropy (CE) | -step warmup, cosine to | ||
| Fast-WAM | Pretrained | Video and action experts | Zero-warmup cosine | |||
| -scratch | Random | Full action model | Flow matching | -step warmup, then constant |
| Setting | Value |
|---|---|
| Compute | Single NVIDIA H200 GPU per run ( ); batch size |
| Precision | BF16 mixed precision; gradient checkpointing; no compilation |
| Optimizer | AdamW, , , weight decay |
| Learning rate | ; -step linear warmup, then constant |
| Update budget | steps ( sample draws); gradient norm clipped to |
| Logging | Log every steps; validate and save every steps |
| Configuration | Initialization | Trainable params. | Ratio ( ) | Valid loss | Peak memory ( ) | Runtime ( ) |
|---|---|---|---|---|---|---|
| Projection heads | Pretrained | |||||
| Action expert | Pretrained | |||||
| Full | Pretrained |
| Scale axis | Train tasks | Available eps./task | Train eps./task | Train episodes | Train frames | Eff. epochs | Valid loss |
|---|---|---|---|---|---|---|---|
| Trajectory density | |||||||
| Trajectory density | |||||||
| Trajectory density | |||||||
| Trajectory density | |||||||
| Trajectory density | |||||||
| Task diversity |