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.

Launches a VR teleoperation session. When started, the hostname (.local) and local IP address are printed — enter either of these in the VR app at axol.almond.bot to connect. Runs on the real robot by default; pass --sim for the browser visualizer. The full robot config is exposed via draccus, so every gain, stiffness, and gripper limit is reachable from the CLI or a config file — see Command configuration.
For a guided, step-by-step walkthrough including the VR controller layout, see the Teleoperation quickstart.
Before opening the VR app, accept the self-signed HTTPS certificate in the VR browser by navigating to https://<hostname>.local:8000 or https://<local-ip>:8000 and proceeding past the security warning.
Network tip: If VR tracking feels jittery or packets arrive in bursts, configure the following on your router/access point:
  • DTIM interval1
  • Beacon interval100 ms
  • WMM APSD (U-APSD) → disabled
These settings prevent the AP from buffering packets between beacon intervals, which causes intermittent delivery delays that are especially noticeable for latency-sensitive VR traffic.
FlagDescription
--simUse the software visualizer instead of the real robot. Bare --sim works (or --sim true). Omit to run on real hardware (the default).
--left_channel <ch|null>CAN channel for the left arm; null disables it. Default: CAN_LEFT.
--right_channel <ch|null>CAN channel for the right arm; null disables it. Default: CAN_RIGHT.
--axol.left_stiffness SCompliance↔stiffness blend for the left arm in [0, 1]. Scalar (0.8) or a 7-element list ([0.8,0.8,0.5,0.5,0.2,0.2,0.0], one per arm joint in Joint enum order). 0 = fully compliant; 1 = pre-tuning industrial gains; 0.5 (default) is the geometric mean. See AxolConfig.left_stiffness.
--axol.right_stiffness SSame, for the right arm.
--axol.left.gripper.torque_limit FLOATMax torque (Nm) for the left gripper in POSITION_FORCE mode (default: 0.5). Use right for the right gripper.
--axol.<side>.<joint>.<gain> VALUEOverride any per-joint gain, e.g. --axol.left.elbow.kp 60. <side> is left/right; <joint> is shoulder_1…wrist_3; <gain> is kp/kd/etc.
--log_level {DEBUG,INFO,WARNING,ERROR}Default: INFO
--config_path PATHLoad a whole-config JSON/YAML file; CLI overrides layer on top. See Command configuration.
axol teleop                                       # real robot
axol teleop --sim                                 # browser visualizer
axol teleop --axol.left_stiffness 0.8
axol teleop --axol.left.elbow.kp 60 --axol.right.gripper.torque_limit 0.7
axol teleop --left_channel null                   # disable the left arm
axol teleop --config_path my_teleop.json          # whole-config file
This command takes its config via draccus, not fixed argparse flags. Field names use underscores, nested fields are dot-separated, None is null, and lists use [a,b,c] — see Command configuration for the full model.