Changelog¶
1.0.0 (2026-10-20)¶
First release on PyPI, and the first version as its own repository (before, servolab lived inside the course repository of the TUM MiMed robotics seminar).
- Bus, Motor and Imu classes with SI units; position, velocity and PWM mode
set_zero()holds in every mode: the motor applieshoming_offsetonly in position mode, servolab subtracts it in velocity and PWM modebus.scan()finds two devices with the same ID and stops with aDuplicateIdErrorthat names the ID (on the bus they look like one device, or like none)- Factory reset for motors and IMUs (
m.factory_reset(),imu.factory_reset()). Motors are reset with instruction 0x06 (the Feetech SDK's 0x0A is ignored by the STS3215); every device keeps its ID, so one motor in a chain can be reset - Simulated motors (
connect("sim")) and simulated robots in MuJoCo (connect("sim:so102"), or your own robot model) - Recorder and LivePlot (Rerun) for recording and plotting
- Motors over the network:
servolab-serveron the robot,connect("tcp://...")on the laptop, with a watchdog that switches the motors off when the connection breaks - ServoScope web app: live plots, PID step test, register editor, documentation;
--connect PORT,--host(default: only reachable from this computer) - Firmware for a bus IMU node on a Seeed XIAO nRF52840 Sense (
firmware/xiao_imu/) - Optional extras: the core only needs numpy and pyserial;
servolab[all]installs everything - Documentation website with guides, the Python API, the register tables and the examples, generated from the package