Conversation
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
add rosdep ci
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>
Easy sdk python update and improvement of cpp easy sdk
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
…forms, and ROS 2 based build and deployment workflows
…other-os Linux SBC environments, Linux 32-bit platforms, and ROS 2
There was a problem hiding this comment.
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.
Summary of ChangesHello @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
🧠 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
Using Gemini Code AssistThe 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
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 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
|
There was a problem hiding this comment.
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_tabledata, which is a significant maintenance risk. - Improving the robustness of the Makefiles.
- Discussing potential design improvements in the C++ and Python
Motorclasses regarding I/O in constructors. - Pointing out a potential memory safety issue with raw pointers in the C++
StagedCommandstruct.
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.
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Update version in cpp library.properties
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.