AX-12 Measures

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

AX-12 Measures

Post by darkyomy » Sat Feb 21, 2009 7:06 am

Post by darkyomy
Sat Feb 21, 2009 7:06 am

Hello

I'm currently working trying to figure out a model for bioloid. The problem I'm facing is the lack of information about the feedback from the servo and the relationship with the torque .

First .- What are the units from the load measure?

Second .- What is the formula that relates temperature and torque? I have read that there is a relationship between them.

Third .- I have seen a formula to calculate the torque using the load value T = F*i , where T is torque, i is the current (this chould be taken from the load measure) , but F is a constant. Is this formula corrent? does anybody knows what is the constant value?

Fourth .- What are the units for the speed measure?

Fifth .- Does anybody knows a formula to calculate the center of mass in the bioloid using the measures available from the AX-12 servo?

Thanks
Hello

I'm currently working trying to figure out a model for bioloid. The problem I'm facing is the lack of information about the feedback from the servo and the relationship with the torque .

First .- What are the units from the load measure?

Second .- What is the formula that relates temperature and torque? I have read that there is a relationship between them.

Third .- I have seen a formula to calculate the torque using the load value T = F*i , where T is torque, i is the current (this chould be taken from the load measure) , but F is a constant. Is this formula corrent? does anybody knows what is the constant value?

Fourth .- What are the units for the speed measure?

Fifth .- Does anybody knows a formula to calculate the center of mass in the bioloid using the measures available from the AX-12 servo?

Thanks
Last edited by darkyomy on Sat Feb 21, 2009 4:00 pm, edited 1 time in total.
darkyomy offline
Newbie
Newbie
Posts: 2
Joined: Sat Feb 21, 2009 6:41 am

Post by PedroR » Sat Feb 21, 2009 3:14 pm

Post by PedroR
Sat Feb 21, 2009 3:14 pm

Hi darkyomy

I'm not a guru of Bioloid but, from what I've heard it is not possible to reliably do current measurement in AX-12.

With regards to the center of mass you may want to check the work done here http://humanoids.dem.ist.utl.pt
It was a project supported by Robosavvy and probably Limor may be able to give you some more guidance on that.

As for all the other questions, I hope our fellow forum members reply to you.
Alternatively you can search the forum as probably these matters were discussed in the past.

Pedro.
Hi darkyomy

I'm not a guru of Bioloid but, from what I've heard it is not possible to reliably do current measurement in AX-12.

With regards to the center of mass you may want to check the work done here http://humanoids.dem.ist.utl.pt
It was a project supported by Robosavvy and probably Limor may be able to give you some more guidance on that.

As for all the other questions, I hope our fellow forum members reply to you.
Alternatively you can search the forum as probably these matters were discussed in the past.

Pedro.
PedroR offline
Savvy Roboteer
Savvy Roboteer
Posts: 1199
Joined: Mon Jun 16, 2008 11:07 pm

Post by StuartL » Thu Feb 26, 2009 5:14 pm

Post by StuartL
Thu Feb 26, 2009 5:14 pm

The torque question has definitely come up before. In short: To my knowledge noone has decoded what it means in the real world and the accuracy/quantisation of the torque figures make it almost unusable.

Instead you may wish to consider the difference between the goal position and the achieved position. This is probably a better and more useful start.
The torque question has definitely come up before. In short: To my knowledge noone has decoded what it means in the real world and the accuracy/quantisation of the torque figures make it almost unusable.

Instead you may wish to consider the difference between the goal position and the achieved position. This is probably a better and more useful start.
StuartL offline
Savvy Roboteer
Savvy Roboteer
Posts: 350
Joined: Mon Jun 04, 2007 3:46 pm
Location: Thatcham, Berkshire, UK

Bioloid - Load data reported by servo

Post by tah1 » Wed Jun 17, 2009 10:43 am

Post by tah1
Wed Jun 17, 2009 10:43 am

StuartL wrote:The torque question has definitely come up before... In short: To my knowledge noone has decoded what it means in the real world and the accuracy/quantisation of the torque figures make it almost unusable.

