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

AX-12 Some properties

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

AX-12 Some properties

Post by rustyarmor » Sat Jan 13, 2007 5:06 pm

Post by rustyarmor
Sat Jan 13, 2007 5:06 pm

In the last few months, I was invited by someone very special from this forum to do some tests with Bioloid.

Along with other protocols we established a protocol between MATLAB/SIMULINK and the CM-5. From this protocol we were able to determine some properties of the servos and do some identification.

We discovered that there is no control when the servos are in free-turn.
The following picture shows that, where a long bar with a heavy weight was attached to one of the servos in constant speed. The output speed does not follow the input speed.

Image

In this figure we can also conclude 2 more things.
1st: The load is sampled at 7 times/sec (also the output speed estimated by the servo). This result was corroborated by the bioloid team.
2nd: In free-turn the load tends to follow the output speed. In position mode this is not verified (see picture bellow). In this case the output servo position (yellow line-2nd graph) follows the input (yellow line-1st line) even when an external torque is applied (Output Load-purple line).

Image

The other thing we discovered was a dead zone in speed. By saying to the servo to go from -300 to 300 encoders/sec, we discovered a dead zone between -70 to 70 enc/s. This is due to friction and stiction. Depending on the tests, these values can change magitude. So we extend the dead zone for values between -150 to 150 enc/s.

Image

Finally, the tests were sampled 100 times/sec.

Hoping this information will be helpful.
In the last few months, I was invited by someone very special from this forum to do some tests with Bioloid.

Along with other protocols we established a protocol between MATLAB/SIMULINK and the CM-5. From this protocol we were able to determine some properties of the servos and do some identification.

We discovered that there is no control when the servos are in free-turn.
The following picture shows that, where a long bar with a heavy weight was attached to one of the servos in constant speed. The output speed does not follow the input speed.

Image

In this figure we can also conclude 2 more things.
1st: The load is sampled at 7 times/sec (also the output speed estimated by the servo). This result was corroborated by the bioloid team.
2nd: In free-turn the load tends to follow the output speed. In position mode this is not verified (see picture bellow). In this case the output servo position (yellow line-2nd graph) follows the input (yellow line-1st line) even when an external torque is applied (Output Load-purple line).

Image

The other thing we discovered was a dead zone in speed. By saying to the servo to go from -300 to 300 encoders/sec, we discovered a dead zone between -70 to 70 enc/s. This is due to friction and stiction. Depending on the tests, these values can change magitude. So we extend the dead zone for values between -150 to 150 enc/s.

Image

Finally, the tests were sampled 100 times/sec.

Hoping this information will be helpful.
rustyarmor
Robot Builder
Robot Builder
User avatar
Posts: 19
Joined: Fri Oct 20, 2006 1:00 am

Post by JonHylands » Sat Jan 13, 2007 6:21 pm

Post by JonHylands
Sat Jan 13, 2007 6:21 pm

This is fascinating, and it looks like it might be very useful information. I'd like a bunch more information, though, mainly in term definition.

What exactly do you mean by "free-turn"?

You said you attached a long bar with a heavy weight. How long and how heavy? Is the servo turning the bar, or is the bar turning the servo?

Terms you need to define precisely:

Load (I assume it is from the "Present Load" register)
Input Speed
Output Speed

When you say -300 to 300 encoders/sec, what does that mean? Are you running the servo backwards, and then slow it down until it stops, and then start turning the other direction? Was it in servo mode or full-rotation mode?

- Jon
This is fascinating, and it looks like it might be very useful information. I'd like a bunch more information, though, mainly in term definition.

What exactly do you mean by "free-turn"?

You said you attached a long bar with a heavy weight. How long and how heavy? Is the servo turning the bar, or is the bar turning the servo?

Terms you need to define precisely:

Load (I assume it is from the "Present Load" register)
Input Speed
Output Speed

When you say -300 to 300 encoders/sec, what does that mean? Are you running the servo backwards, and then slow it down until it stops, and then start turning the other direction? Was it in servo mode or full-rotation mode?

- Jon
JonHylands
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 512
Joined: Thu Nov 09, 2006 1:00 am
Location: Ontario, Canada

Post by rustyarmor » Sat Jan 13, 2007 10:20 pm

Post by rustyarmor
Sat Jan 13, 2007 10:20 pm

Hi Jon,

Indeed, I wasn't precise in what I have said. But I'll try now.

What exactly do you mean by "free-turn"?


By free-turn, I mean full-rotation mode.

You said you attached a long bar with a heavy weight. How long and how heavy? Is the servo turning the bar, or is the bar turning the servo?


The servo was turning the bar. The bar was 25 cm long (25grams) with a mass of 170 grams in the end of it.

