Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 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
2 changes: 1 addition & 1 deletion Doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ PROJECT_NAME = "DynamixelSDK c++"
# could be handy for archiving the generated documentation or if some version
# control system is used.

PROJECT_NUMBER = 4.0.2
PROJECT_NUMBER = 4.0.3

# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
Expand Down
5 changes: 5 additions & 0 deletions ReleaseNote.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Dynamixel SDK Release Notes

4.0.3 (2025-12-17)
------------------
* Dynamixel Easy SDK supports Linux SBC environments, Linux 32-bit platforms, and ROS 2 based build and deployment workflows
* Contributors: Hyungyu Kim

4.0.2 (2025-11-24)
------------------
* Easy SDK Python update
Expand Down
24 changes: 21 additions & 3 deletions c++/build/linux32/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,12 @@ SYMLINK = ln -s
MKDIR = mkdir
CC = gcc
CX = g++
CCFLAGS = -O2 -O3 -DLINUX -D_GNU_SOURCE -Wall -c $(INCLUDES) $(FORMAT) -fPIC -g
CXFLAGS = -O2 -O3 -DLINUX -D_GNU_SOURCE -Wall -c $(INCLUDES) $(FORMAT) -fPIC -g
FORMAT = -m32
CONTROL_TABLE_PATH_FLAG = -DCONTROL_TABLE_PATH=\"$(INSTALL_ROOT)/share/dynamixel_sdk/control_table\"
CCFLAGS = -O2 -O3 -DLINUX -D_GNU_SOURCE -Wall -c $(INCLUDES) $(FORMAT) -fPIC -g $(CONTROL_TABLE_PATH_FLAG)
CXFLAGS = -O2 -O3 -DLINUX -D_GNU_SOURCE -Wall -c $(INCLUDES) $(FORMAT) -fPIC -g $(CONTROL_TABLE_PATH_FLAG)
FORMAT = -m32 -std=c++17
INCLUDES += -I$(DIR_DXL)/include/dynamixel_sdk
INCLUDES += -I$(DIR_DXL)/include

#---------------------------------------------------------------------
# Required external libraries
Expand All @@ -60,6 +62,11 @@ SOURCES = src/dynamixel_sdk/group_bulk_read.cpp \
src/dynamixel_sdk/protocol1_packet_handler.cpp \
src/dynamixel_sdk/protocol2_packet_handler.cpp \
src/dynamixel_sdk/port_handler_linux.cpp \
src/dynamixel_easy_sdk/connector.cpp \
src/dynamixel_easy_sdk/control_table.cpp \
src/dynamixel_easy_sdk/motor.cpp \
src/dynamixel_easy_sdk/dynamixel_error.cpp \
src/dynamixel_easy_sdk/group_executor.cpp


OBJECTS=$(addsuffix .o,$(addprefix $(DIR_OBJS)/,$(basename $(notdir $(SOURCES)))))
Expand Down Expand Up @@ -88,6 +95,12 @@ install: $(TARGET)
# copy the headers into the include directory
@$(CHK_DIR_EXISTS) $(INSTALL_ROOT)/include/dynamixel_sdk || $(MKDIR) $(INSTALL_ROOT)/include/dynamixel_sdk
$(CP_ALL) $(DIR_DXL)/include/dynamixel_sdk/* $(INSTALL_ROOT)/include/dynamixel_sdk/
@$(CHK_DIR_EXISTS) $(INSTALL_ROOT)/include/dynamixel_easy_sdk || $(MKDIR) $(INSTALL_ROOT)/include/dynamixel_easy_sdk
$(CP_ALL) $(DIR_DXL)/include/dynamixel_easy_sdk/* $(INSTALL_ROOT)/include/dynamixel_easy_sdk

# copy the control_table directory into the share directory
@$(CHK_DIR_EXISTS) $(INSTALL_ROOT)/share/dynamixel_sdk || $(MKDIR) -p $(INSTALL_ROOT)/share/dynamixel_sdk
$(CP_ALL) $(DIR_DXL)/../control_table $(INSTALL_ROOT)/share/dynamixel_sdk/

$(LD_CONFIG)

Expand All @@ -99,6 +112,8 @@ uninstall:

$(RM) $(INSTALL_ROOT)/include/dynamixel_sdk/dynamixel_sdk.h
$(RM_ALL) $(INSTALL_ROOT)/include/dynamixel_sdk/*
$(RM_ALL) $(INSTALL_ROOT)/include/dynamixel_easy_sdk/*
$(RM_ALL) $(INSTALL_ROOT)/share/dynamixel_sdk/control_table

reinstall: uninstall install

Expand All @@ -119,6 +134,9 @@ $(DIR_OBJS)/%.o: $(DIR_DXL)/src/dynamixel_sdk/%.c
$(DIR_OBJS)/%.o: $(DIR_DXL)/src/dynamixel_sdk/%.cpp
$(CX) $(CXFLAGS) -c $? -o $@

$(DIR_OBJS)/%.o: $(DIR_DXL)/src/dynamixel_easy_sdk/%.cpp
$(CX) $(CXFLAGS) -c $? -o $@

#---------------------------------------------------------------------
# END OF MAKEFILE
#---------------------------------------------------------------------
2 changes: 1 addition & 1 deletion c++/build/linux64/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ CX = g++
CONTROL_TABLE_PATH_FLAG = -DCONTROL_TABLE_PATH=\"$(INSTALL_ROOT)/share/dynamixel_sdk/control_table\"
CCFLAGS = -O2 -O3 -DLINUX -D_GNU_SOURCE -Wall -c $(INCLUDES) $(FORMAT) -fPIC -g $(CONTROL_TABLE_PATH_FLAG)
CXFLAGS = -O2 -O3 -DLINUX -D_GNU_SOURCE -Wall -c $(INCLUDES) $(FORMAT) -fPIC -g $(CONTROL_TABLE_PATH_FLAG)
FORMAT = -m64
FORMAT = -m64 -std=c++17
INCLUDES += -I$(DIR_DXL)/include/dynamixel_sdk
INCLUDES += -I$(DIR_DXL)/include

Expand Down
25 changes: 22 additions & 3 deletions c++/build/linux_sbc/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,11 @@ SYMLINK = ln -s
MKDIR = mkdir
CC = gcc
CX = g++
CCFLAGS = -O2 -O3 -DLINUX -D_GNU_SOURCE -Wall -c $(INCLUDES) -fPIC -g
CXFLAGS = -O2 -O3 -DLINUX -D_GNU_SOURCE -Wall -c $(INCLUDES) -fPIC -g
CONTROL_TABLE_PATH_FLAG = -DCONTROL_TABLE_PATH=\"$(INSTALL_ROOT)/share/dynamixel_sdk/control_table\"
CCFLAGS = -O2 -O3 -DLINUX -D_GNU_SOURCE -Wall -c $(INCLUDES) -fPIC -g $(CONTROL_TABLE_PATH_FLAG)
CXFLAGS = -O2 -O3 -DLINUX -D_GNU_SOURCE -Wall -c $(INCLUDES) -fPIC -g $(CONTROL_TABLE_PATH_FLAG)
INCLUDES += -I$(DIR_DXL)/include/dynamixel_sdk
INCLUDES += -I$(DIR_DXL)/include

#---------------------------------------------------------------------
# Required external libraries
Expand All @@ -59,6 +61,11 @@ SOURCES = src/dynamixel_sdk/group_bulk_read.cpp \
src/dynamixel_sdk/protocol1_packet_handler.cpp \
src/dynamixel_sdk/protocol2_packet_handler.cpp \
src/dynamixel_sdk/port_handler_linux.cpp \
src/dynamixel_easy_sdk/connector.cpp \
src/dynamixel_easy_sdk/control_table.cpp \
src/dynamixel_easy_sdk/motor.cpp \
src/dynamixel_easy_sdk/dynamixel_error.cpp \
src/dynamixel_easy_sdk/group_executor.cpp


OBJECTS=$(addsuffix .o,$(addprefix $(DIR_OBJS)/,$(basename $(notdir $(SOURCES)))))
Expand Down Expand Up @@ -86,7 +93,14 @@ install: $(TARGET)

# copy the headers into the include directory
@$(CHK_DIR_EXISTS) $(INSTALL_ROOT)/include/dynamixel_sdk || $(MKDIR) $(INSTALL_ROOT)/include/dynamixel_sdk
$(CP_ALL) $(DIR_DXL)/include/dynamixel_sdk/* $(INSTALL_ROOT)/include/dynamixel_sdk/
$(CP_ALL) $(DIR_DXL)/include/dynamixel_sdk/* $(INSTALL_ROOT)/include/dynamixel_sdk

@$(CHK_DIR_EXISTS) $(INSTALL_ROOT)/include/dynamixel_easy_sdk || $(MKDIR) $(INSTALL_ROOT)/include/dynamixel_easy_sdk
$(CP_ALL) $(DIR_DXL)/include/dynamixel_easy_sdk/* $(INSTALL_ROOT)/include/dynamixel_easy_sdk

# copy the control_table directory into the share directory
@$(CHK_DIR_EXISTS) $(INSTALL_ROOT)/share/dynamixel_sdk || $(MKDIR) -p $(INSTALL_ROOT)/share/dynamixel_sdk
$(CP_ALL) $(DIR_DXL)/../control_table $(INSTALL_ROOT)/share/dynamixel_sdk/

$(LD_CONFIG)

Expand All @@ -98,6 +112,8 @@ uninstall:

$(RM) $(INSTALL_ROOT)/include/dynamixel_sdk/dynamixel_sdk.h
$(RM_ALL) $(INSTALL_ROOT)/include/dynamixel_sdk/*
$(RM_ALL) $(INSTALL_ROOT)/include/dynamixel_easy_sdk/*
$(RM_ALL) $(INSTALL_ROOT)/share/dynamixel_sdk/control_table

reinstall: uninstall install

Expand All @@ -118,6 +134,9 @@ $(DIR_OBJS)/%.o: $(DIR_DXL)/src/dynamixel_sdk/%.c
$(DIR_OBJS)/%.o: $(DIR_DXL)/src/dynamixel_sdk/%.cpp
$(CX) $(CXFLAGS) -c $? -o $@

$(DIR_OBJS)/%.o: $(DIR_DXL)/src/dynamixel_easy_sdk/%.cpp
$(CX) $(CXFLAGS) -c $? -o $@

#---------------------------------------------------------------------
# END OF MAKEFILE
#---------------------------------------------------------------------
5 changes: 3 additions & 2 deletions python/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,14 @@ build-backend = "setuptools.build_meta"

[project]
name = "dynamixel-sdk"
version = "4.0.2"
version = "4.0.3"
description = "Dynamixel SDK 4. python package"
readme = "README.txt"
license = { text = "Apache 2.0" }
authors = [
{ name = "Leon Jung", email = "rwjung@robotis.com" },
{ name = "Wonho Yun", email = "ywh@robotis.com" }
{ name = "Wonho Yun", email = "ywh@robotis.com" },
{ name = "Hyungyu Kim", email = "kimgf@robotis.com" }
]
dependencies = [
"pyserial",
Expand Down
3 changes: 2 additions & 1 deletion python/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,15 @@
authors_info = [
('Leon Jung', 'rwjung@robotis.com'),
('Wonho Yun', 'ywh@robotis.com'),
('Hyungyu Kim', 'kimhg@robotis.com'),
]

authors = ', '.join(author for author, _ in authors_info)
author_emails = ', '.join(email for _, email in authors_info)

setup(
name='dynamixel_sdk',
version='4.0.2',
version='4.0.3',
packages=['dynamixel_sdk'],
package_dir={'': 'src'},
license='Apache 2.0',
Expand Down
5 changes: 5 additions & 0 deletions ros/dynamixel_sdk/CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@
Changelog for package dynamixel_sdk
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

4.0.3 (2025-12-17)
------------------
* Dynamixel Easy SDK supports Linux SBC environments, Linux 32-bit platforms, and ROS 2 based build and deployment workflows
* Contributors: Hyungyu Kim

4.0.2 (2025-11-24)
------------------
* None
Expand Down
19 changes: 19 additions & 0 deletions ros/dynamixel_sdk/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,14 @@ set(DYNAMIXEL_SDK_SOURCES
src/dynamixel_sdk/port_handler.cpp
)

set(DYNAMIXEL_EASY_SDK_SOURCES
src/dynamixel_easy_sdk/connector.cpp
src/dynamixel_easy_sdk/control_table.cpp
src/dynamixel_easy_sdk/dynamixel_error.cpp
src/dynamixel_easy_sdk/group_executor.cpp
src/dynamixel_easy_sdk/motor.cpp
)

if(APPLE)
add_library(dynamixel_sdk SHARED
${DYNAMIXEL_SDK_SOURCES}
Expand All @@ -52,6 +60,7 @@ elseif(WIN32)
else()
add_library(dynamixel_sdk SHARED
${DYNAMIXEL_SDK_SOURCES}
${DYNAMIXEL_EASY_SDK_SOURCES}
src/dynamixel_sdk/port_handler_linux.cpp
)
endif()
Expand All @@ -73,6 +82,16 @@ install(
INCLUDES DESTINATION include
)

install(
DIRECTORY control_table/
DESTINATION share/${PROJECT_NAME}/control_table
)

target_compile_definitions(dynamixel_sdk
PUBLIC
CONTROL_TABLE_PATH="${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME}/control_table"
)

################################################################################
# Install Python Package
################################################################################
Expand Down
70 changes: 70 additions & 0 deletions ros/dynamixel_sdk/control_table/2xc430_w250.model
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
[type info]
name value
value_of_zero_radian_position 2048
value_of_max_radian_position 4095
value_of_min_radian_position 0
min_radian -3.14159265
max_radian 3.14159265

[unit info]
Data Name value unit Sign Type
Present Velocity 0.0239691227 rad/s signed
Goal Velocity 0.0239691227 rad/s signed

[control table]
Address Size Data Name
0 2 Model Number
2 4 Model Information
6 1 Firmware Version
7 1 ID
8 1 Baud Rate
9 1 Return Delay Time
10 1 Drive Mode
11 1 Operating Mode
12 1 Secondary(Shadow) ID
13 1 Protocol Type
20 4 Homing Offset
24 4 Moving Threshold
31 1 Temperature Limit
32 2 Max Voltage Limit
34 2 Min Voltage Limit
36 2 PWM Limit
44 4 Velocity Limit
48 4 Max Position Limit
52 4 Min Position Limit
63 1 Shutdown
64 1 Torque Enable
65 1 LED
68 1 Status Return Level
69 1 Registered Instruction
70 1 Hardware Error Status
76 2 Velocity I Gain
78 2 Velocity P Gain
80 2 Position D Gain
82 2 Position I Gain
84 2 Position P Gain
88 2 Feedforward 2nd Gain
90 2 Feedforward 1st Gain
98 1 Bus Watchdog
100 2 Goal PWM
104 4 Goal Velocity
108 4 Profile Acceleration
112 4 Profile Velocity
116 4 Goal Position
120 2 Realtime Tick
122 1 Moving
123 1 Moving Status
124 2 Present PWM
126 2 Present Load
128 4 Present Velocity
132 4 Present Position
136 4 Velocity Trajectory
140 4 Position Trajectory
144 2 Present Input Voltage
146 1 Present Temperature
168 2 Indirect Address 1
224 1 Indirect Data 1
168 2 Indirect Address Write
224 1 Indirect Data Write
578 2 Indirect Address Read
634 1 Indirect Data Read
70 changes: 70 additions & 0 deletions ros/dynamixel_sdk/control_table/2xl430_w250.model
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
[type info]
name value
value_of_zero_radian_position 2048
value_of_max_radian_position 4095
value_of_min_radian_position 0
min_radian -3.14159265
max_radian 3.14159265

[unit info]
Data Name value unit Sign Type
Present Velocity 0.0239691227 rad/s signed
Goal Velocity 0.0239691227 rad/s signed

[control table]
Address Size Data Name
0 2 Model Number
2 4 Model Information
6 1 Firmware Version
7 1 ID
8 1 Baud Rate
9 1 Return Delay Time
10 1 Drive Mode
11 1 Operating Mode
12 1 Secondary(Shadow) ID
13 1 Protocol Type
20 4 Homing Offset
24 4 Moving Threshold
31 1 Temperature Limit
32 2 Max Voltage Limit
34 2 Min Voltage Limit
36 2 PWM Limit
44 4 Velocity Limit
48 4 Max Position Limit
52 4 Min Position Limit
63 1 Shutdown
64 1 Torque Enable
65 1 LED
68 1 Status Return Level
69 1 Registered Instruction
70 1 Hardware Error Status
76 2 Velocity I Gain
78 2 Velocity P Gain
80 2 Position D Gain
82 2 Position I Gain
84 2 Position P Gain
88 2 Feedforward 2nd Gain
90 2 Feedforward 1st Gain
98 1 Bus Watchdog
100 2 Goal PWM
104 4 Goal Velocity
108 4 Profile Acceleration
112 4 Profile Velocity
116 4 Goal Position
120 2 Realtime Tick
122 1 Moving
123 1 Moving Status
124 2 Present PWM
126 2 Present Load
128 4 Present Velocity
132 4 Present Position
136 4 Velocity Trajectory
140 4 Position Trajectory
144 2 Present Input Voltage
146 1 Present Temperature
168 2 Indirect Address 1
224 1 Indirect Data 1
168 2 Indirect Address Write
224 1 Indirect Data Write
578 2 Indirect Address Read
634 1 Indirect Data Read
Loading
Loading