200 likes | 368 Views
Multi-Robot Behavioural Algorithms Implementation in Khepera III Robots. David Arán Bernabeu Supervisors: Lyuba Alboul Hussein Abdul-Rahman. Index. Introduction Player/Stage Khepera III robot Behavioural Algorithms Obstacle avoidance Wall following Robot following Conclusions.
E N D
Multi-Robot Behavioural Algorithms Implementation in Khepera III Robots David Arán Bernabeu Supervisors: 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 axes Local 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 0º / 334 -120º / 0 120º / 667
Behavioural Algorithms Obstacle Avoidance Wall Following Robot Following • 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 25º -25º Front side Left side Right side -120º 120º
Behavioural Algorithms Obstacle Avoidance Wall Following Robot Following • Follower robot • Also using DivideLaser() • if central minimum < stop distance • SetSpeed(0,0); • else • SetSpeed(Speed,0);
Behavioural Algorithms Obstacle Avoidance Wall Following Robot Following • Keep constant distance to the wall • Calculate slope of a straight line • Functioning modes SEARCH If distance wall < detection distance WALL FOLLOW If left mean < right mean If right mean < left mean LEFT RIGHT If robot loses the wall
Behavioural Algorithms Obstacle Avoidance Wall Following Robot Following • 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º)) Wall to follow x1,y1 75º 165º 35º 205º x2,y2
Behavioural Algorithms Obstacle Avoidance Wall Following Robot Following • Simulation
Behavioural Algorithms Obstacle Avoidance Wall Following Robot Following 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 whilediff ≠ 0 • if GetRange(mean index) > Stop distance • SetSpeed(Speed,0)
Behavioural Algorithms Obstacle Avoidance Wall Following Robot Following 2nd approach: Environment with obstacles • Movement recognition algorithm • If there is any movement, it's the leader • t0: scan and save ranges → vector0 t1: scan and save ranges → vector1 v_diff = vector0-vector1 if |v_diff[i]| ≠ 0 → movement → leader calculate mean index of those detecting GetBearing(mean index) Final direction to follow t1, final position t0, initial position
Behavioural Algorithms Obstacle Avoidance Wall Following Robot Following 2nd approach: Environment with obstacles do diff = |GetBearing – GetYaw| SetSpeed(0,±turn rate) update GetYaw whilediff ≠ 0 • if GetRange(mean index)>Stop dist • SetSpeed(Speed,0) • if GetRange()>Alone distance • SetSpeed(0,0) • Scan again
Behavioural Algorithms Obstacle Avoidance Wall Following Robot Following 3rd approach: Physical robot • GetYaw() coordinate system different than in simulation +2π 0 0 -2π 0 +π/2 -π/2 -3π/2 π/2 -π/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?