Input Connection - Robot {robot.id} Configure how this robot receives commands. Choose between direct hardware control or remote collaboration.
{#if error} Connection Error {error} {/if} {#if showUSBCalibration}
Hardware Calibration Required
Before connecting to the physical robot, calibration is required to map the servo positions to software values. This ensures accurate control.
{:else}
Current Input Source
{#if robot.hasConsumer} {robot.consumer?.name || 'Connected'} {:else} No Input Connected {/if}
{#if robot.hasConsumer}
Status: {robot.consumer?.status.isConnected ? 'Connected' : 'Disconnected'}
{/if}
Local Hardware (USB) Read physical robot movements in real-time {#if robot.hasConsumer && robot.consumer?.name === 'USB Consumer'}

Hardware Connected

Reading physical servo positions

{:else} {#if robot.hasConsumer}

Disconnect current input to connect USB hardware

{/if} {/if}
Remote Collaboration (Rooms) Receive commands from AI systems, remote users, or other software
{#if robot.hasConsumer && robot.consumer?.name?.includes('Remote Consumer')}

Room Connected

Receiving remote commands

{:else}

Create New Room

Create a room where others can send commands to this robot

Join Existing Room: {robotManager.rooms.length} room{robotManager.rooms.length !== 1 ? 's' : ''} available
{#if robotManager.rooms.length === 0}
{robotManager.roomsLoading ? 'Loading rooms...' : 'No rooms available. Create one to get started.'}
{:else} {#each robotManager.rooms as room}

{room.id}

{room.has_producer ? '📤 Has Output' : '📥 No Output'} 👥 {room.participants?.total || 0} users
{/each} {/if}
{#if robot.hasConsumer}

Disconnect current input to join a room

{/if} {/if}
Input Sources USB: Read physical movements • Remote: Receive network commands • Only one active at a time {/if}