axol serve running, open axol.almond.bot/diagnostics, or https://<axol-host>:8001/diagnostics on your network. It also works on a phone or tablet.
The Hardware section at the top lists each device on CAN (Axol or Mantis, and Jelly’s wheels and lift), and lets you connect or disconnect each one.
Motor status
Each motor has a card with its status, temperature, bus voltage and position, updated once a second. Axol shows 8 motors per arm. Mantis shows the gripper (ID 8) on each side.- A card reads OK whether the motor is enabled or disabled.
- A card turns red when the motor reports an error, such as over-temperature or lost communication, or doesn’t answer.
- Click a card to see the motor’s details: model, firmware, control mode, gains and live readings.
Change a motor’s parameters
For a MyActuator motor, the card’s dialog has a Parameters tab next to Details. It shows the motor’s configuration in groups: Protect parameters, Plan parameters, Motor parameters and Motor information.- Type a new value, or pick one from the list.
- Press Set or Enter. The value is saved to the motor’s flash, and the table reloads.
Motor tools
The buttons above the motor cards run these commands:
Mantis grippers calibrate themselves, so Mantis has no zeroing. To restore a saved configuration file, run
motor.restore-config in a terminal.
Choose CAN adapters
CAN enable opens the adapter picker.- Choose Axol or Mantis.
- Choose Both arms, Left only or Right only.
- Pick each side’s CAN interface from the detected list, or type its name. The defaults are
can_alm_axol_landcan_alm_axol_rfor Axol, andcan_mantis_landcan_mantis_rfor Mantis. A generic adapter such ascan0also works. - Press Save & connect.
axol can.setup in a terminal.
Every test and calibration run on the page uses this choice, and skips a side you didn’t select. The Axol choice is saved with the robot’s settings. The Mantis choice is used only by the dashboard, so it never changes the robot’s saved channels.
In Mantis mode, the dashboard shows only the two grippers and runs tests on the grippers only. The lift commands are hidden.
On the command line, add --target mantis to a command to use Mantis. To pick arms by hand, use --left-channel / --right-channel and --no-left / --no-right on two-arm commands, or --channel on single-motor tools. See can.enable.
Control loop and CAN timing
The Control loop & CAN timing panel shows how steadily commands reach each arm during teleop.- Keep the diagnostics page open.
- Start
axol teleopfrom the control panel or a terminal.
The loop runs at 240 Hz (a 4.17 ms period) on the impedance controller, and 400 Hz (2.5 ms) on the position controller. A card shows 240 Hz clean (or 400 Hz clean) when all of these hold:
- Command and feedback rates are within 2% of the target.
- Command and feedback jitter are 0.5 ms or less.
- Motor round trip is 3 ms or less.
- At least 0.25 ms of headroom is left in each cycle.
- No missed cycles and no lost feedback.
Live telemetry
The live chart streams the selected arm while the robot is connected. Choose Position, Velocity, Torque or Temp. Position, velocity and torque update 10 times a second, and temperature once a second.- Pick a time window from 30 s to 10 min. The chart keeps the last 10 minutes, so it fills in when you open the page.
- Choose the arm and turn individual joints on or off.
- Scroll to zoom and drag to pan. Press Go live to follow the newest data again.
- Use the expand button to view the chart full screen. Press Esc to exit.
Tests
Each test is a card. Click it, set the options in the dialog, and press Run.
The card shows the run’s state, the elapsed time and the latest output line. You get a notification when it finishes, and the full log is kept in Run history. The ROM and lift tests take over the CAN bus while they run. They drive the arms with the same controller as teleop.
To check Mantis triggers against their grippers, run Teleoperation with Mantis selected. It needs only CAN.
Lift cycle
Enter how many cycles to run.- The selected arms move their first shoulder joint to 90°, clear of the lift.
- The lift runs the full down and up cycles while the test checks that the arms hold their pose.
- When the lift is up and stopped, the first shoulder joint returns to 0°. The other joints hold where they started.
- The arm motors turn off.
can.setup: can_alm_axol_c, or the wheel bus can_alm_axol_b if there is no separate lift adapter. You can enter another interface in the dialog.
When a test can start
A test that moves motors won’t start while one of its motors has a fault. Motors it doesn’t use don’t block it, so a one-arm run or a bench arm with some motors missing can still run. In the ROM test, a deselected motor that doesn’t answer is skipped. A deselected motor that answers with an error still blocks the run, because the run holds it in place.Steps that need you
Some tests pause for you, for example to put an item in the gripper. The card then shows the instruction and a Continue button, such as “Position the item in the RIGHT gripper, then close it.” Nothing moves until you press Continue.Helpers
The lift helpers appear only on Axol on Jelly. To restart or shut down the robot’s computer, use Restart or Shut down on the control panel’s Axol Host tile.
Tuning
The tuning workbench runs the tuning commands with every option on the page. Pick a tab, set the values, and press Run. Sine and step runs chart live while they run, and the full charts and scores appear when the run finishes. Gain fields (kp, kd, kd_host, kd_host_hz, kd_host_q) start at the joint’s current value: the defaults plus this robot’s calibration. That is what runs if you leave a field empty. Angles are in degrees. Gains are in Nm/rad and Nm·s/rad.Sine and Step
- kd_host_hz sets the center of the damping band. Aim it at the ring frequency that the step score reports.
- kd_host_q sets the band’s width. Raise it to 2 or 3 when the center sits on a measured ring.
- Holder wobble shows how far the other joints moved during the run. Above about 0.5°, part of the ring came from a neighboring joint, not the one under test.
Friction, gravity and factory
Gravity fixes the sag a joint shows when it holds still under load, which gain tuning can’t fix. Its chart shows measured torque against joint angle, with the model before and after the fit. On the Factory tab, leave Velocities empty to use the default slow speeds (1, 2, 3, 5, 8, 15 and 30 °/s). On the Friction tab, an empty field sweeps 7.2 to 72 °/s. A factory run takes about 1.5 hours.Recorded motion
- Gains: the table shows each joint’s current gains. Edit a cell to change it for this run only, on both arms. Clear a cell to go back to the configured value, or press Reset overrides to clear them all.
- Controller: impedance runs the normal teleop controller at 240 Hz. position runs every joint on its motor’s own position loop at 400 Hz.
- Controller per joint: with impedance, click a cell to put that joint on its motor’s position loop for this run. A joint already set to the motor loop in the configuration can’t be switched back here.
- Run as IK: solves the motion through the IK solver, as teleop does, instead of replaying joint angles. The score then includes both IK and tracking error.
- Inject noise and Filter stack: add network noise, IK noise or both, and turn teleop’s smoothing filters on or off. Run once with filters off and once with them on to see what the filters remove and how much lag they add.
Build motion and IK
Build motion takes a session recorded withaxol teleop --teleop.record or axol gravity-comp --record. It saves a before-and-after run, so you can check the smoothed motion before you replay it.
IK charts the target pose against the solved pose with the error in mm, the solve time for each step, and a per-joint jitter score. Solve time spikes show up as lurches in teleop.
Read the results
- Error by joint shows one bar per joint for both arms, colored green, amber or red. Click a joint to jump to its chart.
- Each joint’s chart shows commanded against actual position, with the error below.
- The scores table has one row per joint: tracking error (RMS, in degrees), lag, 3 to 15 Hz jitter, ringing, torque chatter and buzz.
- Buzz catches a joint you can hear. A healthy joint sits near 0.005°. An audible buzz is 2 to 5 times that.
Compare runs
Tick two runs of the same kind in Past runs. The charts overlay both runs (A in yellow, B in blue), and a table marks the better value of each score in green. Press Exit compare to go back. Runs are saved in~/.almond/diagnostics/tuning/ on the robot’s computer, shared with the command line’s --save-run. Select or delete them in Past runs.
Run history
Every test run is kept with its command, options, duration, result, log and the telemetry recorded during the run. The list shows the newest first, 10 runs per page. Open a run to chart it with the same controls as the live chart. Clear deletes the history. The history is stored in~/.almond/diagnostics/runs on the robot’s computer.