Skip to content

Exploratory mobile robot designed to avoid obstacles and keep itself from falling off things using Lego Mindstorms EV3.

Notifications You must be signed in to change notification settings

benjimr/Explorer-Mobile-Robot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 

Repository files navigation

Exploratory mobile robot designed to avoid obstacles and keep itself from falling off things using Lego Mindstorms EV3.

Explorer

Obstacle Avoidance

The robot used an ultrasonic sensor to measure distance to obstacles. The sensor was mounted to a motor. Upon detecting an obstacle in its path, it would stop and use the motor to sweep the ultrasonic sensor back and forth 48° either direction. (This angle was found to be the maximum angle due to a mechanical constraint to avoid detecting itself as an obstacle). Upon finding a direction in which there was no obstacle, the ultrasonic sensor would be reset to pointing forward, then an algorithm would be executed to find the variables required to turn the robot to the angle found using the two motors attached to the wheels.

Should this system fail, the robot was equipped with a touch sensor, which, if triggered would cause the robot to shutdown rather than keep driving itself in to an obstalce, to avoid any damage.

Cliff Avoidance

To keep itself from falling off cliffs(tables), we used two color sensors. While not specifically designed for this task, they proved quite capable in the absence of more ultrasonic sensors for distance measurement. The color sensors only detect color when very close to the surface of the object. When they are too far away it will return no color. Using this feature we mounted the color sensors on either side in front of the wheels, very close to the surface so that in normal operation they would report the color of the surface the robot was driving on, which could be ignored, then when either would go over the edge of the table it would report no color, which would then trigger the robot to stop immediately, backup and turn away from the edge.

A Key Challenge

Translating the desired turning angle in to parameters the individual motors connected to the wheels could use was one of the more challenging aspects of this project. Each wheel could be controlled only by setting a speed or a rotation about the wheel, as the motor had no concept of the other parts or configuration of the robot. This was solved by taking some measurements of the distance between the two wheels, i.e the radius, as well as their circumference. By treating one wheel as the unchanging center of the circle, the arc length could be calculated for the desired angle. Then, knowing the distance required to be traveled by the outer wheel, its circumference and choosing a set time we wanted it to take to turn (1 second), we could calculate the speed the wheel needed to be set to for it to make the turn to the desired angle. Of course this assumes the speed would be achieved instantly with no acceleration period, which, in reality is not true. However, we found that with the speeds, timings and angles we were working with, it always proved to be accurate to within a degree or two, which was even more accurate than we were expecting given the limitations of the technology used.

A demonstration can be seen here. Note this video was never intended to be shared and the project has since come to an end and the robot has been dismantled, as such this is the only video that exists of it, which doesn't show each of its features clearly.

About

Exploratory mobile robot designed to avoid obstacles and keep itself from falling off things using Lego Mindstorms EV3.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages