19

Vision Based Autonomous Mobile Robot Navigation

  • View
    1.229

  • Download
    5

Embed Size (px)

DESCRIPTION

Using Optical flow as primary source, our designed robot navigates by avoiding obstacles and reaches its destination.

Citation preview

Page 1: Vision Based Autonomous Mobile Robot Navigation
Page 2: Vision Based Autonomous Mobile Robot Navigation

To build a vision based autonomous mobile robot that can navigate to a desired destination avoiding obstacle on its path

Goal/Objective

2

Page 3: Vision Based Autonomous Mobile Robot Navigation

Features of our Robot

Low cost

Light weight

Low power consuming

Vision based

Autonomous navigation capability

Equipped with a single onboard computer Raspberry Pi for its computation and Arduino Uno to drive the motors of our robot

Two wheeled robot platform

Comparatively small in size

3

Page 4: Vision Based Autonomous Mobile Robot Navigation

Figure 1: Design of our Robot Platform

Our Designed Robot Platform(Credit: Rezwan-Al-Islam Khan)

4

1

2

3

4

1

2

3

4

1. Webcam2. Raspberry Pi3. Arduino Uno and Adafruit Motor Shield4. Battery Pack

Page 5: Vision Based Autonomous Mobile Robot Navigation

What is Optical Flow

Optical flow is the relation of the motion field: the 2D projection of thephysical movement of points relative to the observer to 2D displacement ofpixel patches on the image plane.

Common assumption:

The appearance of the image patches do not change (brightness constancy)

5

( , ) ( , 1)i i iI P t I P v t

Figure 2: Optical Flow Illustration

Page 6: Vision Based Autonomous Mobile Robot Navigation

My Optical Flow program

6

Figure 3: Car in motion (Derivation of optical flow from sequence of frames)

Page 8: Vision Based Autonomous Mobile Robot Navigation

Definition of optical flow

OPTICAL FLOW = apparent motion of

brightness patterns

Ideally, the optical flow is the projection of thethree-dimensional velocity vectors on the image

8

Page 9: Vision Based Autonomous Mobile Robot Navigation

Hybrid System

Feature Extraction & TrackingObstacle Avoidance using Balance Strategy + Time to

Contact (TTC)

Rapid development plan

Our Work Strategy

9

Page 10: Vision Based Autonomous Mobile Robot Navigation

Grab Frame

Detect Features

User Input

Grab Frame

Track Features

Calc/Draw Optical Flow

Calc Steer Signal

Not enough features?

Steer

Detect Features

Steer Sig > Threshold

RS 232

RS 232Yes

No

Flow Chart

10

Page 11: Vision Based Autonomous Mobile Robot Navigation

How it works?

First the robot extracts and tracks good features usingOpenCV’s goodFeaturesToTrack() method.

When the robot is in motion, the onboard RaspberryPi computes optical flow from successive framecapture of the webcam using OpenCV’s robust APIsuch as calcOpticalFlowPyrLK() method

Then we measure motion estimation using BalancedStrategy and avoid collisions by calculating Time ToCollision (TTC)

Then the robot is steered via Arduino Uno’s controlsignal obtained from these informations.

11

Page 12: Vision Based Autonomous Mobile Robot Navigation

Communication Protocol (TTY)

12

TTY is a communication protocol for serial communication.

Using node-serialport is pretty easy because it is pretty basic. It provides you with the building block to make great things.

Installation:

Desktop (Debian/Ubuntu) Linux:

sudo apt-get install build-essentialnpm install serialport

Page 13: Vision Based Autonomous Mobile Robot Navigation

Communication Protocol (TTY) (cont.)

13

Raspberry Pi Linux:

1. Log into your Raspberry Pi via Terminal

2. Issue the following commands to ensure you are up to date:

sudo apt-get update sudo apt-get upgrade -y

3. Download and install node.js:

wget http://nodejs.org/dist/v0.10.12/node-v0.10.12-linux-arm-pi.tar.gz tar xvfz node-v0.10.12-linux-arm-pi.tar.gz sudo mv node-v0.10.12-linux-arm-pi /opt/node/

4. Set up your paths correctly:

echo 'export PATH="$PATH:/opt/node/bin"' >> ~/.bashrc source ~/.bashrc

5. Install using npm, note this will take a while as it is actually compiling code and that ARM processor is getting a workout.

npm install serialport

Page 14: Vision Based Autonomous Mobile Robot Navigation

Communication Protocol (TTY)

To Use

Opening a serial port:

var SerialPort = require("serialport").SerialPortvar serialPort = new SerialPort("/dev/tty-usbserial1", {baudrate: 57600

});

For more details visit:

https://github.com/voodootikigod/node-serialport

14

Page 15: Vision Based Autonomous Mobile Robot Navigation

http://www.cl.cam.ac.uk/~db434/raspi/images/raspberry_pi.JPG

Hardware:

1. Webcam

2. Raspberry Pi

15

Hardware and software

Page 16: Vision Based Autonomous Mobile Robot Navigation

5. DC Battery

3. Arduino Uno

http://arduino.cc/en/uploads/Main/ArduinoUno_r2_front450px.jpg

4. Adafruit Motor- shield, DC Motor and Stepper Motor

16

https://www.adafruit.com/images/medium/mshield_MED.jpg

Page 17: Vision Based Autonomous Mobile Robot Navigation

17

Software:

1. OpenCV 2.4.5 (www.opencv.org )

2. Microsoft Visual Studio 2012/ CodeBlocks

3. WinAVR ( www.winavr.sourceforge.net )

4. RS232 Terminal Program (http://realterm.sourceforge.net/index.html#downloads_Download)

Page 18: Vision Based Autonomous Mobile Robot Navigation

Tests, Implementation and Problems

Tested some software implementation on Windows 7 platform using MSVS 2012, OpenCV

But failed to port these test codes onto Raspberry Pi

Robot Navigation using keyboard commands has been a success

However, autonomous navigation was not achieved

There were some hardware issues from time to time specifically with the onboard battery pack

18

Page 19: Vision Based Autonomous Mobile Robot Navigation

19

THANK YOU