What you need
- An assembled SO-100 or SO-ARM100 arm with STS3215 servos
- The matching power supply for your servo variant
- A USB-to-serial adapter and cable to your computer
- At least one USB camera
- A computer running macOS 12+, Windows 10+ or Ubuntu 22.04+
STS3215 servos are 7.4 V units. Guides written for other arms sometimes specify 12 V, and connecting a 12 V supply to this arm will destroy the servos within seconds. Confirm the voltage printed on your own supply against your servo variant before powering up. This mistake is not recoverable.
Install the client
The client bundles the robot driver, so there is no Python environment to create and no dependencies to resolve. Download the installer for your platform and run it.
The builds are not code-signed yet. On macOS, right-click the app and choose Open rather than double-clicking. On Windows, SmartScreen will show a blue box, click More info and then Run anyway.
# Or install the CLI instead, if you prefer the terminal
curl -fsSL https://www.ay-robots.com/install.sh | sh
ay-robots --versionPair the client with your account
- 1Generate a pairing code
Open your dashboard on the web, go to Robots and create a new robot. You will be shown a one-time pairing code.
- 2Enter it in the client
The setup wizard asks for it on the first screen. The client exchanges the code for a permanent credential and stores it locally.
bashay-robots pair 7K2M-9QXR-4T8N - 3Confirm it appears online
The robot should flip to online in your dashboard within a few seconds. If it stays offline, the client is not reaching the platform; check your firewall before anything else.
Find the arm
The client scans serial ports on its own. On Windows the arm appears as a COM port, on macOS as a /dev/cu.usb device, on Linux as /dev/ttyUSB0 or /dev/ttyACM0.
ay-robots devices
# SERIAL PORTS
# /dev/cu.usbmodem58FA0821911 SO-100 (6 servos responding)
# CAMERAS
# 0 FaceTime HD Camera 1280x720
# 1 USB 2.0 Camera 1920x1080Serial devices usually belong to the dialout group. Run "sudo usermod -aG dialout $USER", then log out and back in. A reboot is not required but a fresh login is.
Calibrate
Calibration teaches the software where each joint physically sits. Without it, a commanded position means something different on your arm than on anyone else’s, and recorded data will not transfer.
- 1Move the arm to the home pose
Power the arm, then guide each joint by hand to the neutral pose shown in the client. Servos are not torqued during this step, so the arm moves freely.
- 2Capture the zero point
Confirm in the client. It reads all six servo positions and stores them as the reference.
bashay-robots calibrate - 3Sweep each joint
The client walks each joint to its limits to record the usable range. Watch for anything binding mechanically and stop if a joint sounds strained.
If a single joint jitters, overshoots or drops out while the other five behave, that servo or its cable is the fault. Recalibrating will not fix it, and recording data with it will pollute your dataset.
Move it
Open the dashboard tab in the client and use the joint sliders. Small movements first. The arm should track smoothly without buzzing or hunting around the target.
Assembly and calibration are the only genuinely fiddly steps. Everything from here is software, and the next guide has you recording real training data.