Recent Changes - Search:

TEAMS Academy Wiki

Explore TEAMS!
for visiting sophomores & juniors

Robotics

EnvBioTech

Bat Design

Assistive Tech


Students


Instructors

TEAMS Forum

TEAMS Calendar

TEAMS Web Site

Wiki Info

edit Student.SideBar

MichaelHarradonLab5

Attach:HarradonLab5.jpg Δ

Lab 5: Wall Following

Introduction

The goal was to program the robot to follow a wall using one or more distance sensors. It was designed to travel from a stairwell around the edge of a hallway and into a room with the door ajar. The robot was also intended to stop moving if one of its cliff sensors went off. Buttons are used to reactivate the robot if one of these cliff sensors goes off.

Method

My method for following the wall was based on integral control. There were 3 set ranges for distance that directed the robot's motion. The closest range caused the robot to turn away from the wall, the middle range caused it to go straight, and the farthest range caused it to turn in to the wall. The robot was set to increase the sharpness of its turn towards or away from the wall if it remained in the close or far ranges for a significant amount of time. This allowed it to make slight adjustments if it was nearly on course and severe adjustments if it was near collision. A distance sensor facing forward was used as a backup to prevent collision in the event of sharp turns. Debugging was performed by setting the lights to change based on what direction it travels in.

Problems

There were a number of problems encountered as the program was developed. Originally I had intended to use the cr8_drive(); command to implement my integral control by varying the radius of the turn. I ran into a number of inexplicable dilemmas with this method, however, and instead switched to using the cr8_drive_direct(); command. This was done by making one wheels velocity inversely related to the other wheel. This was preferable in the end because I did not have to interpret the mathematics involved with the radius argument, which become especially confusing if the radius is negative. I also ran into a number of issues when the robot moved too close to the wall and the signal was read as being much further away. This was solved by moving the sensor inwards on the robot, as suggested on the manufacturers website. The robot also would run straight into walls in corners, but this was fixed with the addition of the front facing sensor as previously mentioned. Attaching the distance sensors was also a hassle. It would be beneficial if this was improved. A sensor with a wider range would also be useful, as it would allow for a larger buffer between the wall and the robot, theoretically decreasing the chance of collision in unusual settings.

Conclusion

In conclusion, the wall following program I created was a success. Although there could have been minor improvements made to the program, there were no collisions and the robot successfully traveled the path lain out from the stairwell to the computer lab.

Code Δ

Flow Chart Δ

Edit - History - Print - Recent Changes - Search
Page last modified on January 23, 2008, at 08:46 PM