2 DC motor not Same Speed

Good morning mates I have an arduino mobile robot using 2 DC motor I use 6 different controls LDR, Ultrasonic, IR, RF Bluetooth, Line Tracker my problem is when going forward I noticed that the speed of the left side motor is slower that the right side causing it to move to its left.
how can I fix this problem? I hope anyone can help

by the way im using DAGU 6v DC Geared Motor I attached the picture for your reference


You are running one motor forwards and the other backwards so they go at slightly different
speeds (and there's variability in manufacture too). Most brushed DC motors are optimized for
one direction (the brush angle is advanced, like advancing the timing in a car engine).

The only way to get good dead-reckoning is with wheel-encoders, so you can run a feedback loop
to keep the wheels in step. You then only have to worry about wheel-slip and the tyres being
the same diameter.

I would have thought that stepper motors might be better for this application - they're precisely controllable for speed and angle.



Stepper motors are 1 to 2 orders of magnitude more power hungry, so usually precluded as a
sensible option for an automonous robot.