Teensy 4.1 breakout board inside AKROS robot base module
Teensy 4.1 breakout board inside AKROS robot base module

Serial Bus Servo Design for Robotics: A Deep Dive

Robotics projects are becoming increasingly sophisticated, demanding precise and efficient control systems. At the heart of many advanced robots, particularly those with complex movements like legged robots or articulated arms, lie serial bus servo motors. These intelligent actuators offer numerous advantages over traditional PWM servos, including simplified wiring, enhanced feedback, and sophisticated control capabilities. This article delves into the intricacies of Serial Bus Servo Design, drawing upon practical experiences from robotics projects to illustrate key considerations and choices.

My recent endeavors in robotics have led me to explore the world of serial bus servos. Having completed the AKROS robot project, I shifted my focus to mastering ROS2 and microROS with C++, aiming to apply these technologies to real-world hardware. This journey naturally led me to investigate advanced actuation methods, and serial bus servos emerged as a compelling solution.

One of the primary motivations was upgrading the AKROS robot to AKROS2. The goal was to port the software to ROS2 and implement Nav2, ROS2’s powerful navigation stack. Furthermore, I aimed to replace the Arduino Mega with a Teensy 4.1 for low-level control, ensuring compatibility with microROS. MicroROS on Teensy 4.1 leverages UDP communication over Ethernet, promising to resolve bandwidth limitations encountered with the Arduino Mega and serial communication.

Initially, I considered designing a custom Teensy 4.1 breakout board. However, recognizing the complexity for a first PCB design and SMD soldering project, I opted for a more readily available solution. The Arduino Teensy 4.1 Expansion Board from Tindie proved to be an ideal choice, offering an Arduino Mega form-factor with full IO pin access, including USB host and Ethernet.

Teensy 4.1 breakout board inside AKROS robot base moduleTeensy 4.1 breakout board inside AKROS robot base module

Alt text: Close-up view inside the AKROS robot base module showcasing the Teensy 4.1 breakout board replacing the Arduino Mega, highlighting the compact integration for advanced robotic control.

While the Teensy 4.1 upgrade addresses processing power and communication bandwidth, the selection of appropriate motor drivers and servo motors remains crucial for overall robot performance. This is where the exploration of serial bus servos becomes particularly relevant, especially when considering the design of articulated robotic limbs.

Understanding Serial Bus Servos in Robotics

Traditional RC servos, controlled by PWM signals, are adequate for basic robotic applications. However, for robots requiring intricate movements, coordinated motion, and sensor feedback, serial bus servos offer significant advantages. These “smart servos” communicate over a serial bus, allowing for individual addressing and command, as well as the return of rich telemetry data.

Key Benefits of Serial Bus Servos:

  • Simplified Wiring: Daisy-chaining servos on a single bus reduces wiring complexity dramatically, especially in multi-jointed robots.
  • Enhanced Control: Individual servo addressing allows for precise control of each joint, enabling complex motion patterns and coordinated movements.
  • Feedback and Telemetry: Serial bus servos can provide feedback on position, speed, load, temperature, and voltage, crucial for advanced control algorithms and diagnostics.
  • Sophisticated Control Modes: Beyond simple position control, many serial bus servos support velocity control, torque control, and current limiting, expanding design possibilities.

Design Considerations for Serial Bus Servo Integration:

When incorporating serial bus servos into a robotic design, several factors must be carefully considered:

  • Communication Protocol: Understanding the servo’s communication protocol (e.g., RS485, TTL) is essential for selecting compatible microcontrollers and communication interfaces.
  • Voltage and Current Requirements: Serial bus servos often operate at higher voltages (7.4V or more) compared to standard RC servos, necessitating appropriate power supplies and voltage regulation.
  • Control Libraries and APIs: The availability of robust and well-documented control libraries for your chosen microcontroller platform (e.g., Arduino, ROS) is critical for efficient development.
  • Cost and Performance: Serial bus servos generally come at a higher cost than standard servos, requiring a careful balance between budget and desired performance characteristics.
  • Operating Range and Torque: Selecting servos with appropriate operating range (some offer 360° or continuous rotation) and torque output is crucial for the intended application and joint requirements.
  • Feedback Capabilities: Determine if current/torque sensing, position feedback, and other telemetry features are essential for your control algorithms and robot functionalities.

Servo Selection in Practice: Building a 3DoF Robot Leg

Inspired by the Spacebit Asagumo legged space rover and a desire to explore advanced robotic locomotion, my focus shifted towards designing a 3DoF (Degrees of Freedom) robot leg using serial bus servos. This project became the ideal testbed for evaluating different servo options and gaining hands-on experience with serial bus servo control.

My initial requirements for the servo motors were straightforward:

  • 360-degree Operating Range: Essential for versatile joint movement in a legged robot.
  • Current/Torque Sensing: Crucial for implementing force control and compliant behavior.
  • Arduino Compatibility: To leverage existing libraries and simplify initial development.
  • Metal Gears: For robustness and durability, especially in load-bearing joints.

