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 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
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