Why the second arm is worth its price
The alternative is hand-guiding a single arm with its servos untorqued. It works, but it records the wrong thing: your hand carries the weight, so the action stream contains motion that your grip and gravity produced rather than commands the arm could reproduce on its own. With a leader, the follower stays torqued for the whole episode and every recorded action is a command it actually executed.
- The joint mapping is direct. Both arms have five joints plus a gripper, so leader angles map one to one onto follower targets with no inverse kinematics in between.
- The gripper sits under your finger as a continuous control, which is what makes a measured close possible instead of a snap.
- Your demonstrations get a consistent speed, because you are moving a light arm rather than fighting a torqued one.
- The second arm is the same class of purchase as the first, roughly 110 to 150 euro in parts for an SO-100.
The two mistakes that cost a session
The first is swapping the ports. Both arms show up as serial devices and they are indistinguishable in a device list, so label them physically before anything else. Getting it backwards is a five minute fix during setup and a fifty episode loss if you notice it after a recording session.
ay-robots devices
# SERIAL PORTS
# /dev/cu.usbmodem58FA0821911 SO-100 (6 servos responding)
# /dev/cu.usbmodem58FA0821912 SO-100 (6 servos responding)The second is calibrating only one of them. Both need calibration, but they are not equally consequential: the follower’s zero point enters every episode, so a follower that is off by a few degrees poisons the dataset, while a leader that is off is merely awkward to drive.
SO-100, SO-101 and the LeKiwi arm run Feetech STS3215 servos at 7.4 V. A 12 V supply destroys them in seconds. With two arms and two bricks on the same bench, the wrong one is always within reach. Koch v1.1 is the exception, since it uses Dynamixel servos with 5 V and 12 V rails depending on the servo.
The Koch v1.1 design assumes a leader-follower pair from the start. If you have only one arm, /so-100/data-collection covers recording without a leader, and /live lets you drive a real SO-100 in the browser to see what the loop feels like first.