Skip to main content
Teach poses by hand, then replay them. The arms hold in gravity compensation so you can guide them. Each time you record, the pose of both arms is added to a waypoint file. On playback each gripper tip moves in a straight line from waypoint to waypoint, and its orientation turns smoothly along the way. The IK solver turns each point on the line into joint angles. At each waypoint the arms pause to open or close the grippers.
  • The straight line is held at the point where the fingers close, 145 mm past the gripper mount. The tip doesn’t swing in an arc when the wrist turns.
  • Each move starts and stops smoothly, with no jolt.
  • The whole path is planned before the arms move. If a waypoint can’t be reached in a straight line, you find out while the robot is still.
  • An arm you didn’t move holds still. An arm resting in gravity compensation drifts a millimetre or two between recordings. Below --min_travel and --min_rotation, playback keeps that arm in place instead of chasing the drift.
Arm stiffness is the same setting every operation uses: the control panel’s setting, or --axol.left_stiffness and --axol.right_stiffness. A stiffer arm follows the path more closely. A softer one sags a little, but shakes less when bumped and gives way if the path meets an obstacle. Stiffness doesn’t affect hand-guiding. This command is configured through draccus (see Command configuration). Arm gains and stiffness are on the nested axol config, and IK weights are on kinematics. They are the same fields as teleop’s Robot and Kinematics parameters, with the same --axol. and --kinematics. prefixes. The command’s own flags are listed below.

Driving a session

On the terminal, single keys on stdin: The same actions are buttons in the control panel, so you can teach and replay a path without a terminal.

Grasping

A gripper is either open or closed. Press [ for the left gripper and ] for the right, so one arm can carry something while you guide the other. Both start open. Each waypoint stores the state both grippers are in when you record it:
On playback the arms hold still while a gripper moves, so the grasp closes on the object at its waypoint rather than somewhere along the way. Waypoints that don’t change a gripper don’t pause for it. Grip force is the gripper’s torque_limit, the same setting every operation uses, and you can set it in the control panel. A closed waypoint always commands fully closed, not the point where the fingers stopped on the object, so the gripper keeps squeezing. Set the torque to suit the object.
Before anything moves, planning logs what each waypoint asks the grippers to do. It warns you when a path never moves the grippers, which can look like a broken gripper.

Flags

Choosing a speed

At the default speed the gripper peaks at about 0.47 m/s mid-move. Lines stay straight at any speed. Acceleration grows with the square of the speed: about 2 m/s² at the default, 8 at --speed 0.5 and 16 at --speed 0.7. Above that, each move takes a fraction of a second and the pause at each waypoint takes most of the cycle. Lowering --speed alone doesn’t slow a move that is mostly turning, because --ang_speed may set its pace. --speed_scale (the Speed scale slider in the control panel) slows both, and the moves to the first waypoint and back to rest. Use it to try a new path slowly.
A fast move carries real momentum, and a stiff arm won’t give way if the path meets something. Raise the speed step by step, with the workspace clear.

The waypoint file

Waypoints are stored as the joint angles the arms reported, so a path is exact. You can edit the file or check it into a repository:
Each arm entry is 7 joint angles in radians (SHOULDER_1 to WRIST_3, 0 = rest), then the gripper opening from 0 to 1. The joint angles are what the arm reported. The gripper value is the opening to command, such as 0.0 for a grasp, not where the fingers stopped. The gripper poses for planning are computed from the joint angles.
A 7-joint arm can reach the same gripper pose in several ways. Playback keeps the posture you taught, so the elbow follows the path you guided it along instead of swinging somewhere unexpected.
Playback starts with a collision-aware move to the first waypoint. When the path finishes or is stopped, the arms park at the rest pose. If you quit while teaching, the arms don’t park, since your hands are on them.