Filename: Mapping concepts specification Date : July 19, 2007 Version : 0.03 ---------------------------------------------------------------------------------------------------------------------- This text is a compilation of the ideas, thoughts and plans as discussed in forum thread: http://forums.parallax.com/forums/default.aspx?f=15&m=197436&p=1 .. p=2 etc. The purpose of this text is to compile a document that can be used as a reference while team is developing and testing the mapping system. It also should help to agree and constraint the functional and technical scope. For the time being, I'm just trying to collect the key points. It's called a memory jogger I believe. Functionality (DG on June 18, 2007) ------------- Component that will give a robot the ability to know it's location and travel through a user generated map. I don't really want to specify an amount of accuracy because I really want exact location at all times but I'll accept it to be at least as accurate as it takes for the system to function reliably. If that's inches fine if it's feet fine. I want to have the ability to rank each piece of the map with a hazard level or preferred area of travel 0-9 ranking 0-1 could be hazard level 2-7 be room labels 8,9 could be a preferred area of travel. I want the bot to build a map on the fly marking hazards and recalibrating position at set intervals or events. I would like to get this functioning to the best of our abilities with a minimum of componets as specified hereafter. I might add other components if required or if other functions are wanted. To help with troubleshooting it would be helpfull to have a link to a PC and have it transmit back data for viewing only. This could be left on the final product if desired but I don't want it to be required to function. Background about mapping capabilities (Copy mail sent by Whit (July 16,2007)) ------------------------------------- Bot One - Say I build a robot that I can put down in a completely unknown space. It looks, pings, smells or feels by bumping into things and keeps it self out of trouble. If it does this, but never learns what it is doing - is this considered mapping? or is this just responding to what is there? Call this level 1 "thinking." Bot Two - Say I build a bot that I can put in my living room. I put it down at a start point. I have "told it where the walls are, the chairs and bookcases are. It can stay in the clear floor space, but I still want it to do what the bot above can do, just to be safe and in case something changes. Is this mapping? Call this level 2 "thinking." Bot Three - O.K. I build the same bot as bot One, it does the same thing, but this time as it explores, it "learns" or remembers were things are. It now "knows" that if it goes a particular direction, it will run into the bookcase (though it doesn't know it is a bookcase, of course ). Is this mapping? I would say so. Call this level 3 "thinking." Bot Three advanced - Now if my son comes in and parks his tricycle in the area. The bot runs into that - learns it as a new obstacle and does't go there again - a least for a while - but it might check there on occaision - if the tricylce moves, it remembers now that this area is open and will use it again. This would be very advanced mapping in my mind. Call this level 4 "thinking." This bot would be able to be put down anywhere, learn its way around and remember it. Implementation plan: ------------------- Here a reasonable approach by Floodhound (July 16.2007): 1) Map into memory the surroundings and remember this 2) If a new obstacle is present remember it 3) If 1-2 is implemented successfully, add capability to check the map for updates or changes on a given day of the week or an event that triggers a refresher of the map. Or as writen by DG (July 16, 2007): I think we need to start at bot 1 and work up to level 3+. I think we are all past level 1 I think we need to break this down into a set of milestones and focus on one aspect at a time and then go from one milestone to another knowing that we'll have to adjust the milestones as we go. Another idea is that each developer / tester should use a similar test environment. A proposal for such environments has been discussed in the thread: date July 16, 2007 and afterwards. Hardware -------- Platform: Parallax Propeller "navigation system" should be self contained and not part of the CPU of the robot. Sensors: PING, IRPD, Compass, and wheel encoders. Communication with external systems: RF link or Blue Tooth link to a PC and have it transmit back data (from Robot to PC) for viewing only. Data storage: External PC for download only It is suggested by Mike Green to use an SD card/interface to allow the storage of large amounts of data. Mike wrote: If you were using a Prop, I'd suggest an SD card with a cache for the current section of the map in hub ram. You could certainly use EEPROM, but an SD card would allow you to have a LOT of storage and it would be readable and writable on a PC. The SD card has internal buffering, so it would allow you to dump a block and let the SD card controller do the actual writing and any "wear leveling" of physical sectors. You could pre-allocate a file so the blocks are contiguous which would simplify and speed up access since you would only need to look up the file information once during initialization and could use absolute block numbers from then on. Communnication between operator/user and the robot: not defined yet Platform (Robot) to test the Mapping system not defined yet Notes ----- 1. Accuracy (Skywalker July 15, 2007) -------- Missing in the specification is the purpose of the robot to which the mapping system will be added. Of course one could say that the mapping system should fit any application (robot) requiring mapping capabilities but that is not fair. As mentioned before: position data should "be at least as accurate as it takes for the system to function reliably". This implies that we must agree what applications we have in mind and as a result which accuracy is needed for such applications. 2. System of measures ------------------ What system of units will be used, Imperial Standard System or Metric System?