Skip to content
This repository was archived by the owner on Nov 6, 2020. It is now read-only.

vigenere23/PSAR

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Robot Backend Frontend

Partially Supervised Autonomous Robot (PSAR)

obstacle detection

Obstacle detection. The yellow circle marking the pillar's base is entirely calculated from the artificial vision algorithm.

PSAR is a small robot built to do many tasks. It is mounted on a 4-wheel base equipped with a small camera and a gripper. There is also a top-view camera (called the World camera) to help with pathfinding. The robot is said to be partially supervised because its decisions are greatly help by 2 external factors : a top-view camera and aruco markers.

The main goal is to take 3 pucks and place them on the corners or a square. The pucks to take, the deposit order and the corners on which to deposit the pucks are all determined by various detection tasks :

  • Calculating a resistor value by analyzing the circuit's electric current and voltage
  • Determining the orientation of a specific arrow from a set of 9
  • Determining the letter at a specific position from a set of 9
  • Determining the position of each stations on the table

Throughout the course, some obstacles (pillars) will be placed on the table. The system will have to detect them and find a path to dodge them. The overall goal is to complete as many rounds as possible in only 10 minutes. There is also a set of information to be displayed in real-time while the robot performs its tasks, like the internal state of the backend and robot, the consumption levels, the planned and real paths, etc.

Unfortunately, due to COVID-19 measures of prevention, the laboratory of experimentation was closed mid-semester, which prevented us to collect data and perform tests that were necessary for the completion of the project.

You can view the full report here.

Structure info

The complete project is seperated into 4 sub-projects :

  1. backend (running on the main computer)
  2. frontend (running on any device)
  3. robot (running on the RaspberryPi)
  4. embedded (running on the micro controller)

For more general info about the project, the standards and the tools, PLEASE visit the wiki!

Quick setup

If your console is bash based, you can simply run the setup script.

./scripts/setup

Main software contributors

Work I've done

  • Architecture (simplified clean architecture) in all subprojects
  • Sequence system with autonaumous tasks (with failure handling and retry system)
  • Obstacle and robot detection
  • Pathfinding algorithm and optimization
  • Socket communication
  • Enforcement of SOLIDT principles
  • Automatic dependency injection
  • Optimizations in CI pipeline
  • Frontend Vue setup and configuration (with optimized Vuetify plugin integration)
  • Small part of UI design (sequence viewer and top bar)
  • Assisted DODRO35 as a co-chief of the team
  • Main reviewer (along with DODRO35)

Known caveats

  • There is a ton of missing tests. With the human ressources and the time available, we decided to put more effort into maximizing the number of features requested and relied on manual testing while developing.
  • The frontend only has a small portion actually connected to the backend and the design could be further simplified and better decomposed into components (instead of relying on global classes)

Additionnal screenshots

interface

Interface

pathfinding

Pathfinding

pathfinding comparison

Pathfinding : comparison between search grid creation algorithm (me) and path finding algorithm (library)

letters detection

Letters detection

robot

Robot (upside-down)

robot-moving

Robot in action

About

Autonomous robot with intelligent sequence system and real-time event management

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •