multi-robot behavioural algorithms implementation in khepera iii robots david arán bernabeu...

19
Multi-Robot Behavioural Algorithms Implementation in Khepera III Robots David Arán Bernabeu Supervisors: Lyuba Alboul Hussein Abdul- Rahman

Upload: theresa-gledhill

Post on 16-Dec-2015

222 views

Category:

Documents


0 download

TRANSCRIPT

Multi-Robot BehaviouralAlgorithms Implementation in

Khepera III Robots

David Arán BernabeuSupervisors: Lyuba Alboul

Hussein Abdul-Rahman

Index

Introduction Player/Stage Khepera III robot Behavioural Algorithms

Obstacle avoidance Wall following Robot following

Conclusions

Introduction Background

Multi-robot systems Non-communicative systems

Objectives Develop non-communicative behavioural algorithms Implementation in Khepera III robots

Algorithms Wall follow, obstacle avoidance & robot follow algorithms

Drawbacks Two-robot system Follower can not scan while moving Leader out of the laser field of view

Player/Stage

Player: robot device interface Stage: 2D simulator

Proxies Position2dProxy LaserProxy

Player/Stage Position2dProxy

void SetSpeed(double aXSpeed, double aDriveAngle)

double GetXPos() double GetYPos() double GetYaw()

LaserProxy uint32_t GetCount () const double GetRange (uint32_t aIndex) const double GetBearing (uint32_t aIndex) const

Global axesLocal axes

αβ

Khepera III robot

Small differential wheeled mobile robot 11 IR and 5 ultrasonic sensors 2 DC motors KoreBot: Embedded Linux Wifi communication

Khepera III robot

Laser range finder → Hokuyo URG-04LX FoV: 240º Angular resolution: 0.36º 240/0.36 → ~667 points/scan Range: 4 m Max. scan rate 10 Hz → 0.1 sec

120º / 667-120º / 0

0º / 334

Behavioural Algorithms

Leader robot Function DivideLaser()

for all laser scans if index is on the right

add range new minimum

if index is on the left add range new minimum

if index is on the center new minimum

calculate right / left mean if left mean < right mean: turn right if right mean < left mean: turn left

Obstacle Avoidance Wall Following Robot Following

120º -120º

Right side

Front side

Left side

-25º25º

Behavioural Algorithms

Follower robot

Also using DivideLaser() if central minimum < stop distance

SetSpeed(0,0); else

SetSpeed(Speed,0);

Obstacle Avoidance Wall Following Robot Following

Behavioural Algorithms

Keep constant distance

to the wall

Calculate slope of

a straight line

Functioning modes

Obstacle Avoidance Wall Following Robot Following

SEARCH

LEFT RIGHT

WALL FOLLOW

If distance wall < detection distance

If left mean < right mean If right mean < left mean

If robot loses the wall

Behavioural Algorithms

Slope of Straight Line x1 = GetRange(165º)·cos(GetBearing(165º))

y1 = GetRange(165º)·sin(GetBearing(165º))

x2 = GetRange(205º)·cos(GetBearing(205º))

y2 = GetRange(205º)·sin(GetBearing(205º))

Obstacle Avoidance Wall Following Robot Following

x1,y1

x2,y2

Wall to follow

165º

205º

75º

35º

y i=m· xib y1− y2=m· x1−x2 m=y1−y2

x1−x2

α=arctan m turnrate=α

Behavioural Algorithms

Simulation

Obstacle Avoidance Wall Following Robot Following

Behavioural Algorithms

1st approach: Non-obstacle environment Follower can only detect the leader

if laser detects something

save detecting indexes

calculate mean index

GetBearing(mean index)

do

diff = |GetBearing – GetYaw|

SetSpeed(0,±turn rate)

update GetYaw

while diff ≠ 0 if GetRange(mean index) > Stop distance

SetSpeed(Speed,0)

Obstacle Avoidance Wall Following Robot Following

Behavioural Algorithms

2nd approach: Environment with obstacles Movement recognition algorithm If there is any movement, it's the leader

t0: scan and save ranges → vector

0

t1: scan and save ranges → vector

1

v_diff = vector0-vector

1

if |v_diff[i]| ≠ 0 → movement → leader

calculate mean index of those detecting

GetBearing(mean index)

Obstacle Avoidance Wall Following Robot Following

t0, initial position

t1, final position

Final direction to follow

Behavioural Algorithms

2nd approach: Environment with obstacles

do

diff = |GetBearing – GetYaw|

SetSpeed(0,±turn rate)

update GetYaw

while diff ≠ 0 if GetRange(mean index)>Stop dist

SetSpeed(Speed,0) if GetRange()>Alone distance

SetSpeed(0,0) Scan again

Obstacle Avoidance Wall Following Robot Following

Behavioural Algorithms

3rd approach: Physical robot GetYaw() coordinate system different than in simulation

Obstacle Avoidance Wall Following Robot Following

0

π/2 -π/2

π -π

0

-π/2

-3π/2

+π/2

-2π

0 +2π

Stage simulation Khepera III robot

Drawbacks

Two robot system (1 leader, 1 follower)

Robot can not scan while moving

Robot out of the laser field of view

Conclusions

Non-communicative multi-robot system

Simple algorithms

Basis of further developments

Thank you for your attention

Questions?