Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

A straight going wheeled robot problem

Status
Not open for further replies.

m_saeed_soliman

New Member
Hi,all
There is a big problem i faced while constructing a Robot , me and my friends will participate in a competition with it.
The problem is that our robot walks with two wheels actuated with two DC motor in the Back,
while there is a free wheel in the front which can rotate freely if the back wheels force it.
The robot walks as ordinary.To go straight , back wheels work forward , totally reverse for backward. One wheel forward and the other backward for going left or right.
The problem is that when the robot wants to go forward or backward for a long distance , it cannot walk straight ahead, because the back motors are of different speeds.
They are typical motors (Toshiba motors , 180 RPM , 24VDC) , but the motors are used so they have bit different speeds.This makes going forward or backward in a straight manner almost impossible.
One side of the robot is faster than the other side.
We suggested a solution using line tracking sensor and already made it.
It worked well, but it corrupts very quickly and doesn`t make a very good performance.
I feel there are for sure other solutions.
So if any one can help me , please do.
How can the robot walk is a straight line having two motors with different speeds in the back?
 
Last edited:
hi,
Can you post a picture of the robot.?

Its difficult to imagine its movements, it sounds that its not actually walking.??
 
Last edited:
if the motors have "different speed" when supplied with same voltage, the only thing you can do is to make encoder and use uC to maintain the same speed on both motors. There is gzilion different ways of making encoder, you can attach a small magnet to the wheel and reed relay, you can use optic sensor .. but in general, you have to make encoder and control the speed of the motor from uC... How do you drive your motors? Do you only have on/off or you use PWM to control the speed ?
 
hi,
Can you post a picture of the robot.?

Its difficult to imagine its movements, it sounds that its not actually walking.??

thank you after all.
but my robot is wheeled not walking.
i am sorry if i used walking , it was a mistake


and also thank you ,arhi ,for your help. i used to use only on/off control in the robot , but i can make pwm , i will probably try it
 
Last edited:
Very common problem. The solution is to put encoders on the wheels (or on the motors/gearbox) and count pulses. Your controller can then slow the faster wheel to match the slower one. But even better, when you have encoders you can tell reasonably accurately how far your robot has gone, how far which way it has turned and things like that. It's not perfect, but you can do some dead reckoning navigation with it. Wheel slippage will introduce error, so don't rely on it for anything that needs to be dead on.

Search Google for "odometry robot encoder":
odometry robot encoder - Google Search

Some commercial products:
Encoders and Disks - RobotShop.ca
 
Last edited:
thank you futz for your answer.
this really will help me , i am sure.
but , me and my friends have recently thought of another idea which we did not try yet.
it is to control the free wheel in the fornt by a DC motor.
A DC motor is firmed to it . so when going straight forward or backward the motor keeps the free wheel exactly in the middle , so that any difference of the speeds of the motors in the back will not affect the robot's motion because the front wheel will keep the robot moving exactly straight forward.
when going left or right , the front DC motor directs the front wheel to a 45 degree(or any other angle , by experiment) left or right using an encoder . at the same time , the back wheels work one forward and the other backward to make the neccessary turning, left or right.
hope you give me your opinions about this idea.
 
Might work, but it's gonna be two against one (wheels). :D Can the one steering wheel overcome the force of the two rear wheels trying to push it into a turn? I guess you'll find out soon. Better put some extra weight on that steering wheel. :p

i think it will work.
i know someone who tried a similar idea . he said "my robot can walk over than 100 m in a perfect straight line"
so i think it might work
 
I agree with 3v0 but I would change it a bit, with 2 wheels doing the steering you have to make joints, not easy, you can go with single motor to drive back wheels (both of them, so they rotate at same speed) and single steering wheel at front that you can attach dc motor to turn left/right. you will get same action as with 3 wheel car/bike. You will loose some of the steering power as you will loose ability to turn driving wheels in opposite direction but that is not that bad after all. Anyhow, I still suggest you go with encoders, encoders are not that hard to make and you will definitely need them in future. You can check out this link for more info:
 
thank you all for your help
but this arrangement of using one motor in the back will loose me some ability to turn as you mentioned
and i cannot loose it in this situation
so , it will not work with me
there is one solution using one motor in the back and not loosing the ability to turn
but it involves a lot of gears so it is very hard to do
hope you give me more ideas
 
Last edited:
It could look like this, without feedback no system can go in a perfect straight line. Even the system below assumes the servo is centered when it's going straight.
**broken link removed**
 
... Add an accelerometer to it... :rolleyes:
If you detect acceleration on the incorrect axis, adjust it by turning left or right slightly...
 
i think the simplest solution would be to add a potentiometer in parallel with the strongest motor and equalize it with the weaker one. if they are identicle then maybe you should check your cuircuit to see if there is any flaws that would cause one motor to move faster. is this robot going to be used for heavy loads (i.e. battlebots or FIRST). you could add a relay with that pot so when you turn it is disabled also
 
Last edited:
Status
Not open for further replies.

Latest threads

New Articles From Microcontroller Tips

Back
Top