Skip to content

Bump 4.0.3#673

Merged
robotpilot merged 87 commits intojazzyfrom
main
Jan 13, 2026
Merged

Bump 4.0.3#673
robotpilot merged 87 commits intojazzyfrom
main

Conversation

@GyuH13
Copy link
Member

@GyuH13 GyuH13 commented Jan 2, 2026

Summary

This PR enables the Dynamixel Easy SDK to support Linux SBC environments, Linux 32-bit platforms, and ROS 2 (ament-based) build systems.

Changes

  • Updated the Makefiles to allow building the Easy SDK on Linux SBC and Linux 32-bit environments.

  • Modified the ROS 2 package CMakeLists.txt to build and install the Easy SDK using ament_cmake.

  • Added the control table to the ROS 2 package. (for supporting ROS distribution and binary (distro) deployment.)

Testing

Linux SBC: Tested on Raspberry Pi 5.

Linux 32-bit: Tested in an Ubuntu 18.04 32-bit Docker environment.

ROS 2 support: Tested both CMake-based builds and colcon-based builds.

GyuH13 and others added 30 commits June 20, 2025 08:49
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Copilot AI review requested due to automatic review settings January 2, 2026 09:34
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR bumps the version to 4.0.3 and introduces the Dynamixel Easy SDK, which provides a higher-level abstraction layer over the existing Dynamixel SDK for Linux environments and ROS 2 deployments.

  • Adds Dynamixel Easy SDK with Python implementation for simplified motor control
  • Includes control table model files for various Dynamixel motor series (YM, XW, XM, XL, XH, XD, XC, MX, PH, PM, RH models)
  • Updates CHANGELOG with version history entries and build configuration for ROS 2

Reviewed changes

Copilot reviewed 227 out of 258 changed files in this pull request and generated no comments.

Show a summary per file
File Description
ros/dynamixel_sdk/CHANGELOG.rst Adds changelog entries for versions 4.0.0 through 4.0.3
ros/dynamixel_sdk/CMakeLists.txt Configures build for Dynamixel Easy SDK sources and installs control table files
python/src/dynamixel_easy_sdk/*.py Implements core Easy SDK components (motor, connector, group executor, data types, error handling)
ros/dynamixel_sdk/control_table/*.model Adds control table definitions for numerous Dynamixel motor models
python/src/dynamixel_easy_sdk/control_table/*.model Duplicates control table definitions for Python package
c++/library.properties Updates Arduino library version from 3.8.3 to 4.0.0

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @GyuH13, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request marks a significant advancement for the Dynamixel SDK, moving to version 4.0.3. The core of this update is the introduction of the 'Easy SDK,' a new layer designed to streamline motor control for developers using both C++ and Python. This new interface simplifies complex operations, making it easier to manage Dynamixel motors across various Linux environments, including SBCs and 32-bit systems, and integrates smoothly with modern ROS 2 development practices. The changes aim to enhance usability, broaden compatibility, and provide a more robust development experience.

Highlights

  • Major Version Bump: The Dynamixel SDK has been updated to version 4.0.3 across C++, Python, and ROS packages, signifying a major release with new features and improvements.
  • Introduction of Easy SDK: A new 'Easy SDK' interface has been integrated for both C++ and Python, providing higher-level abstractions and simplified methods for interacting with Dynamixel motors. This includes new classes like Connector, Motor, and GroupExecutor.
  • Expanded Platform Support: The Dynamixel Easy SDK now officially supports Linux SBC (Single Board Computer) environments and 32-bit Linux platforms, alongside enhanced integration for ROS 2-based build and deployment workflows.
  • Enhanced Error Handling and Data Types: New data types (data_types.hpp/.py) and improved error handling mechanisms (dynamixel_error.hpp/.py) have been introduced within the Easy SDK to provide more robust and user-friendly feedback during motor operations.
  • Comprehensive Model Control Table Definitions: Numerous new model definition files (.model) have been added under the control_table/ directory, expanding the SDK's knowledge base for various Dynamixel motor types and their specific control registers.
  • Build System Updates: Makefiles for Linux 32-bit, 64-bit, and SBC environments have been updated to include the new Easy SDK sources, set the C++ standard to C++17, and manage the installation of new headers and control table files. ROS 2 CMakeLists.txt also reflects these changes.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Ignored Files
  • Ignored by pattern: .github/workflows/** (1)
    • .github/workflows/ros-ci.yml
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a significant new feature, the 'Dynamixel Easy SDK', for both C++ and Python, which provides a higher-level, more user-friendly API for controlling Dynamixel servos. It also includes a version bump to 4.0.3 and updates release notes and build systems accordingly. The new API uses modern C++ features like enum class and a Result type for error handling, and modern Python features like dataclasses and IntEnum.

My review focuses on improving the robustness and maintainability of the new SDK. Key points include:

  • Addressing file duplication for the control_table data, which is a significant maintenance risk.
  • Improving the robustness of the Makefiles.
  • Discussing potential design improvements in the C++ and Python Motor classes regarding I/O in constructors.
  • Pointing out a potential memory safety issue with raw pointers in the C++ StagedCommand struct.

Overall, this is a great addition that will make the SDK easier to use. The feedback provided aims to make it even more robust and easier to maintain in the long run.

GyuH13 and others added 2 commits January 5, 2026 15:11
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Update version in cpp library.properties
@GyuH13 GyuH13 added the bump Increase the version number to release label Jan 6, 2026
@GyuH13 GyuH13 added this to Platform Jan 6, 2026
@github-project-automation github-project-automation bot moved this to 🌱 Todo in Platform Jan 6, 2026
@GyuH13 GyuH13 moved this from 🌱 Todo to 📝 Pull Request in Platform Jan 6, 2026
@robotpilot robotpilot merged commit f2fabbb into jazzy Jan 13, 2026
9 checks passed
@github-project-automation github-project-automation bot moved this from 📝 Pull Request to 🚩Done in Platform Jan 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bump Increase the version number to release

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

2 participants