Yael Ben Shalom
  • Projects
  • Platforms
  • Skills
  • About
  • Contact

Robot Navigation and Control

C++ | Autonomous Vehicle | Motion Planning | Path Planning | Feedforward Control | Arduino
December 2017 - January 2018

Description

In this project, I build a wheeled robot and programmed it to navigate autonomously through a series of tasks, Using Arduino, motors, encoders and distance sensors.

Take a look at the project on my GitHub page.

The vehicle

The autonomous vehicle


Tasks

The main goal was to successfully pass a series of tasks in an obstacle course, as fast as possible:

  1. Maze navigation and exploration - Navigating through a maze
  2. Angle control - Driving through changing-slope path, keeping constant roll
  3. Distance control - Following curved wall, keeping constant distance from it
  4. Velocity control - Driving on a changing-gradient slope, keeping constant speed
  5. Feature detection - Locating and reaching the finish line flag


Task 1 - maze

Task 2 - changing-slope

Task 3 - following curved wall

The autonomous vehicle in the obstacle course


System Description

I used several components to control the robot motion:

  • Control - Arduino Mega 2560 R3
  • Motors & encoders:
    - PMW motor and encoder - One on each rear wheel to activate and control the motion
    - Servo motor - Located on the front of the vehicle and used to rotate the TOF sensor to desired scanning angle
  • Sensors:
    - IR sensor - One on each side of the vehicle to measure side distance
    - TOF (Time of Flight) sensor - Assembled on the servo motor to scan the surrounding space
    - US (ultrasonic) sensor - Located on the top of the vehicle to measure distance from objects above the vehicle
    - IMU 9250 (9 DOF) - Measures orientation (Gyroscope) and acceleration (Accelerometer). Compass is not in use
  • Visual indication - Led matrix, Indicates mission number and mission success/fail

The system

The system