Autonomous Collision Avoiding Scout

The goal of this project was to design and construct a small-sized robot capable of autonomously moving about an indoor room while avoiding any obstacles it may encounter. The robot utilizes two ultrasonic sensors mounted on each end that provide sensory data for both left and right sides. On event of encountering an obstacle, the sensors determine the direction in which motion seems more reasonable and turn according. The robot keeps turning until the obstacle is out of sight, after which it resumes its default operation of moving straight.

The project was divided into two separate independent problems, the sensors and the motors. The sensors served to provide the input side of things. A separate class was constructed using an Arduino library (Newping), in which two separate sensors were instantiated. The two objects corresponded to the left and right sensors on the rover. A maximum distance was set on the sensors such that any reading beyond that distance returned a value of 0. If both the sensors read 0, the rover moved straight. If some other reading was detected on the sensors, first any value of 0 was maximized to the highest possible int value (approx. infinity). Then the class returned a direction (left or right) based on whichever sensor had a higher value. Hence, the sensor class produced three outputs: Left, Right or Straight.

The motors executed the output of the program. Throughout the state machine, the program constantly pinged the sensor class to obtain a value for direction of motion. If the value was straight, the program was set in a state in which both the motors of the rover were set to high. If the value was left, the program moved to a state in which the left side was high, and the right side was low. If the value was right, the motor was set to a state in which the right side was high, and the left side was low. High corresponded to a certain set velocity in the "forward" direction. Whereas low corresponded to the same velocity in the opposite direction.

Hence, with the constant interaction between the sensors and the motors, the robot was able to perform the required function. All objectives were accomplished.

ECE3724 Bonus Project Presentation

Grading: 50 points

  1. Scope -- good; encompasses hardware and software, a reasonably challenging problem.
  2. Functionality -- excellent. Can turn left, right, or drive forward based on sensed obstacles.
  3. Hardware complexity - good. Integration of chassis, sensors, processor.
  4. Software complexity - excellent. State machine control, object-oriented architecture.
  5. Presentation - excellent.
  6. Practicality / usefulness / fun factor - good