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 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 AvoidanceWall FollowingRobot 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 AvoidanceWall FollowingRobot Following
Behavioural Algorithms Keep constant distance to the wall Calculate slope of a straight line Functioning modes Obstacle AvoidanceWall FollowingRobot Following SEARCH LEFTRIGHT 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 AvoidanceWall FollowingRobot Following x 1,y 1 x 2,y 2 Wall to follow 165º 205º 75º 35º
Behavioural Algorithms Simulation Obstacle AvoidanceWall FollowingRobot Following
Behavioural Algorithms 1 st 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 AvoidanceWall FollowingRobot Following
Behavioural Algorithms 2 nd approach: Environment with obstacles Movement recognition algorithm If there is any movement, it's the leader t 0 : scan and save ranges → vector 0 t 1 : scan and save ranges → vector 1 v_diff = vector 0 -vector 1 if |v_diff[i]| ≠ 0 → movement → leader calculate mean index of those detecting GetBearing(mean index) Obstacle AvoidanceWall FollowingRobot Following t0, initial position t1, final position Final direction to follow
Behavioural Algorithms 2 nd 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 AvoidanceWall FollowingRobot Following
Behavioural Algorithms 3 rd approach: Physical robot GetYaw() coordinate system different than in simulation Obstacle AvoidanceWall FollowingRobot Following 0 π/2-π/2 π-π 0 -π/2 +π -3π/2 -π +π/2 -2π 0 +2 π Stage simulationKhepera 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?