Frequency of update of control table items of AX 12A

Issue:

I want to know the frequency at which the following control table items are updated:

  1. Present position
  2. Present speed

This work has some good timing analysis.

Assuming that I operate the motor at 1M baud rate with minimal reply delay time, would I be getting the “latest” feedback data? I may be communicating fast enough, but does that memory address get updated that quickly?
For example, I have read (not able to recall where) that the Present speed is updated a bit slower than the present position (which is understandable).

Background:

I am working with Arduino + 12 AX-12As put together as a biped robot on a single bus. I can syncwrite (Goal Pos + Moving speed) and sequential read (Present pos + Present speed) at a max rate of ~ 170 Hz.

My feedback (Present position) plots show a big lag (~ 200 ms) for trajectory tracking, almost equal for all motors. If I track the trajectory using video capture, I see no more than ~40 ms lag (difficult to explain more at the moment). So, the motors are moving on the expected trajectory, but my feedback shows otherwise.

Edit: I can syncwrite (Goal Pos + Moving speed) and sequential read (Present pos + Present speed) reliably at ~ 120 Hz.


DYNAMIXEL Servo:

AX-12A


DYNAMIXEL Controller:

Arduino Mega + Dynamixel Arduino shield


Software Interface:

Dynamixel Arduino library, Protocol 1.0.

Unfortunately, the update cycle of the requested control table item is not disclosed.
The interface used, PC settings, and commands used may have an effect.
Speed can be improved by setting the response delay time to 0 and speeding up the communication speed.
Please refer to the information below.

1 Like

Thank you for the reply!

I hoping to find some studies that compare the motor feedback to an externally captured data (with synchronised time).

When I was using CM-550 + TASK 3 on XL-430 the best external throughput I got was about 10 ms per reading

IMG_0070

Thank you for sharing the info.

I just rechecked my program and found similar values while communicating with 12 motors (syncwrite + sequential read). The loop takes around 8000 microseconds. (image attached)
closed_loop_timing_12motors

The corresponding Arduino code.

So, the communication is definitely happening at an expected rate. I am looking to investigate if the control table data (e.g., Present position) is updated between each communication cycle.