Lab4: Cooperative Sensing and Team Exploration Cyrille Berger August 27, 2015 For this lab, we will go back to using the RoboCup Rescue Simulator. The goal will be to explore the map with the ambulances and to locate all civilians. You will implement a centre that will tell the agents where to go. The problem has been simplified and the civilians are not moving and the communication between the agents and the centre are assumed to be perfect. 1 Testing For this lab we have created a special map that you should use: /home/TDDD10/maps/Kobe2013all-ambulances with only ambulances and civilians. For this simulation you can use the –disable-traffic-sim, –disable-fire-sim and –usestatic-civilians to disable traffic, fire simulator and get civilians who do not move. To be able to use the –use-static-civilians option on the lab computers, you need to update the script: The full command for starting the simulator for this lab should be: 1 2 ./start.sh -m /home/TDDD10/maps/Kobe2013-all-ambulances/map \ --disable-traffic-sim --disable-fire-sim --use-static-civilians 2 Zombie Agents For this lab, your ambulance agents will act as zombie radio controlled by the ambulance centre. The ambulance centre will tell the ambulance where to go, and the ambulance Figure 1: Simulator with civilians in green and ambulances in white. 1 will go to the building, check if there is a victim, and if there is a victim send the information back to the centre. The first step would be to implement the ambulance agent, and have the centre send the ambulances to some random building. 3 Implement the Coordination Algorithm You should now implement the coordination algorithm described in the Cooperation And Coordination 1 lecture. The Coordination Algorithm 1. Determine the set of frontier cells 2. Compute for each robot i the cost Vx,i y for reaching the frontier cell < x, y > 3. Set the utility U x, y of all frontier cells to 1.0 4. While there is one robot i left without a target • Determine a robot i and a frontier cell < x, y > which statisfies: 0 (i, < x, y >) = ar g ma x (i 0 ,<x 0 , y 0 >) U x 0 , y 0 − Vxi 0 , y 0 (1) • Reduce the utility of each target point < x 0 , y 0 > in the visibility area of selected < x, y > according to U x 0 , y 0 ← U x 0 , y 0 · (1 − P(< x, y >, < x 0 , y 0 >)) (2) Implementation details In the centre you will need to keep a list of civilians and their position. You will also need to keep a list of building, and whether those buildings have been visited or not. Building that have not been visited are frontier cell. In the implementation of the coordination algorithm, to update the utility, use a probability that is a function of the distance between the two frontier cells. Something like: P(< x, y >, < x 0 , y 0 >) = 1 − d(< x, y >, < x 0 , y 0 >) dr e f (3) Make sure that the result of P is between 0 and 1 ! There are 195 civilians in the Kobe2013 map. An other aspect to take into account is tha the utility U x, y of all frontier cells need to be reseted to 1 for each run. Otherwise the agents might go and select a destination far away from their current position. 2 4 Visualisation It will be useful to visualise the utility value. The easiest way to do that would be to implement a new Visualisation layer (you can be inspired by the BuildingLayer1 ). While you are generally not allowed to share memory between your agents, it is acceptable for visualisation purposes. In your visualisation tool, you should also show which agent is assigned to which area, you can draw a line from the agent to the area. http://www.ida.liu.se/~TDDD10/docs/javadoc/rescuecore2/standard/view/ BuildingLayer.html 1 3