Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.almond.bot/llms.txt

Use this file to discover all available pages before exploring further.

From a fresh clone to a live teleoperation session. Pick your path — drive the real Axol robot, or the software simulator with no hardware required. Both are driven from the VR headset; the simulator just swaps the motors for a browser visualizer.
1

Install

Install the package using uv, then activate the virtual environment so the axol CLI is on your path:
uv sync
source .venv/bin/activate
You will need to activate in every new shell session. Alternatively, prefix every command with uv run (e.g. uv run axol can.setup) to skip activation.
2

Set up CAN (one-time)

Plug in the Axol Hub, then run the one-time CAN setup. This writes udev rules, assigns fixed interface names, and registers a startup script so the interfaces come up automatically on every reboot.
axol can.setup
sudo is invoked automatically. You will not need to run this again unless you reinstall the OS or swap the Axol Hub.
After any subsequent replug mid-session (without a reboot), bring the interfaces back up with:
axol can.enable
3

Verify motors

With the robot powered on and CAN up, read a status snapshot from one motor to confirm communication is working:
axol motor.info --l --id 0x01   # left shoulder_1
axol motor.info --r --id 0x01   # right shoulder_1
You should see position, velocity, torque, temperature, and voltage. Any DISABLED or error status means power or CAN isn’t reaching that motor.
4

Accept the TLS certificate

The VR app connects over a self-signed HTTPS/WSS connection. Before opening the app, you must accept the certificate in the VR headset’s browser — otherwise the WebSocket handshake will be silently rejected.
  1. Start axol teleop briefly (see the next step) — it will print your hostname and IP.
  2. In the VR headset browser, navigate to https://<hostname>.local:8000 or https://<local-ip>:8000.
  3. Proceed past the security warning.
  4. You only need to do this once per machine (the cert is cached in ~/.almond/vr/certs/).
5

Teleop

axol teleop
The terminal will print the hostname and IP address. Open the VR app at axol.almond.bot on the headset and enter either address to connect.
See the teleop CLI reference for the full flag list (stiffness, gripper limits, per-joint gains, config files).

Controller layout

Quest controller diagram
#ButtonAction
1Left gripPress both 1 + 2 to enable arm movement; press either alone to disable
2Right gripSame as above
3Left triggerActuate left gripper
4Right triggerActuate right gripper
5XReset — returns both arms to the rest pose
7YExit AR — closes the VR session
Grip is a toggle, not a hold. Press both grips together to start moving the arms; press either grip on its own to freeze them.

Network tip

If VR tracking feels jittery or arrives in bursts, configure the following on your router or access point:
SettingValue
DTIM interval1
Beacon interval100 ms
WMM APSD (U-APSD)disabled
These prevent the AP from batching packets between beacon intervals, which causes intermittent latency spikes that are especially noticeable in VR.

Next steps

Data Collection

Record teleoperation episodes to a LeRobot dataset.

Policy Inference

Run a trained policy autonomously.