Lab4: Cooperative Sensing and Team Exploration Cyrille Berger August 27, 2015

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