[robocup-rescue-s] Bug in sensing far buildings

From: Cameron Skinner <cam@cs.auckland.ac.nz>
Date: Sun 28 May 2006 - 04:19:18 GMT

Hi all.

A critical bug (bug #1495887) has been discovered in sensing far
buildings. A far building is one which is on fire, but less than
(10m*time burning) from the agent. If a far building is within 10m of
the agent then the kernel is incorrectly sending only the fieryness of
the building.

Please download version 0.49.7 from sourceforge
(http://www.sf.net/projects/roborescue).

Alternatively, the attached output from "svn diff" shows the changes
that need to be made to the kernel to fix the bug.

Thanks to all of you who helped track down this bug! It was a hard one
to find.

Cheers,
Cameron.

-- 
Cameron Skinner
Artificial Intelligence Group
Department of Computer Science
The University of Auckland
email: cam@cs.auckland.ac.nz
phone: +64 9 3737599 x82924
fax: +64 9 3737453
Post:
Department of Computer Science
The University of Auckland
Private Bag 92019
Auckland
New Zealand

Index: kernel/kernel.cc
===================================================================
--- kernel/kernel.cc (revision 172)
+++ kernel/kernel.cc (working copy)
@@ -738,9 +738,9 @@
         int x;
         int y;
         if (m_pool.locate(agent,&x,&y)) {
- int range = m_config.getInt("vision",10000);
+ int visionRange = m_config.getInt("vision",10000);
           int spreadingSpeed = m_config.getInt("fire_cognition_spreading_speed",10000);
- m_pool.getObjectsInRange(x,y,range,result);
+ m_pool.getObjectsInRange(x,y,visionRange,result);
           // Find far buildings
           if (agent->type()!=TYPE_CIVILIAN || !m_config.getBool("civilian_sense_hack",false)) {
                 if (m_time > m_config.getInt("steps_far_fire_invisible",0)) {
@@ -752,9 +752,9 @@
                         if (b && b->getFieryness()!=0) {
                           int ignitionTime = m_buildingIgnitionTime[b->id()];
                           if (ignitionTime<0) continue;
- int visibleRange = spreadingSpeed * (m_time-ignitionTime);
+ int farRange = spreadingSpeed * (m_time-ignitionTime);
                           int range = m_pool.range(agent,b);
- if (range <= visibleRange) {
+ if (range > visionRange && range <= farRange) {
                                 result.insert(b);
                                 if (fireOnly) m_agentFilter.addFarBuilding(b->id());
                           }

_______________________________________________
robocup-rescue-s mailing list
robocup-rescue-s@mailman.cc.gatech.edu
https://mailman.cc.gatech.edu/mailman/listinfo/robocup-rescue-s
Received on Sun May 28 06:44:06 2006

This archive was generated by hypermail 2.1.8 : Sun 28 May 2006 - 04:44:07 GMT