Dynamixel servo internal update rates and data repetition at high polling frequencies

Issue:

I’m investigating the relationship between polling frequency and actual data update rates in Dynamixel servos and experiencing unexpected data repetition patterns.

SETUP:

  • Multiple Dynamixel XM430/XL430 series servos
  • USB/RS485 communication at 4Mbps baudrate, Protocol 2.0
  • DynamixelSDK version 3.8.2
  • C++ application using GroupBulkRead

OPTIMIZATIONS APPLIED:

  • USB Latency Timer: Reduced to 1ms (from default 16ms)
  • Return Delay Time: Set to 0 for all servos (via Dynamixel Wizard)
  • Using GroupBulkRead for efficient bulk operations

OBSERVED BEHAVIOR:
When polling servos at high frequencies (1000Hz):

  • Application successfully calls SDK at target frequency
  • SDK responds immediately to each call
  • However: Position/velocity/current values show repetition patterns
  • Pattern: Multiple identical consecutive values before seeing new data

ANALYSIS:
Despite communication optimizations, this suggests servo internal systems update at their own
fixed rate, and faster polling returns cached values from servo’s internal state.

QUESTIONS:

  1. What are the documented internal update rates for Dynamixel servos (encoder sampling, current measurement, velocity calculation)?
  2. Is data repetition at high polling frequencies expected behavior?
  3. Are there servo parameters to configure internal update rates?
  4. What are the recommended maximum polling frequencies for different servo models?

The current documentation doesn’t clearly specify internal servo control loop frequencies or the relationship between polling rate and data freshness. This information would help developers set appropriate polling frequencies and understand when data repetition is normal vs problematic.


DYNAMIXEL Servo:

XM430-W350, XL430-W250


DYNAMIXEL Controller:

USB2Dynamixel (U2D2)


Software Interface:

DynamixelSDK 3.8.2 (C++), GroupBulkRead operations

Through trial and error and in real practice, most users can get only a typical DXL reading every 8-10 ms.