# Embedded Motion Control 2017 Group 3 / Initial Design

(Difference between revisions)
 Revision as of 19:35, 19 June 2017 (view source)S162167 (Talk | contribs) (→Door Supervisor)← Older edit Revision as of 19:38, 19 June 2017 (view source)S162167 (Talk | contribs) (→Motion Supervisor)Newer edit → Line 88: Line 88: 1-'''Avoid Collision:''' 1-'''Avoid Collision:''' + In order to avoid bumping into walls, PICO keeps a safety margin from the wall and align to the center of the corridor by calculating center point using the distance to the left and right. Alignment is done along with forward speed. In order to avoid bumping into walls, PICO keeps a safety margin from the wall and align to the center of the corridor by calculating center point using the distance to the left and right. Alignment is done along with forward speed. 2-'''Turn Corner:''' 2-'''Turn Corner:''' + When algorithm for turning at corner is activated, there will be only angular velocity send to . ie, velocity in X and Y direction will be Zero until the turning at corner is finished. PICO will be taking a 90 degree turn either on left or on right. When algorithm for turning at corner is activated, there will be only angular velocity send to . ie, velocity in X and Y direction will be Zero until the turning at corner is finished. PICO will be taking a 90 degree turn either on left or on right.

## Revision as of 19:38, 19 June 2017

This page is a part of the Embedded Motion Control Group 3 of 2017.

## Overview

There are 2 main goals for PICO (robot).

1. Corridor competition: To navigate through a corridor and take the first exit (that can be either right or left side of PICO) without colliding with the walls.
2. Maze competition: To solve an unknown maze within given time limit, which has doors to be opened and exit the maze without touching any walls.

The overall Initial design of the project is mentioned in the following section:

1. Requirements
2. Specifications
3. Functions
4. Components
5. Interfaces

## Requirements

The following requirements are listed for the robot (PICO) to complete maze successfully:

1. PICO should not touch the walls or any other obstacles in the maze at any time instant.
2. PICO must operate fully autonomous (i.e. without input from the team).
3. PICO should not be idle for more than 3 seconds from the start of program unless it has passed the exit.
4. PICO must be able to detect available space using the Laser Range Finder (LRF) and move to the detected space according to the path finding algorithm (this plans the motion).
5. PICO must be able to find the exit within the provided time (≤ 7 sec for maze and ≤ 5 sec for corridor).
6. PICO must be able to detect the objects (dead ends) that have a high probability of being a door.
7. PICO must be able to open the door in the maze and pass through it.

## Functions

Initial Control Hierarchy

In Initial design, there are 6 functions which has a 'Main Loop' and other separate modules which are called as 'supervisors'. Each supervisor is unaware of what is there inside the other supervisor and there are communicated only through interfaces. This approach makes software architecture simpler, editing easier and error counts lesser. All functions are listed below:

1. Main Loop
2. Path-finding Supervisor
3. Door Handling Supervisor
4. Wall Detection
5. Motion Supervisor
6. Actuator Supervisor

### Main Loop

Main loop is where

1. IO layer is initialized.
2. Rate of loop is set.
3. every functions is initiated, arranged and called.
4. Communication structs are initialized and interacted to different supervisors.
5. Relevant initial movements are provided.

### Path-finding Supervisor

Path-finding supervisor is the brain of PICO. It make relevant decision for motion throughout PICO's travel.

1-Pledge Algorithm:

This algorithm is mainly used in Maze challenge to solve the loop structures inside the maze. When an obstacle like loops are present, PICO continue the wall of obstacle until the sum of turns it took become zero. When the rurn counter sum is equal to zero, Pledge algorithm directs PICO to another path which make it to detach from the loop. The input to this function is the wall information which includes front, left and right side space information. Using the inputs, the algorithm sets a motion goals and then PICO moves to achieve those.

2- Cornering:

Cornering concept is introduced mainly for Corridor challenge. If space in right or left side is detected, this function instruct for a turn by changing bool turn_corner to true and wait until the motion supervisor is finished turning to set back the turn_corner to false.

### Door Supervisor

1-Ring Bell:

If detected dead-ends, actuate the bell by <io.sendOpendoorRequest()> and activates rest of relevant algorithms of door-handling.

2-Standstill:

Wait for 5 sec at every dead-ends. The times is counted using loop counter which resets to zero when left from dead-ends. If there is no change in front distance after 5 sec, the motion algorithm is continued.

3-Door opening:

The opening of door is detected by the change in the front distance. Once the door is opened fully, PICO uses motion algorithm to move through open door path.

### Wall / Path Detection

1-Read LRF data: Gets raw data from the LRF sensor

2-Filter LRF data: Reduces noise from raw LRF data and splits it into 3 directions (left, right and front).

3-Transform data: Calculate one distance approximation for the 3 directions by finding mean of distance in particular direction.

4-Space detector: Calculate for all directions if space is there to move in that direction by checking if the distance is more than the threshold given.

5-Data sharing: The relevant data like distances, angles etc are provided to communication structs.

### Motion Supervisor

1-Avoid Collision:

In order to avoid bumping into walls, PICO keeps a safety margin from the wall and align to the center of the corridor by calculating center point using the distance to the left and right. Alignment is done along with forward speed.

2-Turn Corner:

When algorithm for turning at corner is activated, there will be only angular velocity send to <io.sendBaseReference>. ie, velocity in X and Y direction will be Zero until the turning at corner is finished. PICO will be taking a 90 degree turn either on left or on right.

### Actuator Supervisor

1-Steady PICO: Keep the front of the PICO aligned to the direction of movement.

2-Omniwheels handeling: Set speed and angle of Omniwheels according to received data.

## Interfaces

The interfaces are defined as the movement/flow of data between the functions that are defined in above section. The different interfaces are described below.

1- Sending information about current state, which is the distance to walls at -90 degrees, 0 degrees and 90 degrees from the center point and whether it has potential from moving forward and turning left or right. <Struct with float values and booleans>.

2- Forward information about potential movement.<Struct of Boolean>.

3- Forward information about wall distances.<Struct of floats>.

4- Turning command, which is either 1 (turning left) or 2(turning right). <integer>.

5- Send information about the possibility of a door.<Boolean>.

6- Confirmation that door handling is finished <Boolean>.

7- Setting the values for actuator.<Struct of floats>

## Components

1- Sensors: Laser Range Finder (LRF), Odometry (Wheel Encoder).

2- Holonomic base (omni-wheels): Maximum translational speed of 0.5 m/s , Max angular speed of 1.2 rad/s.

3- Embedded platform Computer with Ubuntu 14.04 on an Intel i7 (other specifications are unknown)

4- Bell: To produce sound from PICO so as to open the door.

## Documents

The initial design document File:Emc-design-specification.pdf briefly indicates the approach taken towards the problem of solving the maze by the PICO robot, the algorithm used and the system design.

The slides for the initial design presentation can be found here: File:Group3 2017 Initial design presentation.pdf