Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions dynamixel_workbench/CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,23 @@
Changelog for package dynamixel_workbench
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

2.2.5 (2025-06-04)
------------------
* Remove unused rclcpp dependency
* Remove ament_target_dependencies (deprecated in ROS 2 kilted)
* Contributors: ijnek

2.2.4 (2025-03-14)
------------------
* Fixed the issue where the Workbench example was not building on SBC by adding the ARM option.
* Added the CI for ROS 2 rolling, jazzy and Humble.
* Contributoers: Wonho Yun
* Contributors: Wonho Yun

2.2.3 (2022-10-06)
------------------
* ROS2 release (Foxy, Galactic, Humble)
* fix variable length warning (#364)
* Contributoers: Kenji Brameld, Will Son
* Contributors: Kenji Brameld, Will Son

2.2.2 (2022-01-25)
------------------
Expand Down
2 changes: 1 addition & 1 deletion dynamixel_workbench/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>dynamixel_workbench</name>
<version>2.2.4</version>
<version>2.2.5</version>
<description>
Dynamixel-Workbench is dynamixel solution for ROS.
This metapackage allows you to easily change the ID, baudrate and operating mode of the Dynamixel.
Expand Down
10 changes: 8 additions & 2 deletions dynamixel_workbench_toolbox/CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,23 @@
Changelog for package dynamixel_workbench_toolbox
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

2.2.5 (2025-06-04)
------------------
* Remove unused rclcpp dependency
* Remove ament_target_dependencies (deprecated in ROS 2 kilted)
* Contributors: ijnek

2.2.4 (2025-03-14)
------------------
* Fixed the issue where the Workbench example was not building on SBC by adding the ARM option.
* Added the CI for ROS 2 rolling, jazzy and Humble.
* Contributoers: Wonho Yun
* Contributors: Wonho Yun

2.2.3 (2022-10-06)
------------------
* ROS2 release (Foxy, Galactic, Humble)
* fix variable length warning (#364)
* Contributoers: Kenji Brameld, Will Son
* Contributors: Kenji Brameld, Will Son

2.2.2 (2022-01-25)
------------------
Expand Down
26 changes: 12 additions & 14 deletions dynamixel_workbench_toolbox/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ endif()
################################################################################
find_package(ament_cmake REQUIRED)
find_package(dynamixel_sdk REQUIRED)
find_package(rclcpp REQUIRED)

################################################################################
# Declare ROS messages, services and actions
Expand All @@ -32,14 +31,6 @@ find_package(rclcpp REQUIRED)
################################################################################
# Build
################################################################################
include_directories(
include
)

set(dependencies_lib
"dynamixel_sdk"
"rclcpp"
)

set(LIB_NAME "dynamixel_workbench_toolbox")

Expand All @@ -49,19 +40,28 @@ add_library(${LIB_NAME} SHARED
src/${PROJECT_NAME}/dynamixel_tool.cpp
src/${PROJECT_NAME}/dynamixel_workbench.cpp
)
ament_target_dependencies(${LIB_NAME} ${dependencies_lib})
target_include_directories(${LIB_NAME} PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include/${PROJECT_NAME}>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

critical

To align with the standard ROS include pattern (#include <package_name/header.h>) and ensure correct header discovery by downstream packages, this INSTALL_INTERFACE should be include.

This change is related to the header installation method (see comment on lines 63-65). When headers are installed to PREFIX/include/package_name/header.h, downstream packages should add PREFIX/include to their include search paths. This INSTALL_INTERFACE directive configures that for consumers of this target.

  $<INSTALL_INTERFACE:include>

${dynamixel_sdk_INCLUDE_DIRS}
)

target_link_libraries(${LIB_NAME} PUBLIC
${dynamixel_sdk_LIBRARIES}
)

################################################################################
# Install
################################################################################
install(TARGETS ${LIB_NAME}
EXPORT export_${PROJECT_NAME}
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
RUNTIME DESTINATION bin/${PROJECT_NAME}
)

install(DIRECTORY include/
DESTINATION include/
DESTINATION include/${PROJECT_NAME}
)
Comment on lines 63 to 65

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

critical

This installation rule for header files, combined with the INSTALL_INTERFACE on line 45, appears to lead to incorrect header paths for downstream packages.

Given the source structure where headers are located at include/${PROJECT_NAME}/header.h (e.g., include/dynamixel_workbench_toolbox/dynamixel_driver.h):

  1. The current install(DIRECTORY include/ DESTINATION include/${PROJECT_NAME}) copies the contents of the source include/ directory (which includes the dynamixel_workbench_toolbox/ subdirectory itself) into PREFIX/include/${PROJECT_NAME}/. This results in a nested path like PREFIX/include/dynamixel_workbench_toolbox/dynamixel_workbench_toolbox/header.h.
  2. The standard ROS convention is for headers to be installed at PREFIX/include/package_name/header.h and included via #include <package_name/header.h>.

To achieve this, the headers from the source include/${PROJECT_NAME}/ directory should be installed directly into the PREFIX/include/${PROJECT_NAME}/ destination.

Could you please adjust this installation rule? Also, ensure the INSTALL_INTERFACE on line 45 is set to include (as per separate comment).

install(
  DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/${PROJECT_NAME}/
  DESTINATION include/${PROJECT_NAME}
  FILES_MATCHING PATTERN "*.h"
)


################################################################################
Expand All @@ -71,8 +71,6 @@ install(DIRECTORY include/
################################################################################
# Macro for ament package
################################################################################
ament_export_include_directories(include)
ament_export_dependencies(dynamixel_sdk)
ament_export_dependencies(rclcpp)
ament_export_libraries(${LIB_NAME})
ament_export_targets(export_${PROJECT_NAME} HAS_LIBRARY_TARGET)
ament_package()
4 changes: 2 additions & 2 deletions dynamixel_workbench_toolbox/library.properties
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name=DynamixelWorkbench
version=2.2.4
version=2.2.5
author=Darby Lim (thlim@robotis.com)
maintainer=Will Son (willson@robotis.com)
maintainer=Pyo (pyo@robotis.com)
sentence=DynamixelWorkbench using DynamixelSDK
paragraph=Tools for Dynamixel
category=Other
Expand Down
3 changes: 1 addition & 2 deletions dynamixel_workbench_toolbox/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>dynamixel_workbench_toolbox</name>
<version>2.2.4</version>
<version>2.2.5</version>
<description>
This package is composed of 'dynamixel_item', 'dynamixel_tool', 'dynamixel_driver' and 'dynamixel_workbench' class.
The 'dynamixel_item' is saved as control table item and information of DYNAMIXEL.
Expand All @@ -21,7 +21,6 @@
<author email="willson@robotis.com">Will Son</author>
<author email="ywh@robotis.com">Wonho Yun</author>
<buildtool_depend>ament_cmake</buildtool_depend>
<depend>rclcpp</depend>
<depend>dynamixel_sdk</depend>
<export>
<build_type>ament_cmake</build_type>
Expand Down