velocità e distanza percorsa della ruota con encoder

Salve a tutti,

scusate se posto, ma ho bisogno di chiarimenti che nel forum non ho trovato.
Sono abituato ad ottenere la velocità e la distanza percorsa in questo modo pur non essendomi mai chiesto se fosse corretto o meno:

void loop() {
  if ((millis() - millisOld) >= periodo){               
millisOld += periodo;                                   
wheelPosition = readLeftEncoder() + readRightEncoder();
wheelVelocity = wheelPosition - lastWheelPosition;
lastWheelPosition = wheelPosition;   
}

mentre ho trovato sul forum che la maggior parte usa questo:

rpm = (60/30)*1000/(millis() - timeold)*rpmcount;
v = ((rpm*6.28*0.25)/60)*3.6;
forum.arduino.cc/index.php?topic=353594.0

-Sono metodi equivalenti? il mio metodo è corretto?
-si può usare questa formula?

vel angolare x raggio = velocità
w x r = v e quindi
v=r x 0.10472

motore pololu 350 rpm a 12 volt, 30:1, 64 counts per revolution (64x29=1856 counts)

ruota pololu 144mm
quindi max_vel_ideale= 3500.0720.10472=2.6m/s-->circa 9 km/h ma il dato fornito sugli rpm è inteso in free-run quindi con un carico discreto come può essere il mio robot sono fortunato se arriva a 3-4km/h.

Grazie in anticipo a chi dovesse aiutarmi!