Terms you need to define precisely:

Load (I assume it is from the "Present Load" register)
Input Speed
Output Speed


Load=> Present Load (Load given by the servo)

Imput speed=> By imput speed I mean the Speed sent to servo in full rotation mode.

Output Speed=> Present Speed. Read from the servo
Output estimated Speed=> Estimated from the Present Position read from the servo.

When you say -300 to 300 encoders/sec, what does that mean? Are you running the servo backwards, and then slow it down until it stops, and then start turning the other direction?

Exactly!

Was it in servo mode or full-rotation mode?

In full rotation mode.[/quote]

regards,
Pedro
Hi Jon,

Indeed, I wasn't precise in what I have said. But I'll try now.

What exactly do you mean by "free-turn"?


By free-turn, I mean full-rotation mode.

You said you attached a long bar with a heavy weight. How long and how heavy? Is the servo turning the bar, or is the bar turning the servo?


The servo was turning the bar. The bar was 25 cm long (25grams) with a mass of 170 grams in the end of it.

Terms you need to define precisely:

Load (I assume it is from the "Present Load" register)
Input Speed
Output Speed


Load=> Present Load (Load given by the servo)

Imput speed=> By imput speed I mean the Speed sent to servo in full rotation mode.

Output Speed=> Present Speed. Read from the servo
Output estimated Speed=> Estimated from the Present Position read from the servo.

When you say -300 to 300 encoders/sec, what does that mean? Are you running the servo backwards, and then slow it down until it stops, and then start turning the other direction?

Exactly!

Was it in servo mode or full-rotation mode?

In full rotation mode.[/quote]

regards,
Pedro
rustyarmor
Robot Builder
Robot Builder
User avatar
Posts: 19
Joined: Fri Oct 20, 2006 1:00 am

Post by rustyarmor » Sun Jan 14, 2007 11:46 pm

Post by rustyarmor
Sun Jan 14, 2007 11:46 pm

Following the subject of this thread, we managed to build up a program in c++ (VC++6.0) in order to communicate by RS232 with ATmega128 to read and print at the screen the encoders of all servos in real time. (we actuated directly on all servos by moving them).

We also altered the code embedded in the micro controller to work with a buffer. The idea behind this implementation was to check if the frequency increased or not with this method.

We concluded that using a buffer, the frequency decreased. The results are listed bellow:
    Buffer’s Length: 100 | 10 | 1/No buffer
    Frequency (Hz): 133|139| 141-143.4

Comparing the best result with the maximum theoretical value for frequency (144hz), we note that the lack is minimum (0,6Hz).

    Calculation of the maximum theoretical value for frequency:

    144=57600/((19+1)*2*10)

    Where:
    • 57600bps => Baud Rate
    • 19+1 =>19 servos +1 virtual which work as a separator.
    • 2 => 2 bytes (the encoder number of each servo is 10 bits of resolution)
    • 10 is the number of bits (8bits for the number +1 bit for parity +1 bit for stop)


we also managed to measure latency between PC and CM-5. After testing it for different prescalers, we concluded that the results were satisfactory. The latency is about 1.29ms.

Bellow, is a graph obtained for Latency during a run of 1000 samples.

Image

regards,
Pedro
Following the subject of this thread, we managed to build up a program in c++ (VC++6.0) in order to communicate by RS232 with ATmega128 to read and print at the screen the encoders of all servos in real time. (we actuated directly on all servos by moving them).

We also altered the code embedded in the micro controller to work with a buffer. The idea behind this implementation was to check if the frequency increased or not with this method.

We concluded that using a buffer, the frequency decreased. The results are listed bellow:
    Buffer’s Length: 100 | 10 | 1/No buffer
    Frequency (Hz): 133|139| 141-143.4

Comparing the best result with the maximum theoretical value for frequency (144hz), we note that the lack is minimum (0,6Hz).

    Calculation of the maximum theoretical value for frequency:

    144=57600/((19+1)*2*10)

    Where:
    • 57600bps => Baud Rate
    • 19+1 =>19 servos +1 virtual which work as a separator.
    • 2 => 2 bytes (the encoder number of each servo is 10 bits of resolution)
    • 10 is the number of bits (8bits for the number +1 bit for parity +1 bit for stop)


we also managed to measure latency between PC and CM-5. After testing it for different prescalers, we concluded that the results were satisfactory. The latency is about 1.29ms.

Bellow, is a graph obtained for Latency during a run of 1000 samples.

Image

regards,
Pedro
rustyarmor
Robot Builder
Robot Builder
User avatar
Posts: 19
Joined: Fri Oct 20, 2006 1:00 am


4 postsPage 1 of 1
4 postsPage 1 of 1