Difference between revisions of "ECE497 Project RoverGUI"

From eLinux.org
Jump to: navigation, search
m (Grading Template)
m (Removed grade. Moved to Fall2012)
 
(10 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Category:ECE497 |Project]]
+
[[Category:ECE497Fall2012 |Project]]
 
{{YoderHead}}
 
{{YoderHead}}
  
 
Team member: [[user:chris.good|Chris Good]]  
 
Team member: [[user:chris.good|Chris Good]]  
  
== Grading Template ==
+
== Executive Summary ==
I'm using the following template to grade.  Each slot is 10 points.
+
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.
0 = Missing, 5=OK, 10=Wow!
 
  
<pre style="color:red">
+
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.
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
+
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.
</pre>
 
  
<span style="color:red">(Inline Comment)</span>== Executive Summary ==
+
== Installation Instructions ==
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 stages. The more simple one can control simple movement such as forward, backwards, turning, etc. The other will be GUI based on the Google Maps API so that users can click waypoints for the rover to travel.
+
First, ensure node.js is installed by running:
  
Currently a computer networked with the BeagleBone can from a browser go to the bone and select the maps option. Selecting this option will bring up a Google Maps page that has very basic functionality. Currently clicking to select waypoints does nothing.
+
beagle$ '''opkg install nodejs'''
  
== Installation Instructions ==
+
Next, the GUI can be downloaded from [[https://github.com/goodca/roverGUI.git https://github.com/goodca/roverGUI.git]]
The GUI can be downloaded from here. (github link soon)
+
 
Once downloaded move to the top level directory and run:
+
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'''
 
  beagle$ '''node GUI.js'''
<span style="color:red">(Please use above format for commands)</span>
 
  
 
Then, from any networked browser point to:
 
Then, from any networked browser point to:
  
beagle:8081
+
beagle$ '''beagle:8081'''
  
where ''beagle'' is the IP of the BeagleBone
+
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.
  
== User Instructions ==
+
[[File:RoverGUIHome.PNG]]
 +
 
 +
Selecting the simple control option will send you to the simple control GUI.
 +
 
 +
[[File: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
 +
 
 +
[[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.
  
More detailed instructions on use to come.
+
'''(39.4824644923698, -87.32401371002197)
 +
'''(41.88592102814744, -87.626953125)
 +
'''(41.50857729743935, -81.683349609375)
 +
'''(38.27268853598097, -85.75927734375)
 +
'''(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.
 +
 
 +
<span style="color:red">More details would help.  How do you interact with Google Maps?  What messages are being sent back and forth between the server and the browser, etc.</span>
  
 
== 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.
 +
 
 +
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 ==
 
== 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.
This project will give a more natural feeling to controlling the rover project.
 
  
 
{{YoderFoot}}
 
{{YoderFoot}}

Latest revision as of 09:19, 18 May 2013

thumb‎ Embedded Linux Class by Mark A. Yoder


Team member: Chris Good

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 [https://github.com/goodca/roverGUI.git]

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.

More details would help. How do you interact with Google Maps? What messages are being sent back and forth between the server and the browser, etc.

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