First, thoughts on the "Thoughts on the "Big Picture": I like to think big, then work at the little steps that brings me closer to the big picture. Unfortunately, this tendency, coupled with my relatively recent introduction to the entire subject may mean that I may be far too optimistic or even absurd (optimism coupled with ignorance can be very dangerous, yet also rewarding). Nevertheless, it helps me to focus at the task at hand. Comments and critism are, as always, most welcome. It is entirely possible that I am repeating things that are already stated/thought out, in which case, stating them again wouldn't hurt (except for wasting the poor reader's time). Another possibility is that I am stretching the viability of this architecture to its limit, in ways that it was never intended. You have thus been warned. Thoughts on the "Big Picture": I envision a complete, autonomous, adaptive, mobile robotics architecture that incoporates three main phases: 1. Exploration Could be very similar to the ELDEN system. Doesn't necessarily have to be effective (if it stays in a certain area, it only means that more readings, and thus better occupancy grids will be created for that place; if it doesn't stay in that certain area, more places are learned); tradeoff between quality of places learned versus quantity of places learned. 2. Place Learning Upon some determination (say if it entered a "doorway", a marked location, or even at random intervals), the place- learning module kicks in. We can utilize the Moravec code to generate the o.g. of the current place. The robot would then attempt to classify (on its own) the generated grid with the previous grids it has in its library -- if good match, "Bayesian" merge new grids with old grids -- if not good match, add a new place to place library. (It is, thus, no longer "lazy." It actively tries to improve its place library with every new o.g....) (As the places gets more and more developed, is it worthwhile to attempt random classification between places in the place library itself? Tradeoff between computation now versus efficiency later, when we are actually using the grids.) (If we utilize "doorway" mechanism, we can use the doorway to "align" ourselves before we generate our map. This might result in new places generated by slanted furnitures that happen to simulate a doorway. That might be okay.. we will just have places that are rarely visited... or we could keep our trusty compass system and avoid this problem (with the compass, even if furniture signals a "doorway" the grid that is built would still be correctly "classified" in the place that contains the offending furniture)) Once we have a reasonably adapt place recognizer, we might want to build up some sort of connectivity graph between places so we can later use prior knowledge of being in place A to tell use likelihood of being in place B. 3. Dynamic Adaptation After the first two phases (maybe it ran overnight when everyone was home), the office starts to become chaotic as people and furniture moves around during the day. Our poor robot will still be moving around (perhaps using the same exploration program as in phase one). Again, when it reaches a place, it tries to classify the place as a place it has seen before (the threshold may have to lower than from phase two, though since we are talking about a much more chaotic environment). Once we have classified and registered a place, we may have noticed that (1) things that were in our "historical" grids aren't in our "current" grids (2) things that are not in our "historical" grids are in our "current grids. Slowly, but surely, we would "Bayesian" anneal out (again, more slowly than in phase two, since we are talking about a dynamic environment) such dynamic elements from our "historical" grids such that (1) only relevant, permenent features remain (such as walls) (2) we have areas of "dynamic uncertainty" (i.e. places where people would like to place furniture.) Furthermore, we can refine this phase by selecting a subset of pertinent features or landmarks from among the "permenent" aspects of each "place" to speed registration and recognition. If (a big if) everything works out correctly, we now have a robot that can: (1) entirely and autonomously build up knowledge about a place with no previous knowledge of its location nor topology (and improves with increased exposure) (applications include exploration of underground caverns on other planets or robot inflitration of enemy military bases) (2) can adapt to dynamic environments consisting of mixtures of permenent (walls) and dynamic (furniture) elements and be able to utilize permenent features and ignore dynamic features (obvious bonus) (3) from any current location, correctly "classify" both the "place" it is in and its relative location within that "place" (4) have reasonable knowledge of the connectivity from place to place (3 and 4 allows for planner to make their plans) Unfortunately, since the robot is autonomous, it might have to stumble through errors on its own. And it might take many training sets to correct for such errors. Furthermore, the robot might run into difficulty with similar looking rooms (as might be the case in many offices)... perhaps utilzing connectivity to resolve conflicts? Only experimentation can tell how far this will go. Phase one seems to be domain of Mr. Yamauchi. Phase two is relatively complete with the work of Mr. Pfleger, Mr. Langley, and Mr. Sahami. The few touches to phase two only require a few coding that I could do, especially with data/code that already exists. Phase three looks fairly complicated, but doable from the standpoint of someone that has not done it yet. The techniques exists... it just requires a lot of experimentation to nail down the exact methologies. I see my main goal as filling the gaps that exists in phase two and three and leaving phase one and the complete incoporation of the total architecture to future brave souls. Other directions exists, of course.