Software Components

Information gathering and presentation

The software portion of our project is responsible for user interaction via voice and gesture commands, gathering and formatting information about different locations, and also providing feedback to the user through a graphical user interface and voice. The following diagram illustrates at a high level how all the software components are connected in order to achieve our goal of providing a good user experience.

Software Flow Diagram

Programming Languages and Software

APIs and MySQL Database for Location Information

These APIs are used to gather location specific information based on the users request. The Teleport API provides our application with a variety of different information about a location such as it's population, latitude and longitude, climate, etc. They reference a large amount of cities (over 140,000) and pull their information from other databases that hold geographical information such as GeoNames. Since the information that is requested from this API is tailored to fit queries, we parsed their entire database ahead of time to store country and admin 1 division locations (similar to state information in the United States) in our own MySQL database, hosted on the Raspberry Pi 3. In doing so, we can refine the information served to the GUI to better fit a user's request. Furthermore, the Google Photos API is used to retrieve images of a location based on latitude and longitude coordinates. These images are presented to the user after a successful location request has been made. Mapbox is used by our application to navigate to different areas, providing the user with a visual representation of where the requested location is on the map. The Alexa Voice Service allows us to create our own custom voice interface, giving users several voice commands to interact with Trotter.

User Location Request Flow Diagram

The above diagram illustrates how user location requests are handled after interacting with the voice interface. This is the backend software flow and is primarily coded in Python. When a user makes a location request, the location string is parsed from the user input and sent to several python functions. The functions will first query the MySQL database for countries and states that match the input string, then make a request to the Teleport API for city matches. After information is found for the location, a JSON file is generated to provide the GUI and Alexa Voice Service to present it to the user. While the queries and requests for the location string is being processed, calls are also being made in parallel to the Flickr API to find images of the location which is also displayed to the user through the GUI.

Graphical User Interface


The graphical user interface (GUI) is used to display relevant information about the location to the user. The first image on the left shows the main screen of the GUI after a user requests information about a location. The data shown is the general information about the location. The user can also request more detailed information about the location that they are currently on. In addition, the user also has the option to view more information about locations related to their request. This is shown in the second image on the right. The number of extra locations is limited to 10. The GUI also contains additional pages such as Welcome, Help, and About, which gives the user more information about the project and also how to user Trotter. This is all shown on a 7 inch display and is coded using HTML/CSS and Javascript and is hosted locally on the Raspberry Pi 3 using Apache.

Rotation

Trotter has the ability to rotate to a specific location that the user requests on the globe. The rotation script rotates an azimuthal equidistant image of the globe in software using Python. This image is projected through a fisheye lens which wraps it around a transparent sphere. This allows the user to see an actual globe on the sphere that rotates to the location requested and is one of the key differences between the virtual globe and the physical globe. The physical globe uses hardware to rotate the globe as opposed to being fully implemented in software. An example of the rotation script and projected globe are shown below.