Team 11 Final Presentation Visually Impaired Mapping System Steve Crummel, Naim Falandino, Tim Seeger, Michael Volk Problem Description Lack of tools to help visually impaired persons navigate structures (buildings) Getting to a building is relatively easy (taxi) Finding the way to a specific location is hard Task: Invent some method for visually impaired users to independently navigate structures. Problem Analysis PocketPC is the most viable platform for mobility and performance Pervasive use of text-to-speech in the application to address accessibility requirements Lightweight, portable format for representing buildings had to be created System for maintaining and distributing available map data to the public Solution Web portal for maintaining and distributing mapping data and client software Well defined procedure for creating map data and representing it in XML Client software for PocketPC to load map data and generate directions based on an origin/destination system Produce easy to follow directions that notify users of static obstacles within the structure Requirements Accessible to visually impaired users Large number of supported devices Fast run-time performance High-quality and high-performance text-to-speech engine to produce clear text Generate directions that are simple and easy to break up into meaningful “chunks” General schema for map data to account for as many buildings as possible (if not all) Allow authors of map data access to fine-tune pathfinding variables Very user friendly interface System Architecture Administrator PC Control Panel PocketPC w/ client software Map Resource DB Internet Web Portal ` Windows 2003 Server User PC w/ accessibility software VIMS Backend Risks Acquiring map data quickly Developing a general schema for maps Finding a high-quality, high-performance text-tospeech for PocketPC Creating a workable interface on the Pocket PC for visually impaired users Pathfinding and direction generation algorithms that perform well and are easy to fine-tune Web Portal Design Stored procedures for database activities Database manager to properly handle opening and closing connections Security features to access control panel Fully accessible to screen readers Transitional HTML so website is fully usable with many platforms and browsers Map Schema XML data format Describes searchable areas in a building using an absolute coordinate system Defines a “rail” for each level Contains all points of interest for a building Stores common routes a user may have saved General information section that can be expanded upon as needed Map Example Location Variables Attribute to scale the entire location size Large performance gains Minimal introduction of rounding error Per level rail cost assignment Per path space cost assignment Control of rail position given to map authors to address specific building needs Text-to-Speech Engine Elan Acapela Mobility engine Easy to use with C# High quality speech Low overhead Only an evaluation version Cannot legally redistribute Speech User Interface Disable input from the touch screen Make use of the standard directional pad and selection key found on all Pocket PCs Track which control currently has focus Data structure to attach controls to one another via linking in upwards and downwards direction Help text for each control also in this data structure Recursive function to determine the next enabled control in a given direction Client UI and Location Design ControlInfo -controlUp : Control -controlDown : Control -controlName : string -controlHelp : string -controlHandler : EventHandler SearchForm -directions : DirectionsForm -help : HelpForm -mapFile : string -originReady : bool -destinationReady : bool -location : Location -ctrlLookup : ControlLookup -focused : Control -ddlOType : ComboBox -ddlDType : ComboBox -ddlOrigin : ComboBox -ddlDestination : ComboBox -ddlCommonRoute : ComboBox -btnSubmit : Button -btnLoadMap : Button -btnExit : Button -btnHelp : Button -lbLocationName : Label -openMapFile : OpenFileDialog TextToSpeech::TTS HelpForm -lbHelpText : Label * 1 Collections::Hashtable ControlLookup Collections::CollectionBase InterestPoints IPCollection Location -name : string -scale : int -size : Position -levelInfoArray : ArrayList -interestPoints : InterestPoints -commonRoutes : CommonRoutes 1 * CommonRoutes IP 2 1 DirectionsForm LevelInfo -lbOrigLabel : Label -lbDestLabel : Label -lbOrigin : Label -lbDestination : Label -lbDirectionText : Label -map : SearchableMap -directionList : ArrayList -current : int -_id : int -_width : int -_height : int -_railCost : float -_pathSpace : ArrayList -_rail : ArrayList Mapping::SearchableMap PathSpace -instance : SearchableMap -map : Map -start : AStarNode2D -goal : AStarNode2D -directions : ArrayList -_vertices : int[] -_cost : float CR * -_origin : IP -_destination : IP -_name : string -_type : string -_position : Position Position -_x : int -_y : int -_z : int Mapping Component Design AStar SearchableMap -instance : SearchableMap -map : Map -start : AStarNode2D -goal : AStarNode2D -directions : ArrayList Heap #FStartNode : AStarNode #FGoalNode : AStarNode #FOpenList : Heap #FClosedList : Heap #FSuccessors : ArrayList #FSolution : ArrayList 2 -FList : ArrayList -FComparer : IComparer -FUseObjectsComparison : bool -FAddDuplicates : bool IList Map -mainRailCost : float Level LevelCollection #count : int #levels : Level[] 1 AStarNode AStarNode2D -FX : int -FY : int -FParent : AStarNode -FGoalNode : AStarNode -FCost : double -FGoalEstimate : double * #_rows : int #_columns : int #level : float[,] ICloneable Pathfinding Algorithm Modified A*: Rail* Uses basic 2D A* Relatively high-cost path spaces Low-cost “rails” defined by the map that traverse path spaces Manhattan distance heuristic Vector cross-product tie breaking Pathfinding Testing Console application written in C# Visually displays the search space grid Useful for getting quick feedback on: Heuristic modifications Different origin/destination pairs Solution paths and generated directions Direction Generation Visually impaired users need different directions Warnings of obstacles Distances between points 90 degree turns only Differential algorithm to determine right and left turns relative to the direction of motion Simple, consistent format for giving directions “Move x feet. Then, turn {right, left}.” Having only 90 degree turns is a big limitation Conclusion Overall a success No other applications like this necessitated significant design work Good example of a fully featured product prototype Special thanks to Derrick of Team 9 and Steve of Team 1 for letting us use their cameras Extra special thanks to Mr. Tibbals of Comm Arts for denying our camcorder request