Instead you may wish to consider the difference between the goal position and the achieved position. This is probably a better and more useful start.



We have been doing some tests and measurements on the Bioloid AX12 related to the PRESENT LOAD data it stores in addresses 40-41 ($28-$29).

Our findings are as follows:

1) There is a threshold of motor current, below which the AX12 reports "Load" as zero. This threshold is ~110 to 120mA (including the static standby current of the servo).

2) The "Load" data are highly quantised. Although this is a 10bit number, the 10bit results posted in this address are always multiples of 32; i.e. the low 5 sig bits are always zero. So the result is really only a 5-bit result.

3) The "Load" data are directly related to measurements of motor current, and somewhat indirectly to servo output-torque. In particular, for a given motor current, there is a large difference between:
a) the quasi-static HOLDING torque of the system (i.e. the current needed to approx. maintain an output shaft position against an externally applied torque, or load), and...
b) the DYNAMIC DRIVING torque (i.e. how much torque the servo can apply to an external load to achieve a NEW position against an external load).

4) We have done measurements of both types, using a 0.5% accuracy force meter.
For the Static Position tests (holding torques, where we park the servo at a given position and then apply various torque loads by moving the attached force meter)) we measure a (quantised - see above) relation between "Load" value L (i.e. the value in address $28-$29), and static holding torque T [kg.cm] as follows:
L = 35.5T +7
and in this same mode, the relationship between the total servo current I [amps] and static holding torque T is:
I = 0.0125T+0.085

So for example holding position against an external load of 17N applied to the end of a 52mm servo arm (=> T= 17*5.2/9.81 = 8.98 [kg.cm]) will produce a (measured) Load reading from the servo of 320. Similarly, this requires a (measured) holding current of I = 0.2A (the formula above which is also subject to heavy quantisation, gives a result of 0.197)

For the Dynamic Torque situation (where we drive the servo towards a desired position in opposition to the load of the stationary force meter), the results are quite different. The quantisation of the Load readings, together with the significant hysteresis of the servo, produce a Torque T [kg.cm] result as follows:
T = 0.0074L + 0.323
Here we are setting position, and measuring torque so the equation is expressed differently, but were the servos linear and had zero hysteresis, the slopes in each equation would be the inverse of each other. However 1/0.0074 = 135.1 which is VERY different from the slope of the first equation (35.5). So one needs to use the appropriate formula to match the load/drive situation appropriately. It's likely that gearbox friction, motor-cogging, and backlash in the gear train contribute greatly to these differences, but I believe there is much that could be done with the internal control algorithm of the AX12 to reduce this huge discrepancy).
The relation between servo current I [amps] and Load L in the dynamic case is:
I = 0.0007L + 0.027
(the correlation coefficient in this case is ~0.93 so within the limits of quantisation, this is a reasonably linear relationship)

5) What all of this means is:
a) Load units as reported relate directly to motor current
b) Although the internal ADC in the AX12 is a 10bit device, only 5bits (presumably the MSBs) are reported externally, seriously reducing the usefulness of this data.
c) Although the Current/Load relationship is linear, the measured current (and thus the Load value reported), bears a complicated relationship to the externally applied load, and is a strong function of the dynamics / statics of the particular situation.

6) Most damning of all, as far as we can tell, during a servo MOVE (i.e. during the time it takes for the servo to implement and complete the execution of a command to move from position P0 to P1), the AX12 reports NO useful Load values at all - one always reads ZERO during the move itself - (barring the very very occasional odd non-zero reading that appears to be spurious). This means that the Load data is completely useless for precision torque control - i.e. where one is trying to move to a target position P1 but subject to the over-riding constraint that the servo must never apply more torque to the load than T1. This simply cannot be done, because a torque reading (proxied by Load) is not given until the position move has completed, by which time it's usually too late.

7) Conclusions:
a) The Load data in $28-$29 are directly related to the motor current, WHEN they are valid data.
b) The motor current bears a complex relationship with output load torque.
c) all else being equal, a bigger Load value does mean a bigger torque (but read ALL the caveats above - usually one cannot make a useful inference in practice)
d) NO USEFUL Load (and therefore Torque) information is available from the AX12 during the execution of a position move command.

We strongly recommend that Bioloid fix their firmware to tidy up this situation, as presently what is an otherwise very good (precise and strong) servo, is rendered completely useless for precision torque limited applications.

t
StuartL wrote:The torque question has definitely come up before... In short: To my knowledge noone has decoded what it means in the real world and the accuracy/quantisation of the torque figures make it almost unusable.

Instead you may wish to consider the difference between the goal position and the achieved position. This is probably a better and more useful start.



We have been doing some tests and measurements on the Bioloid AX12 related to the PRESENT LOAD data it stores in addresses 40-41 ($28-$29).

Our findings are as follows:

1) There is a threshold of motor current, below which the AX12 reports "Load" as zero. This threshold is ~110 to 120mA (including the static standby current of the servo).

2) The "Load" data are highly quantised. Although this is a 10bit number, the 10bit results posted in this address are always multiples of 32; i.e. the low 5 sig bits are always zero. So the result is really only a 5-bit result.

3) The "Load" data are directly related to measurements of motor current, and somewhat indirectly to servo output-torque. In particular, for a given motor current, there is a large difference between:
a) the quasi-static HOLDING torque of the system (i.e. the current needed to approx. maintain an output shaft position against an externally applied torque, or load), and...
b) the DYNAMIC DRIVING torque (i.e. how much torque the servo can apply to an external load to achieve a NEW position against an external load).

4) We have done measurements of both types, using a 0.5% accuracy force meter.
For the Static Position tests (holding torques, where we park the servo at a given position and then apply various torque loads by moving the attached force meter)) we measure a (quantised - see above) relation between "Load" value L (i.e. the value in address $28-$29), and static holding torque T [kg.cm] as follows:
L = 35.5T +7
and in this same mode, the relationship between the total servo current I [amps] and static holding torque T is:
I = 0.0125T+0.085

So for example holding position against an external load of 17N applied to the end of a 52mm servo arm (=> T= 17*5.2/9.81 = 8.98 [kg.cm]) will produce a (measured) Load reading from the servo of 320. Similarly, this requires a (measured) holding current of I = 0.2A (the formula above which is also subject to heavy quantisation, gives a result of 0.197)

For the Dynamic Torque situation (where we drive the servo towards a desired position in opposition to the load of the stationary force meter), the results are quite different. The quantisation of the Load readings, together with the significant hysteresis of the servo, produce a Torque T [kg.cm] result as follows:
T = 0.0074L + 0.323
Here we are setting position, and measuring torque so the equation is expressed differently, but were the servos linear and had zero hysteresis, the slopes in each equation would be the inverse of each other. However 1/0.0074 = 135.1 which is VERY different from the slope of the first equation (35.5). So one needs to use the appropriate formula to match the load/drive situation appropriately. It's likely that gearbox friction, motor-cogging, and backlash in the gear train contribute greatly to these differences, but I believe there is much that could be done with the internal control algorithm of the AX12 to reduce this huge discrepancy).
The relation between servo current I [amps] and Load L in the dynamic case is:
I = 0.0007L + 0.027
(the correlation coefficient in this case is ~0.93 so within the limits of quantisation, this is a reasonably linear relationship)

5) What all of this means is:
a) Load units as reported relate directly to motor current
b) Although the internal ADC in the AX12 is a 10bit device, only 5bits (presumably the MSBs) are reported externally, seriously reducing the usefulness of this data.
c) Although the Current/Load relationship is linear, the measured current (and thus the Load value reported), bears a complicated relationship to the externally applied load, and is a strong function of the dynamics / statics of the particular situation.

6) Most damning of all, as far as we can tell, during a servo MOVE (i.e. during the time it takes for the servo to implement and complete the execution of a command to move from position P0 to P1), the AX12 reports NO useful Load values at all - one always reads ZERO during the move itself - (barring the very very occasional odd non-zero reading that appears to be spurious). This means that the Load data is completely useless for precision torque control - i.e. where one is trying to move to a target position P1 but subject to the over-riding constraint that the servo must never apply more torque to the load than T1. This simply cannot be done, because a torque reading (proxied by Load) is not given until the position move has completed, by which time it's usually too late.

7) Conclusions:
a) The Load data in $28-$29 are directly related to the motor current, WHEN they are valid data.
b) The motor current bears a complex relationship with output load torque.
c) all else being equal, a bigger Load value does mean a bigger torque (but read ALL the caveats above - usually one cannot make a useful inference in practice)
d) NO USEFUL Load (and therefore Torque) information is available from the AX12 during the execution of a position move command.

We strongly recommend that Bioloid fix their firmware to tidy up this situation, as presently what is an otherwise very good (precise and strong) servo, is rendered completely useless for precision torque limited applications.

t
Last edited by tah1 on Wed Jun 17, 2009 12:47 pm, edited 1 time in total.
tah1 offline
Robot Builder
Robot Builder
Posts: 9
Joined: Fri Apr 24, 2009 2:08 pm

Re: Bioloid - Load data reported by servo

Post by tah1 » Wed Jun 17, 2009 11:54 am

Post by tah1
Wed Jun 17, 2009 11:54 am

tah1 wrote:in response to quote below from Stuart...
Instead you may wish to consider the difference between the goal position and the achieved position. This is probably a better and more useful start.
...
t


Lest you think that the simple linear equations given above tell the whole story - they don't! - I include here a couple of graphs of some of the directly measured data - study carefully before using the linearised formulae - reality is quite complicated.

Image

Image
t
tah1 wrote:in response to quote below from Stuart...
Instead you may wish to consider the difference between the goal position and the achieved position. This is probably a better and more useful start.
...
t


Lest you think that the simple linear equations given above tell the whole story - they don't! - I include here a couple of graphs of some of the directly measured data - study carefully before using the linearised formulae - reality is quite complicated.

Image

Image
t
tah1 offline
Robot Builder
Robot Builder
Posts: 9
Joined: Fri Apr 24, 2009 2:08 pm

Post by shervin.emami » Tue Oct 27, 2009 5:10 pm

Post by shervin.emami
Tue Oct 27, 2009 5:10 pm

Those are interesting results, because according to the manufacturer's comment (http://www.robotis.com/zbxe/28424), the Torque measurement or "Present Load" value is not measured from torque or current, but is simply related to the difference between current position and goal position!

Also, according to a research study by Ethan Tira-Thompson (http://www.shervinemami.co.cc/dynamixel_study_by_ett.pdf), Dynamixel motors return the motor position within about half a degree of error and at the full communication speed, but motor speed and "Present Load" torque readings only update every 130ms (just 7 times per second!) and aren't nearly as accurate (roughly 10% error and have dead-zones). Notice that on the final page of the report, Ethan mentions that they have been able to trick the controller into reading 3 sensor values within a single 16ms cycle (therefore running 20 motors at roughly 8 frames per second instead of 3).

(I've got a bit more info on my Dynamixels at my website http://www.shervinemami.co.cc/)

Cheers,
Shervin.
Those are interesting results, because according to the manufacturer's comment (http://www.robotis.com/zbxe/28424), the Torque measurement or "Present Load" value is not measured from torque or current, but is simply related to the difference between current position and goal position!

Also, according to a research study by Ethan Tira-Thompson (http://www.shervinemami.co.cc/dynamixel_study_by_ett.pdf), Dynamixel motors return the motor position within about half a degree of error and at the full communication speed, but motor speed and "Present Load" torque readings only update every 130ms (just 7 times per second!) and aren't nearly as accurate (roughly 10% error and have dead-zones). Notice that on the final page of the report, Ethan mentions that they have been able to trick the controller into reading 3 sensor values within a single 16ms cycle (therefore running 20 motors at roughly 8 frames per second instead of 3).

(I've got a bit more info on my Dynamixels at my website http://www.shervinemami.co.cc/)

Cheers,
Shervin.
shervin.emami offline
Robot Builder
Robot Builder
Posts: 7
Joined: Tue Oct 20, 2009 2:55 am


6 postsPage 1 of 1
6 postsPage 1 of 1
cron