My research led me to compare two prominent serial bus servo options: Dynamixel servos from Robotis and Feetech servos.

Dynamixel Servos: The Established Standard

Dynamixel servos are widely recognized as industry-leading smart servos, popular in research and advanced robotics. They offer a comprehensive range of models with varying sizes, torque capabilities, and features. The Dynamixel XC series, in particular, boasts full metal gears, 360-degree operation, and current sensing.

However, Dynamixel servos are often associated with a higher price point. Considering budget constraints, I explored the lower-cost Dynamixel XL series, specifically the XL330-M288-T model.

Dynamixel XL330 servos daisy-chainedDynamixel XL330 servos daisy-chained

Alt text: A close-up of Dynamixel XL330-M288-T servo motors connected in a daisy-chain configuration, mounted on Dynamixel brackets, demonstrating a typical setup for serial bus servo systems.

Dynamixel XL330-M288-T: Key Features and Considerations:

  • Pros:
    • Well-established brand with extensive documentation and community support.
    • Open-source API and Arduino libraries.
    • Current/torque sensing capabilities.
    • Relatively compact and lightweight.
  • Cons:
    • Plastic gears (less durable than metal gears in high-load applications).
    • Can be expensive compared to some alternatives.
    • No dual-axis variant with current/torque control in the XL series.

Despite the plastic gears, the XL330’s current sensing, open API, and reasonable cost (around 30 euros each) made it an attractive option for initial experimentation. Furthermore, the availability of the Dynamixel MKR shield for Arduino MKR boards simplified integration with the Arduino Portenta H7 microcontroller I intended to use.

Dynamixel XL330 servos with MKR shield and Arduino MKR Wifi 1010Dynamixel XL330 servos with MKR shield and Arduino MKR Wifi 1010

Alt text: Dynamixel XL330 servo motors attached to a Dynamixel MKR shield mounted on an Arduino MKR Wifi 1010, illustrating the hardware setup for controlling Dynamixel servos with an Arduino platform.

Feetech STS3215: A Cost-Effective Alternative

While researching Dynamixel servos, I discovered the Feetech STS3215 serial bus servo from Feetech, a Chinese manufacturer of servo motors. The STS3215 appeared to offer comparable performance to the Dynamixel XL330 at a similar price point, while boasting metal gears and meeting all my initial requirements.

Feetech STS3215: Key Features and Considerations:

  • Pros:
    • Metal gears for increased durability.
    • 360-degree operating range.
    • Current/torque sensing capabilities.
    • Cost-effective alternative to Dynamixel.
  • Cons:
    • Limited and less accessible documentation, primarily in Chinese.
    • Community support may be less extensive compared to Dynamixel.
    • Documentation quality may be lower, requiring reliance on Google Translate and online forums.

Despite the documentation challenges, the Feetech STS3215’s compelling features and price made it worth exploring. Feetech provides their own programming board, the FE-URT-1, for servo control and configuration via USB or UART, ensuring compatibility with microcontrollers like the Arduino Portenta.

Feetech STS3215 servos with FE-URT-1 programmerFeetech STS3215 servos with FE-URT-1 programmer

Alt text: Three Feetech STS3215 servo motors chained together and connected to the FE-URT-1 programming board, demonstrating the setup for configuring and controlling Feetech servos via USB or UART.

Future Experimentation and Motor Selection

With both Dynamixel XL330 and Feetech STS3215 servos on hand, the next steps involve rigorous experimentation and comparison. My immediate plan is to build two 3DoF robot legs, one using each servo type. This side-by-side comparison will allow for detailed performance evaluation, focusing on:

  • Torque and Speed Characteristics: Testing the actual torque output and speed capabilities of each servo under varying loads.
  • Control Precision and Responsiveness: Assessing the accuracy and responsiveness of position, velocity, and torque control modes.
  • Durability and Reliability: Evaluating the long-term durability and reliability of both servo types under typical robotic operating conditions.
  • Ease of Integration and Programming: Comparing the ease of use of the respective control libraries and APIs, as well as the overall integration process with microROS and Arduino.

This practical evaluation will inform the final servo selection for building a complete quadruped robot. Furthermore, I intend to explore compliant haptic interfaces in conjunction with these servos, leveraging their current/torque sensing capabilities to create more interactive and robust robotic systems.

The journey into serial bus servo design is an exciting step towards building more advanced and capable robots. By carefully considering design requirements, evaluating available options like Dynamixel and Feetech servos, and conducting thorough experimentation, we can unlock the full potential of these intelligent actuators and push the boundaries of robotic innovation.

Test setup with Arduino Portenta, Dynamixel MKR shield, and Feetech programmerTest setup with Arduino Portenta, Dynamixel MKR shield, and Feetech programmer

Alt text: Overview of the test setup featuring the Arduino Portenta connected to a breakout board, Dynamixel MKR shield, XL330 motors, Feetech programmer, and STS3215 motors, illustrating the experimental environment for servo motor evaluation and control development.

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *