Skip to content

Architecture

LaptopJulia / Pythonplanning, analysisUSBFT232Rlatency timer 1 mspins 13/14/GNDBasebus bridgeWiFi (UDP): plans, commands, telemetryATOM (ESP32)500 Hz onboard playerIMU, LED matrix, buttonG19 RX / G22 TXFeetech servo bus1 Mbaud, half-duplexJ1J2J3J4J5J6Only one side drives the bus at a time: the laptop (through the FT232) or the ATOM.
Part Function
Servos J1–J6 Feetech STS bus servos, IDs 1–6, on one half-duplex bus at 1 Mbaud. Each servo runs its own position controller.
Base Holds the 12 V input and an Arduino-style header. It bridges a UART on header pins 13/14 to the servo bus. The circuit inside is not known.
FT232R adapter USB-serial adapter on the base pins. It gives the laptop direct access to the servo bus.
ATOM M5Stack ATOM Matrix (ESP32-PICO-D4) at the end of the arm. It is on the servo bus (G19/G22). It has WiFi, a 5×5 LED matrix, a button and an IMU.
Laptop Plans trajectories (Julia, RigidBodyDynamics.jl), plays them through the FT232R or uploads them to the ATOM, and analyses the recordings.
Laptop path ATOM path
Who runs the loop Laptop (Julia or Python) ATOM firmware, core 1
Link to the bus USB → FT232R → base Direct (G19/G22)
Loop rate ~285–320 Hz 500 Hz (fixed)
Timing jitter Stalls of 6–80 ms (OS, USB, garbage collection) ±15 µs
Link to the laptop USB cable WiFi (UDP)
IMU data No Yes, every cycle

Both paths use the same plan format and produce the same recording columns. The ATOM recordings have six more columns for the IMU.

  • Joint angles are in degrees, with the same signs and zeros as the stock firmware’s get_angles. 0° on every joint is the upright pose.
  • Servo positions are in steps: 4096 steps per turn, 0° = step 2048. angle = sign × (step − 2048) × 360 / 4096, with sign [−1, −1, +1, −1, −1, −1] for J1–J6.
  • Cartesian positions are in millimetres in the base frame of the URDF.
Path Contents
src/ Julia package MyCobot: kinematics, servo bus, FT232R control, players, ILC, ATOM link.
scripts/ Julia scripts: plan, play, trace, learn, analyse.
test/ Julia tests, including a simulated servo bus.
firmware/ ATOM firmware: atom_controller and atom_probe.
tools/python/ Python tools for the laptop path, plots and offline analysis.
mycobot_description/ URDF and meshes.
website/ This documentation site.