[KongchangAI]
· 1 min read· 940 words

Quadruped Robot Wouf's Debut: ST3215 Servos Are Slow but the Gait Is Faster

Quadruped Robot Wouf's Debut: ST3215 Servos Are Slow but the Gait Is Faster

The developer found that ST3215 servo feedback read latency slows the control loop, and disabling it makes Wouf walk faster.

The developer's new version of the quadruped robot project Cubic Doggo, Wouf, takes its first steps. During debugging, they discover a 3-5 ms latency in ST3215 servo feedback reading, caused by the C++ SMS_STS library not supporting synchronous read, which slows the control loop. Temporarily disabling feedback makes Wouf walk faster. Although the ST3215's nominal speed is lower than Dynamixel, its actual gait performance exceeds expectations, proving that theoretical actuator parameters are not the whole story of system performance. The steering algorithm fails again, but the hardware selection and basic architecture are validated. The author points out that restoring feedback is crucial for subsequent reinforcement learning, and synchronous read firmware is the current key obstacle. The project code is open-sourced on GitHub.

A developer's new version of their quadruped robot project Cubic Doggo, named Wouf, has just taken its first steps. In a Reddit update post, the author shared an unexpected finding from the debugging process: the ST3215 servos, originally criticized for being slower than Dynamixel, actually far exceeded expectations in real-world walking performance.

reddit source: Cubic Doggo update: Wouf's first steps

From "Sloth Speed" to Unexpectedly Fast Walking: A Bug Caused by Feedback Reading

The author admits that it took a long time after the last post to muster the courage to investigate the sluggish servo response. Firmware debugging is always daunting, but this time he found the root cause: the latency introduced by reading servo feedback values such as position, speed, and torque. As a smart servo, the ST3215 requires 3–5 milliseconds to read data from three servos each time, and the currently used C++ SMS_STS library does not yet support synchronous read. This serial, one-by-one reading approach accumulates and severely slows down the control loop.

The author asked the community in the post whether there is an existing synchronous read implementation. Until a solution is found, Wouf has temporarily disabled the feedback reading feature. Interestingly, this "crippling" actually made the robot walk faster—because the time overhead of feedback reading was eliminated, the control frequency could be increased.

Synchronous read is a bulk data acquisition mechanism in bus servo communication. Smart servos connected via a serial bus (such as TTL half-duplex) typically use a "question-and-answer" protocol: the master sends a read command, and the target servo returns data. If read one by one, each round trip includes the complete cycle of command frame, waiting for response, and data frame, and the accumulated latency is significant when the baud rate is limited. Synchronous read allows the master to specify multiple servo IDs and register addresses to read in a single command, and each servo returns data on the bus in a time-division or sequential manner, thereby compressing N communications into one command plus continuous responses and greatly reducing total time. For walking robots that require high-frequency closed-loop control, synchronous read can significantly shorten the control cycle and is a key firmware optimization point for improving real-time performance.

ST3215 vs Dynamixel: Speed Parameters Do Not Equal Actual Gait

Although the nominal speed of the ST3215 servo is still lower than the Dynamixel series used in the Doggo prototype, Wouf's actual walking speed is much faster than the author expected. This hints at an often overlooked fact: for walking robots, the theoretical speed parameter of the actuator is only part of system performance; the real-time nature of the control loop, communication latency, and algorithm efficiency are equally critical. The author also mentions that he likes the mechanical sound of the ST3215 during operation and believes this marks that designs based on the ST3215 are fully capable of being walking robots.

Dynamixel is a smart servo series launched by the Korean company ROBOTIS, widely used as joint actuators in scientific research and educational robotics, with common models such as the AX, MX, and XL series. Its features include higher communication rates, rich feedback registers (position, speed, load, temperature, etc.), and mature SDK support, but the unit price is usually much higher than ordinary servos. ST3215 is a serial bus servo launched by the domestic manufacturer Feetech, positioned as a low-cost alternative. It also has position/speed/load feedback and bus communication capabilities, but its ecosystem and library support are relatively weak. The two differ in nominal speed, torque, and communication protocol. Dynamixel often has the advantage in response speed and protocol maturity, while the ST3215 attracts low-cost projects with its price advantage.

Steering Algorithm Fails Again, but the Overall Direction Is Validated

The author humorously admits that the steering algorithm "messed up again," and this is not the first time he has made a mistake in steering logic. However, these small setbacks do not obscure the core conclusion: the ST3215 solution is feasible. Wouf's gait performance has already demonstrated the potential of the hardware selection and basic architecture. In the next few days, the author plans to organize the entire build process and publish a summary.

The Input Gap for Reinforcement Learning: Synchronous Read Firmware Becomes Key

Currently, Wouf lacks feedback reading capability, which is crucial for reinforcement learning—feedback values are essentially the input observations for the policy network. The author states that whether to restore this feature depends on the difficulty of developing synchronous read firmware. If the community can provide an existing solution, or if he overcomes this challenge himself, Wouf will have a complete perception-control closed loop, paving the way for subsequent reinforcement learning training.

The complete code for this project is open-sourced on GitHub: https://github.com/SphericalCowww/CubicDoggo_07B . For developers interested in low-cost quadruped robots, servo communication optimization, or embedded control, Wouf's progress provides a practical case worth following.

Reinforcement Learning (RL) in robot gait control typically models the policy network as a mapping from observations to actions. For quadruped robots, the observation space generally includes joint positions, joint velocities, body attitude (IMU data), and foot contact states, etc.; the action space is the target position or torque command for each joint. The policy network (such as an MLP trained with PPO) requires a complete observation vector as input at each control step. Missing any dimension will lead to an incomplete state representation, thereby affecting training convergence and policy robustness. Therefore, feedback reading is not only a debugging tool but also the infrastructure of the perception link in the RL closed loop—without reliable joint feedback, the policy network cannot know its own state, and thus cannot learn an effective gait.

#quadruped robot#ST3215 servo#Cubic Doggo#synchronous read#reinforcement learning
Share:

Related articles