At first i tried DC gear motors with H-bridge and PWM signal for speed control but that was a disaster. because they were not able to produce enough torque and speed controlling was very tough. The lowest possible speed with L298N was not enough for me. driving the bot straight was also tough.
So, i tried stepper motors. But they take too much current (one 2BBYJ-48 unipolar stepper eating up two fully charged 250mah 9V batteries in around 1hour) and i don't need that much accuracy and holding torque they provide. i just need to drive my bot of max weight 2 kg from coordinate to coordinate where each coordinate is a 3cmx3cm square on the floor(the bot is 21cmx21cm and i want the bot's center point to reach the coordinate square).
now what kind of motors should i use? the bot will have a raspberry pi and a stepper/servo driven robotic hand on it + a board with 4 sonars at the top of the bot that will keep rotating continuously with a stepper. so i need a lot of horsepower on it. any suggestions for batteries will be appreciated too.