KaikeWesleyReis / ePuck-navigation-control

Algorithm that improves ePuck navigation system allowing obstacle avoidance and keep on line!

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ePuck Challenge

This code was created using Lua programming language in V-REP Software. The challenge consist in create a navigation system to ePuck robot model allowing him to:

  • start from Start Point
  • follow a black line as route
  • avoid any obstacle present in his route
  • follow the black line after avoid a obstacle
  • finish when ePuck gets to Ending Point

PS: To works correctly, is necessary to start with the light sensors in a white field and with the robot looking to the line!

Test Environment

Here you can see the environment where was developed the navigation system: env

Obstacles Type, Start Point and End Point

The Start Point proposed and the End Point respectively:

startend

And here there are the two main types of obstacles:

obstacles

To improve my navigation system quality, several combinations from those obstacles types was placed in the environment, increasing the difficulty for ePuck to avoid obstacles and come back to your route.

Challenges to create this navigation system

  • Learn Lua programming code to perform this task;
  • Improve my knowledge related to if-else,if-else if and if-else if-else. A wrong use of those statements can break your navigation system decision management;
  • Understand how the proximity and light sensors works in ePuck model as your engines located the in left and right wheels;
  • Find online material related to v-rep software to help in this task;
  • Start to understand how to do reverse engineering in programming codes.

Main Improvements compared to Demo Navigation System

  • A well organized code with commentaries and a explicit declaration of hyper parameters from navigation system;
  • A more precise division of routines: Look for a line, follow the line in a normal way or after avoiding a obstacle and so on. Different from the demo;
  • Stop ePuck by distance to End Point;
  • Follow line algorithm in general was improved compared the old one;
  • Avoid Obstacles was improved and tested with different combinations in the environment;
  • A good routine to get the line after avoiding a obstacle;
  • Vision's Treshold Improvement.

Possible Issues and Community help

Well, the code is not perfect. There are some issues that can happen:

  • Putting two obstacles too close i.e. you don't give a space to ePuck to get a line after avoiding the first obstacle and then avoid the second obstacle can break the routines;
  • The routine to get a line when start doesn't respond well to some situations, in fact this was the most problematical part to create this system. The best scenarios where works fine is when the robot get diagonally over the the line. Unfortunaley I took two days trying to solve this issue and I did not figure out how can I take perfectly the line, independent of any angle. (SOLVED AT VERSION 3)

About

Algorithm that improves ePuck navigation system allowing obstacle avoidance and keep on line!