Difference between revisions of "ECE497 Project RoverGUI"

From eLinux.org
Jump to: navigation, search
(additional user use information)
(highlights, theory of operation, work breakdown, future work, and conclusion)
Line 58: Line 58:
  
 
Clicking on a button will cause create a file in the top directory of the GUI directory called inst.txt that will contain only the text from the button most recently clicked. In this way, the program to be controlled can watch this file and carry out the instruction currently in the file. With some easy modification to the source code more buttons can be created that will add any additional functionality.
 
Clicking on a button will cause create a file in the top directory of the GUI directory called inst.txt that will contain only the text from the button most recently clicked. In this way, the program to be controlled can watch this file and carry out the instruction currently in the file. With some easy modification to the source code more buttons can be created that will add any additional functionality.
 +
 +
If instead the maps GUI was clicked the following will be displayed
 +
 +
[[File:RoverGUIMapsStart.PNG]]
 +
 +
From here you can navigate the map as is likely familiar with Google Maps. However, any time the map registers a single left click a marker will be placed. Every additional marker after the first will place a second marker with a line from the preceding marker. This can continue as long as many times as the user would like markers placed.
 +
 +
The following is an example of a marker placed on Rose-Hulman's campus, New York City, Chicago, Louisville, and then back to Rose-Hulman.
 +
[[File:RoverGUIMaps.PNG]]
 +
 +
Once finished, the user can click the "done" button near the top of the page. At this point, the inst.txt file in the GUI directory will be populated with the coordinates of each marker in the order they were clicked. The following is the resulting file from the example map.
 +
 
  '''(39.4824644923698, -87.32401371002197)
 
  '''(39.4824644923698, -87.32401371002197)
 
  '''(41.88592102814744, -87.626953125)
 
  '''(41.88592102814744, -87.626953125)
Line 63: Line 75:
 
  '''(38.27268853598097, -85.75927734375)
 
  '''(38.27268853598097, -85.75927734375)
 
  '''(39.48246138709902, -87.32401169836521)'''
 
  '''(39.48246138709902, -87.32401169836521)'''
 +
 
== Highlights ==
 
== Highlights ==
The user will be able to go to the location they would like the rover to travel and click on positions. The rover will then travel to these locations in order.
+
This GUI is designed to be extremely easy to interface to other programs. If the other program can be created to read a text file of either instructions or coordinates it can likely be made to use this GUI.
  
More to come.
+
The Google Maps GUI makes it very simple to create a list of GPS coordinates. This would make creating tests much simpler for any testing that makes use of GPS coordinates.
  
 
== Theory of Operation ==
 
== Theory of Operation ==
  
The server on the BeagleBone is running using socket.io with node.js. The GUI will then use either basic buttons or the Google Maps API to send instructions to the rover. The instructions are then saved to a file that can be read by the BeagleBone.  
+
The server on the BeagleBone is running using node.js. With between the BeagleBone and the browser is handled by node.js and socket.io. The GUI will then use either basic socket.io buttons or the Google Maps API to send instructions to the BeagleBone. The instructions are then saved to a file on the BeagleBone.
  
 
== Work Breakdown ==
 
== Work Breakdown ==
  
All work is done by Chris Good
+
All work was done by Chris Good
Future work:
+
Implement basic control
+
Implement files to save instructions to
+
Parse clicks from Google Maps API
+
  
 
== Future Work ==
 
== Future Work ==
  
Since the instructions will be saved in a very simple text format file, any number of devices that could make use of simple controls or waypoint data would be potentially able to use this data. Furthermore, it could be modified to send the instructions in another method in order to comply to a device that already exists.
+
Extra buttons can be easily added to the simple GUI through modifying the source code. These buttons could carry any actions the user intends to have.
  
== Conclusions ==
+
Currently the Maps GUI only reports latitude and longitude coordinates. While this is fine for ground based objects such as the Rover this project was designed to work with, it could be expanded to allow a height coordinate in order to accommodate aerial objects. Further parameters such as travel velocity or a time to stay at a coordinate could also be added.
  
This project will give a more natural feeling to controlling the rover project.
+
== Conclusions ==
 +
This project gives an easy to integrate GUI solution for devices that make use of simple direction commands or gps coordinates for the purpose of way-points.
  
 
{{YoderFoot}}
 
{{YoderFoot}}

Revision as of 06:44, 14 November 2012

thumb‎ Embedded Linux Class by Mark A. Yoder


Team member: Chris Good

Grading Template

I'm using the following template to grade. Each slot is 10 points. 0 = Missing, 5=OK, 10=Wow!

00 Executive Summary
00 Installation Instructions 
00 User Instructions
00 Highlights
00 Theory of Operation
00 Work Breakdown
00 Future Work
00 Conclusions
00 Demo
00 Late
Comments: I'm looking forward to seeing this.

Score:  00/100

Executive Summary

This project is to create a GUI that could be used to control the rover project found here:ECE497_Project_Rover The GUI will have two interfaces. The more simple one can control forward, backwards, and turning. The other will be GUI based on the Google Maps API so that users can click waypoints for the rover to travel.

The curent code will allow the user to place into a file either simple commands or a list of coordinates from the Google Maps API.

Although in itself this project would likely not be of much use, it will give certain projects a very useful and easy to integrate user interface.

Installation Instructions

First, ensure node.js is installed by running:

beagle$ opkg install nodejs

Next, the GUI can be downloaded from here. No compiling is needed so the GUI is now ready to be used.

User Instructions

Move to the top level of the directory GUI directory. To run the GUI server, run:

beagle$ node GUI.js

Then, from any networked browser point to:

beagle$ beagle:8081

where beagle is the IP of the BeagleBone. The browser will now be pointed to the home screen of the GUI. Either the simple direction GUI or the Google Maps GUI can now be selected by clicking the text of the option you would like to select.

RoverGUIHome.PNG

Selecting the simple control option will send you to the simple control GUI.

RoverGUISimple.PNG

Clicking on a button will cause create a file in the top directory of the GUI directory called inst.txt that will contain only the text from the button most recently clicked. In this way, the program to be controlled can watch this file and carry out the instruction currently in the file. With some easy modification to the source code more buttons can be created that will add any additional functionality.

If instead the maps GUI was clicked the following will be displayed

RoverGUIMapsStart.PNG

From here you can navigate the map as is likely familiar with Google Maps. However, any time the map registers a single left click a marker will be placed. Every additional marker after the first will place a second marker with a line from the preceding marker. This can continue as long as many times as the user would like markers placed.

The following is an example of a marker placed on Rose-Hulman's campus, New York City, Chicago, Louisville, and then back to Rose-Hulman. RoverGUIMaps.PNG

Once finished, the user can click the "done" button near the top of the page. At this point, the inst.txt file in the GUI directory will be populated with the coordinates of each marker in the order they were clicked. The following is the resulting file from the example map.

(39.4824644923698, -87.32401371002197)
(41.88592102814744, -87.626953125)
(41.50857729743935, -81.683349609375)
(38.27268853598097, -85.75927734375)
(39.48246138709902, -87.32401169836521)

Highlights

This GUI is designed to be extremely easy to interface to other programs. If the other program can be created to read a text file of either instructions or coordinates it can likely be made to use this GUI.

The Google Maps GUI makes it very simple to create a list of GPS coordinates. This would make creating tests much simpler for any testing that makes use of GPS coordinates.

Theory of Operation

The server on the BeagleBone is running using node.js. With between the BeagleBone and the browser is handled by node.js and socket.io. The GUI will then use either basic socket.io buttons or the Google Maps API to send instructions to the BeagleBone. The instructions are then saved to a file on the BeagleBone.

Work Breakdown

All work was done by Chris Good

Future Work

Extra buttons can be easily added to the simple GUI through modifying the source code. These buttons could carry any actions the user intends to have.

Currently the Maps GUI only reports latitude and longitude coordinates. While this is fine for ground based objects such as the Rover this project was designed to work with, it could be expanded to allow a height coordinate in order to accommodate aerial objects. Further parameters such as travel velocity or a time to stay at a coordinate could also be added.

Conclusions

This project gives an easy to integrate GUI solution for devices that make use of simple direction commands or gps coordinates for the purpose of way-points.




thumb‎ Embedded Linux Class by Mark A. Yoder