Set up your robot
Each step checks one thing about your robot against the arm dream's model was trained on. Nothing moves under power until the step Move under power, and only after you say so.
Pick your robot
The wizard calibrates your SO-101's arms on step 1, after it finds them. Nothing to do here.
I recorded data with LeRobot calibration files of my own
Tick the files you recorded your data with (lerobot-calibrate writes one per arm). An arm whose motors hold one of them keeps it and is not calibrated again, so your data and your arm mean the same poses.
dream's model of your arm
x: fingers closey: upz: out of the gripper
Match your arm's triad to the YAM's above: drag an arrow to move along it or a ring to turn about it, or click one to type. The numbers are its place (mm) and turn (degrees) in your arm's end link's frame.
Wrote your arm file. Put its path in your station file as custom.ik, in place of REPLACE_ARM:
Move the marker and press Set tool center point again to write it again. Press Ctrl-C in the terminal to end dreamcli tcp.
Your driver Required
The Python class that runs one arm, in a .py file on this computer.
Installed as a Python package? Type it
Your driver reads and writes one arm: joints in radians as your arm's model has them, the gripper from 0 closed to 1 open. The next steps check it against the model.
Driver template · Example driver (reBot) · A robot of your own (docs)
Save this as and replace every REPLACE_ value. The comments at its top say where each comes from.
Your arm from its URDF: run this in another terminal and open the address it prints. You mark your gripper's tool point on a 3D drawing, and it writes the arm file whose path goes in custom.ik.
dreamcli tcp1. Check it without moving anything: the model is called, nothing is written to the arms, and the log shows each arm's reading once a second.
2. Put each arm at rest and copy its reading into its home: every run starts by moving there.
3. Run it, with a hand on the emergency stop:
This is the control loop the wizard ends in, on the same file. Nothing on this path checks your driver, arms or cameras. Set it up yourself in the docs has each step.
Find your arms
We name each arm's adapter by its serial number, or by its USB port when it has none of its own (two adapters that report the same one), so a replug or a reboot cannot swap your arms: keep an adapter named by its port in that port. Only adapters your robot's arms can be on are listed.
Your arm is not listed?
Type its address the way your arm's driver opens it: an IP address, a CAN link, a serial port. Add each arm that is not listed. The wizard opens it through the driver like the ones it found, and the checks below run on what the driver reads.
Other devices on this computer, not arms (0)
Your robot's arms cannot be on these, so they are never opened.
Arm settings
Find arms opens each ticked adapter, and its arm goes limp so you can move it by hand: hold each arm, or rest it on its stand. Untick an adapter that belongs to something else (another robot on this computer) and it is left alone. Then move one arm a little, and say below which arm it is.
Keep the names after a reboot
Install this rule once, then unplug and replug both adapters. It names each arm's link after its adapter's serial number.
Your cameras
Click the role each camera has. Then compare each one with a reference picture.
The data you recorded on this robot for your fine-tune, as a folder on this computer. Its first frames become the pictures each camera is compared with, so you can line your cameras up with the views your model learned from. Nothing is uploaded and nothing is saved.
Your camera is not listed?
Type any address OpenCV opens: a network camera's stream (rtsp://192.168.1.50/stream1), a /dev/video path. For a camera only its maker's SDK reads, type a class of your own instead, as module:Class or my_cams.py:Class. Class(camera) opens it, read() returns (ok, frame) with a BGR picture, and release() lets it go.
Capture settings
Home pose
Put each arm in its home pose, the pose every run starts from, then press OK.
Seat each arm like this: folded down onto its base, the wrist camera facing up, the gripper closed.
The drawing is your arms as your driver reads them, on dream's model of the arm. If it does not look like your real arms, a joint's zero, direction or units is off: fix that first. Drag a picture to turn it.
Move under power
The arms move slowly: each joint a little, then each hand. Check that the real arms move like the drawings.
Save
The file