Society of Robots - Robot Forum

Mechanics and Construction => Mechanics and Construction => Topic started by: macbook on September 04, 2010, 10:14:45 AM

Title: motion detectors
Post by: macbook on September 04, 2010, 10:14:45 AM
I am making a vehicle bot and i need a sensor that can differentiate between "wheels and the bot moving" and "only wheel moving, bot not moving". For eg, the case where the bot is pushing against a wall, the wheel will continue to rotate but the bot wont be moving. Which sensor can be used for this purpose?
I'm already using an accelero but that will detect only the initial jerk on hitting the wall, wont be able to judge the bot's motion thereafter.
Thank you.
Title: Re: motion detectors
Post by: macbook on September 04, 2010, 10:29:22 AM
Or if there's a way i can do this with my accelero only, do tell me.
Title: Re: motion detectors
Post by: Metal Slug 2 on September 04, 2010, 10:37:15 AM
Rather than trying to distinguish whether or not your robot is moving + wheels moving or not moving + wheels moving, I suggest you simply scan the area with a proximity (distance) sensor.  have your robot set up such that when the distance reading on the proximity sensor reads a value lower than your set threshold (ie what you have calculated to be 10 cm lets say), your robot turns to the right.  When the distance reading from the sensor is greater than the threshold, have it move forward.

When it comes to available proximity sensors, I suggest either using an infrared (IR) rangefinder, or an ultrasonic rangefinder.
I would suggest using an ultrasonic rangefinder because is has a larger beam width than an IR rangefinder would have.
Reffer to this (http://www.societyofrobots.com/sensors_sharpirrange.shtml) for more info on IR rangefinders, and this (http://www.societyofrobots.com/sensors_sonar.shtml) for ultrasonic rangefinders.

If placed properly, an ultrasonic rangefinder, because of its wide beam angle, may be able to monitor the entire front end of your robot, while an IR rangefinder will only be capable of measuring distance from a single point on your robot...unless you 'scan' the area with the IR rangefinder by mounting it on a servo.  But thats another story (http://www.societyofrobots.com/robot_50_robot_sharpIR.shtml).

You can buy IR rangefinders from polulu.  I suggest this (http://www.pololu.com/catalog/product/1136) (4-30 cm range) or this (http://www.pololu.com/catalog/product/136) (10-80cm range)
And you can get a really cheap ultrasonic rangefinder here (http://www.seeedstudio.com/depot/ultra-sonic-range-measurement-module-p-626.html?cPath=84_90)

Edit: With the proximity sensor approach, an accelerometer will not be needed.

A side note: Trying to detect the hitting of a wall with only an accelerometer would be rather difficult.  If your robot decides to suddenly turn, that may cause enough jerking to put the same amount of force on the accelerometer as hitting a wall would, which in that case will trick your robot into thinking it hit a wall.  The worst part is, for accelerometer based navigation your robot actually has to Hit stuff, which is never a good thing...ok well sometimes it is  :D, but in this case it isnt.  The proximity sensor approach allows your robot to navigate without hitting things.
However, obstacles such as chair legs and coffee table legs etc. may be missed by an ultrasonic rangefinder because they are so thin they aren't detected.  This is where your accelerometer can play its part.
Title: Re: motion detectors
Post by: Razor Concepts on September 04, 2010, 01:13:08 PM
Or use a current sensor on the motor. If current spikes, the wheels are moving but are having lots of trouble (against the wall)
Title: Re: motion detectors
Post by: madsci1016 on September 04, 2010, 07:47:35 PM
the most simple solution is to have an encoded idle wheel, a wheel that's not powered, but still encoded. If that wheel isn't spinning, your robot is moving.

This is actually how the entire line of Irobot Roomba's can tell when they are caught up on something, like a wall or rug.