Embedded Motion Control 2017 Group 1

From Control Systems Technology Group
Jump to navigation Jump to search

Group Members

Name: Student id:
Karel van de Plassche 0653197
Joey Hendriks 0773023
Ioannis-Dionysios Bratis 0978560
Jad Haj Mustafa 0979428
Jip Reinders 0853301
Juliana Langen 0988532
Yanick Douven Tutor

 

Initial Design

Link to file: PDF

Overview

In this article a summary of the embedded software design is presented.This software is used to solve the following problems:

  1. Corridor challenge: The robot should drive through a corridor and take the first exit.
  2. Maze challenge: The robot should drive through a maze and find the exit.

Requirements/Specifications

Type Requirement Specification
General - Be able to 'solve' any given configuration of walls.

- Do not bump into walls: Detect walls, define minimum distance.

- Move autonomously: Detect openings, junctions, crossings, dead ends, open spaces etc. and make optimal decision.

- Software easy to set up: As defined on general wiki page.

- Only one executable is allowed. The software will be updated on the robot before the challenge starts.

- Do not stand still too long: Detect time that robot is standing still, initiate movement after set time.

- Stop movement after task is achieved.

- The maximal translational velocity of PICO is 0.5 m/s.

- The maximal rotation velocity of PICO is 1.2 rad/s.

- Pico should not stay still for more than 30 seconds.

- Complete task within 2 attempts.

- The LRF has a width of about 4 rad (from -2 to 2 rad), with a resolution of about 1000 points.

Corridor - Finish the corridor challenge fast: Detect opening either on left/right, take turn, stop after finish line. - Back wheel across finish line within 5 minutes. Terminate afterwards.
Maze - Finish the maze challenge fast: Navigate maze, find exit, stop after finish line.

- Be able to reconstruct maze.

- Determine difference between dead end and door.

- Deal with open spaces.

- Deal with loops.

- Be able to open doors.

- Back wheel across finish line within 7 minutes. Terminate afterwards.

- Decide where to go when at a T-junction or crossing.

- Ring a bell and wait at a dead end to check for a door.

Functions

Function Description
Low-level initialize Initialize actuators
readSensors Read the odometer and laser data
turnLeft Turn 90° left
turnRight Turn 90° right
turnAround Turn 180°
stopMovement Stop omniwheels
driveForward Accelerate or decelerate
driveBackward Drive backward
driveLeft Move left
driveRight Move right
ringBell Ring the bell of the door.
Mid-level detectWall Detect a wall (~30cm)
detectCorner Detect a corner (crossing of two walls)
detectDeadEnd Detect a dead end
detectFinish Detect the finish line
detectOpenSpace Detect an open space
detectOpenWorld Detect if in the open world (like the maxe exit)
detectTJunction Detect a T-junction (where three corridors meet)
detectCrossing Detect a crossing (where the four corridors meet)
shutDown Terminate robot, if required
checkDoor Send a signal and wait x seconds
chooseCorridor Choose which corridor to take
High-level stayBetweenWalls Stay in the center of two walls
createMap Build map of surroundings
trackPath track the path through the map
detectLoop Detect a loop in the maze
detectStack Detect if stuck
optimalDecision Decide next move based on given algorithm

Components

The PICO robot consists of multiple components which are listed below:

  1. Sensors:
    1. Laser Range Finder (LRF): Through the LRF on the PICO one can detect the distance to an object.This is accomplished by sending a laser pulse in a narrow beam towards the object and measuring the time taken by the pulse to be reflected on the target and returned to the sender.
    2. Wheel encoders (odometry): Through the encoder one can obtain the speed of the wheels which can be used to control PICO based on the provided data.
  2. Actuators:
    1. Holonomic base (omni-wheels)
    2. Pan-tilt unit for head
  3. Computer
    1. Ubuntu14.04
    2. Intel I7



Interfaces

Specifications interfaces.png