I am attempting to control the Dynamixel X series, specifically the 2XL430 and XH450, via ROS2 using OpenCR, following the “DYNAMIXEL Quick Start Guide for ROS 2” video on ROBOTIS’s e-manual on YouTube. After running the read_write_node
in the terminal and publishing a topic in another shell, the following information appears in the shell where the node was executed, and the Dynamixel does not operate.
User@USer:~/robot_ws$ ros2 run dyamixel_sdk_examples read_write_node
[read_write_node] [INFO] [1727470995.918882730]: Succeeded to open the port.
[read_write_node] [INFO] [1727470995.918882730]: Succeeded to set the baudrate.
[read_write_node] [INFO] [1727470995.918882730]: Succeeded to set the Position Control Mode.
[read_write_node] [INFO] [1727470995.918882730]: Succeeded to enable torque.
[read_write_node] [INFO] [1727470995.918882730]: Run read write node
…
(After publishing the topic)
…
[read_write_node] [INFO] [1727470995.918882730]: [TxRxResult] There is no status packet!
To address this issue, I checked the code in protocol2_packet_handler.cpp
, but since I am not very familiar with C++, I was only able to identify that the problem occurs when there is a ‘COMM_RX_TIMEOUT’.
To resolve the timeout issue, I modified the baudrate in both the Dynamixel and read_write_node.cpp
to 115200 bps and confirmed that the baudrate in OpenCR is set to ‘DXL_PORT: 1M’. Additionally, I tried modifying the DEFAULT_BAUDRATE_
of the class WINDECLSPEC PortHandler
in port_handler.h
to 115200, but the issue persists.
I would appreciate any assistance.