Legacy Forum: Preserving Nearly 20 Years of Community History - A Time Capsule of Discussions, Memories, and Shared Experiences.

shortest return delay time is unexpectedly long

Bioloid robot kit from Korean company Robotis; CM5 controller block, AX12 servos..
6 postsPage 1 of 1
6 postsPage 1 of 1

shortest return delay time is unexpectedly long

Post by Zoid » Mon Sep 13, 2010 4:19 am

Post by Zoid
Mon Sep 13, 2010 4:19 am

Using an oscilloscope I've been clocking the actual return delay time from an AX-12+, and it doesn't seem to match the documentation well at all. First of all, mine appears to be working at about 4uS per value (approaching a full 1mS at a setting of 250), and there seems to be about a 21uS minimum (overhead) even at a setting of 0.

Is this normal?
Using an oscilloscope I've been clocking the actual return delay time from an AX-12+, and it doesn't seem to match the documentation well at all. First of all, mine appears to be working at about 4uS per value (approaching a full 1mS at a setting of 250), and there seems to be about a 21uS minimum (overhead) even at a setting of 0.

Is this normal?
Zoid
Robot Builder
Robot Builder
Posts: 19
Joined: Thu Oct 04, 2007 5:47 am

Post by i-Bot » Mon Sep 13, 2010 10:50 am

Post by i-Bot
Mon Sep 13, 2010 10:50 am

Yes, this is normal behaviour for an AX12. It may vary for other Dynamixel devices.
The return delay value is a minimum value and not the actual value. It is used to allow the bus master time to change from transmit to receive.

The normal minimum time for the AX12 is about 22us as you found at setting 0. However there is also an interrupt process which can kick in and add another 40 or 50 us to that randomly.

I did not check the accuracy of longer settings, because I only use setting 0.
Yes, this is normal behaviour for an AX12. It may vary for other Dynamixel devices.
The return delay value is a minimum value and not the actual value. It is used to allow the bus master time to change from transmit to receive.

The normal minimum time for the AX12 is about 22us as you found at setting 0. However there is also an interrupt process which can kick in and add another 40 or 50 us to that randomly.

I did not check the accuracy of longer settings, because I only use setting 0.
i-Bot
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 1142
Joined: Wed May 17, 2006 1:00 am

Post by Fritzoid » Mon Sep 13, 2010 11:25 am

Post by Fritzoid
Mon Sep 13, 2010 11:25 am

That agrees with my experience. The best response time that you can hope for is between 200 and 300 us. per dynamixel command.

Note, at startup time, the controller sets the delay time to zero on all recognized servo devices. So the firmware is currently running with the minimum turnaround time on the dynamixel bus. All you can do is make it slower.
That agrees with my experience. The best response time that you can hope for is between 200 and 300 us. per dynamixel command.

Note, at startup time, the controller sets the delay time to zero on all recognized servo devices. So the firmware is currently running with the minimum turnaround time on the dynamixel bus. All you can do is make it slower.
Fritzoid
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 331
Joined: Mon Dec 18, 2006 1:00 am

Post by Zoid » Mon Sep 13, 2010 5:04 pm

Post by Zoid
Mon Sep 13, 2010 5:04 pm

i-Bot wrote:...The normal minimum time for the AX12 is about 22us as you found at setting 0. However there is also an interrupt process which can kick in and add another 40 or 50 us to that randomly.

Does anyone know if Matt's M1 firmware is any faster in that regard?
i-Bot wrote:...The normal minimum time for the AX12 is about 22us as you found at setting 0. However there is also an interrupt process which can kick in and add another 40 or 50 us to that randomly.

Does anyone know if Matt's M1 firmware is any faster in that regard?
Zoid
Robot Builder
Robot Builder
Posts: 19
Joined: Thu Oct 04, 2007 5:47 am

Post by Fritzoid » Mon Sep 13, 2010 8:24 pm

Post by Fritzoid
Mon Sep 13, 2010 8:24 pm

Once a packet is received, the servo must do a checksum calculation then decode the command and create the response packet. Even in the best of circumstances this takes a couple hundred clock cycles. So, I doubt that it can be done at all in less than about 10 us.

The average read command is an 8 byte packet. That takes 80 us. to transmit. The average read response is another 8 bytes and takes another 80 us. to receive. That's 160 us. already. A processing overhead of 22 us. is pretty small in comparison.
Once a packet is received, the servo must do a checksum calculation then decode the command and create the response packet. Even in the best of circumstances this takes a couple hundred clock cycles. So, I doubt that it can be done at all in less than about 10 us.

The average read command is an 8 byte packet. That takes 80 us. to transmit. The average read response is another 8 bytes and takes another 80 us. to receive. That's 160 us. already. A processing overhead of 22 us. is pretty small in comparison.
Fritzoid
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 331
Joined: Mon Dec 18, 2006 1:00 am

Post by Zoid » Wed Sep 15, 2010 1:01 am

Post by Zoid
Wed Sep 15, 2010 1:01 am

Actually I was not concerned with the transmission time. Just the time (on the bus) between the end of the request, and the start of the reply, but I think I have sufficient answer. Thanks everyone.
Actually I was not concerned with the transmission time. Just the time (on the bus) between the end of the request, and the start of the reply, but I think I have sufficient answer. Thanks everyone.
Zoid
Robot Builder
Robot Builder
Posts: 19
Joined: Thu Oct 04, 2007 5:47 am


6 postsPage 1 of 1
6 postsPage 1 of 1