Thursday, September 16, 2010

Design Document

Design Document

The next requirement is a design document. You should produce a document that describes how you are going to implement your application. You should describe things such as...
  • What language(s) will be used.
    • Arduino microcontrollers understand C (with the addition of special libraries)



  • What libraries/API's will be used. \item What version control system will be used?


    • Special arduino libraries will be used. One library will be used for interfacing with a GPS unit and another will be used for interfacing with servos



  • Will you be using a database to store information.


    • No



  • What is the basic organization of the system (client/server)


    • Coordinates will be sent to the robot to process over USB (latitude and longitude), however, after receiving these instructions, the robot will navigate by itself to its destination.



  • What protocol(s) will be used between the system components.


    • C



  • For your two areas of technical achievement (e.g., graphics, AI, multi-threading, etc.), how will you actually do these?


    • API's: We will study Arduino microcontroller interfaces and implement them in our system.
    • Memory Management: We will keep track of each function's memory usage, freeing as soon as we are able.



  • Where will you be doing the development.


    • Both at school and at our homes

  •  What environment(s) will you use?


    • Arduino code has an IDE available. We will use the IDE or vim, along with the Arduino C compiler.
  • What is the division of labor -- who is going to do what.


    • We will collaborate on most features of the vehicle, as a commonly agreed upon software interface is needed. If a special focus is required, Joshua Burkhart will focus on the servo interface code and Greg Braman will focus on the GPS interface code.

  • What design methodologies will you use? Agile, waterfall, hybrid, etc.
    • Agile
Projected Project Schedule

    Tuesday, September 7, 2010

    Prospectus

    The prospectus should fully describe who is on your team,

    Joshua Burkhart
    Greg Braman

    the technical strengths of each team member,

    Joshua Burkhart: software engineering, C programming, web programming, java, documentation, bash scripting
    Greg Braman: leadership skills, C programming, java, bash scripting, ruby, python, web development

    and what application/system you are going to produce.

    We are going to produce an autonomous vehicle based on an Arduino micro controller

    Completely describe the project you want to create. I should have a very clear picture of the application you are going to produce. Don't worry too much about how you're going to do it. Provide a list of all intended features. Your prospectus should describe the vapor-ware that you will create. The prospectus is not a contract. It is a road-map that outlines what you will try to create. It is not necessary for you to implement every feature.

    Hardware: Arduino micro controller
    several small electric motors
    digital compass / *GPS device/ Rotation Sensor
    data recorder / storage device (SD card reader)
    tracks or wheels attached to some sort of chassis


    * GPS module may not be an option depending on pricing; most modules seem rather expensive

    Software: Arduino code to connect and manage peripherals and
    Arduino code to drive device. Many software libraries exist for popular arduino modules, and may be used from time to time. However, the code for the guidance of the vehicle will be custom made.

    Description of Operation: The device we will construct should take a list of locations as parameters and be able to navigate itself to those locations autonomously.

    Programming Style: The code that is understood by the Arduino micro controller is similar to C in syntax. There is also an existing Arduino development environment that will be used to develop and push code to the device.

    Additional Opportunities: If time allows, we will add features to the vehicle that will increase autonomy. These features include image recognition and range-finding lasers to assist in collision avoidance and path- finding.

    Project technical requirements are based on your team's technical abilities and interests. You should design an application that draws on the technical abilities and interests of all the team members. For example, if you have team members that took graphics (and have an interest in graphics) then you might consider a graphical game.


    You should also describe two areas of technical innovation -- two technical areas in which you will demonstrate your expert technical knowledge, and your ability to learn new things on your own. These two areas should be ones that you want to spend a great deal of time researching new techniques, implementing algorithms, etc. Later on, you will be evaluated on the complexity of these innovations (see section on grading).

    Area 1: Working in an environment with strict memory and storage constraints. Storing many data points and log files will require unusually good memory management and code structure.

    Area 2: Integration of motors with a micro controller will present many opportunities to become familiar with new data structures and functions without the luxury of a fully featured IDE.

    When complete, post your prospectus on your web site (I will assume you do this for all documents from now on).

    Getting Started

    have been working on generating some websites for the project, now we have: