Notes on encoder resolution for velocity control of motors

The simplest velocity estimation method is the Euler approximation that takes the difference of two sampling positions divided by the sampling period. Typically the position measurements are taken with encoders or resolvers which contain stochastic errors which result in enormous noise during the velocity estimation by the Euler approximation when the sampling period is small and the velocity low [1] .

Image result


Different alternatives have been tried which utilise more backwards steps to reduce the noise but introducing a small delay. On [3]  a first order adaptive method is shown which is able to vary the backward steps depending on the speed. Also, on [2] it has been found that 3 steps is the best for a sampling rate of 2500 Hz in their experiments with an encoder of 655360 pulses per revolution. They also implemented a Kalman observer and non-linear observers, obtaining the same results than an averaging of the Euler formula. On [4] a Kalman filter is tested assuming a normal distribution of the position error. On [1] a dynamic method which varies the samples used for averaging depending on the speed is developed with very good results. For example, given a desired relative accuracy r_j of the velocity calculation, with encoder measurements by the formula below taken from [1] , it is possible to derive the required amount of time for obtaining a velocity measurement. This is assuming that the velocity is not calculated with two consecutive samples, but with two samples separated a certain number of backwards steps s_j in order to increase the velocity resolution. For an incremental encoder with a resolution R, if the position q(t) is sampled with a sampling period T, and for k = 1, 2, …, the discrete sampled position at
kT is given by θ(k). The relative accuracy is given by:


Where v_j is the real velocity and \hat{v_j} is the estimated with the measurements. For example, in order to obtain a relative accuracy of r_j= 2%, s_j = 100, i.e. 100 past pulses have to be traced back on the velocity calculation. If we want to achieve this with an encoder of 10.000 lines/rev, the elapsed angular space for 100 pulses would result to be: 3.6 °. With a motor running at 1 rpm, the required amount of time for completing that angular slot is 10 ms. This amount of delay is detrimental for a good bilateral performance.


[1] G. Liu. “On velocity estimation using position measurements”. In: Proceedings
of the american control conference,
Anchorage, AK May 8-10. 2002, vol. 2, pp. 1115-

[2] A. Jaritz, M.W. Spong. “An experimental comparison of robust control algorithms on a direct drive manipulator”. In: IEEE Transactions on Control Systems
Technology. 1996, vol.4, no.6, pp.627-640. doi: 10.1109/87.541692

[3]  F. Janabi-Sharifi, V. Hayward, C-S.J. Chen. “Discrete-time adaptive windowing for velocity estimation”. In: IEEE Transactions on Control Systems Technology.2000, vol.8, no.6, pp.1003-1009. doi: 10.1109/87.880606

[4] P.R. Belanger, P.Dobrovolny, A. Helmy, and X. Zhang. “Estimation of angular
velocity and acceleration from shaft-encoder measurements.”
The International Journal
of Robotics Research.
1998, vol. 17, no. 11, pp. 1225-1233

Tagged with: , , , , , , , ,
Posted in Actuators, Robotic devices, Robotics

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Follow me on Twitter
%d bloggers like this: