Software Plan
This an outline of the desired functionality of the rover software. We have two categories: Interface, Rover.
Stage 1 is to be completed by March 39th (right after spring break). Stage 2 does not have a completion date, this will have to be set when stage 1 is close to being finished.
Block Diagrams
This is the current block diagram:
- Taj's Version of Block Diagram (Main differences now integrated into above diagram)
- Scott's Version of Block Diagram
Block Descriptions
Interface (Laptop)
Block Author InterfaceProcessManagerBlock Ben InterfaceWirelessBlock Ben LoggerBlock Akhila DataProcessingBlock None Yet UserInputBlock Taj ControlInterfaceBlock Taj TactileInterfaceBlock Taj GUIBlock Taj DisplayBlock Taj
Rover
Block Author RoverProcessManagerBlock? Ben RoverWirelessBlock? Ben MotionControlBlock Scott SystemInputsBlock Shady ModuleHandlerBlock Scott
Interface
This is the software that runs in the base station. The goal is for this to be simple but powerful, we need to be able to tune/fix things from remote if at all possible. In Utah the bad happens, the software will be ready for this.
Requirements - Stage 1 - Due March 29th
- Run under linux
- Communicate with rover
- Read sensors/log data
- Control Rover
- Control Arm
- Live feedback of information
- Easy to use
- ...
extra awesomeness - Stage 2 - No due date yet
- Arm software interface
- Environment mapping
- Map/Position plotting
- Path routing / fastest route solving
Rover
This is the software running on the rover. This will be running on an ARM level embedded system, this means we have some power. The onboard software should be able to deal with anything we tell it from the interface, as well as (hopefully) protect the system from human mistakes.
Requirements - Stage 1 - Due March 29th
- Stable
- Controls all of rover modules
- Motors
- GPS
- Compass
- Arm
- cameras
- ...
- Handles low/no power correctly
- anti-own-self mechanism ;)
- handles disconnect (doesn't run away)
extra awesomeness - Stage 2 - No due date yet
- Point to point autonomous
- Retrace steps to regain communication
- Auto targeting arm
Attack Plan
We will be utilizing OOP principles heavily, this does mean that our code will primarily be written in C++, though some segments may utilize C or Python when appropriate. Libraries we will utilize:
- Gui - Qt
- LibUSB - usb interface
- pthreads - Threading
- OpenGL - Advanced Rendering
Classes/Modules that can be / need to be written:
- USB abstraction
- Be able to open usb device based on VID/PID
- Abstract packed sending/receiving and buffering
- Gui Abstraction
- Simple interface to change values on the GUI
- Check event queue for events
Work for 11/23/2008
- Descriptions of the Blocks
- Taj : GUI, User Input, Display, Control Interface, Tactile Interface
- Akhila: Logger, Module handlers
- Ben: Data Processing, Wireless, Process Communication
- Scott: System Inputs, Motor Control
Attachments
- taj-block-layout.odg (13.1 kB) -
taj's block layout
, added by mortont on 11/12/08 21:00:34. - Scotts_block_diagrams.odg (13.2 kB) -
Scott's ideas for block diagrams
, added by rosenbas on 11/15/08 23:41:59.
