summaryrefslogtreecommitdiff
authorNathan Bergey <nathan.bergey@gmail.com>2013-12-07 20:30:34 (GMT)
committer Nathan Bergey <nathan.bergey@gmail.com>2013-12-07 20:30:34 (GMT)
commit71452107af538d2394f61078ac56e7193a53780d (patch) (side-by-side diff)
tree91f30c32179f29e75d7ee6c297e694c3cd4141be
parent5b75767f5e90ae9aaaf660c0e6246a1a88d1d4e8 (diff)
downloadwiki-71452107af538d2394f61078ac56e7193a53780d.zip
wiki-71452107af538d2394f61078ac56e7193a53780d.tar.gz
links and details of current software projects
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--software.mdwn194
1 files changed, 152 insertions, 42 deletions
diff --git a/software.mdwn b/software.mdwn
index 516d8df..b07cdba 100644
--- a/software.mdwn
+++ b/software.mdwn
@@ -6,41 +6,63 @@
## Software at PSAS
-Our biggest challenge at PSAS is making a rocket, in theory, steerable. This requires a monumental effort in all the major engineering fields. In addition to having an actual rocket one needs excellent electronics to provide sensor measurements and to actuate controls, and the software to run all of it. In order to write software like this you also need testing frameworks and some kind of simulation of flights to debug the main flight software. These layers of complexity make up the software project at PSAS.
+Our biggest challenge at PSAS is making a rocket, in theory, steerable. This
+requires a monumental effort in all the major engineering fields. In addition
+to having an actual rocket one needs excellent electronics to provide sensor
+measurements and to actuate controls, and the software to run all of it. In
+order to write software like this you also need testing frameworks and some kind
+of simulation of flights to debug the main flight software. These layers of
+complexity make up the software project at PSAS.
### The Problems With Spaceflight
-Why are rockets hard? One of the most interesting things about building a space program from scratch is finding out that the problem often isn't where you think it is. Could you just build a giant rocket motor and light it? Yes, you could. But it won't do what you want. Instead of going up will arc in an unpredictable direction. The parachutes wont fire at the right time, and you'll never find it again because you won't be able to track it.
+Why are rockets hard? One of the most interesting things about building a space
+program from scratch is finding out that the problem often isn't where you think
+it is. Could you just build a giant rocket motor and light it? Yes, you could.
+But it won't do what you want. Instead of going up will arc in an unpredictable
+direction. The parachutes wont fire at the right time, and you'll never find it
+again because you won't be able to track it.
> The hard part about rockets is often everything **around** the rocket
-This is a truth of building a space program. How are you going to handle communication? Sensors? What are you going to program? How are you going to test that? How are you going to test your test framework?
+This is a truth of building a space program. How are you going to handle
+communication? Sensors? What are you going to program? How are you going to
+test that? How are you going to test your test framework?
### Current Design Philosophy at _PSAS_
-We've been attacking all these problems and more in different ways for years. We're now starting to bring this experience together into a cohesive design.
+We've been attacking all these problems and more in different ways for years.
+We're now starting to bring this experience together into a cohesive design.
-There are two basic modes for our program:
-
- 1. Testing
- 1. Launch Operations
#### Testing
-We spend 98% of our time on the ground. That is, not actually launching a rocket (launches are expensive and only happen once a year). But we still want to be able to run all of our software _as if_ we're actually above the ground. This means we spend a lot of energy trying to design a good, usable test framework. We also need a simulator for almost every aspect of the rocket. We also like to be able to run as much software as possible on generic hardware so people can work on ideas on their laptops or test boards and do not need the expensive, one-of-a-kind, flight computer to get work done.
+We spend 98% of our time on the ground. That is, not actually launching a
+rocket (launches are expensive and only happen once a year). But we still want
+to be able to run all of our software _as if_ we're actually above the ground.
+This means we spend a lot of energy trying to design a good, usable test
+framework. We also need a simulator for almost every aspect of the rocket. We
+also like to be able to run as much software as possible on generic hardware
+so people can work on ideas on their laptops or test boards and do not need
+the expensive, one-of-a-kind, flight computer to get work done.
#### Launch Operation
-When it's time for a launch we have to disable all the testing bits, and make sure we're in a good launch configuration. We can drop all the simulation and testing work and boot the real flight computer. We need logs of everything during a launch so we know what happened after the fact and can plan better for future launches.
+When it's time for a launch we have to disable all the testing bits, and make
+sure we're in a good launch configuration. We can drop all the simulation and
+testing work and boot the real flight computer. We need logs of everything
+during a launch so we know what happened after the fact and can plan better
+for future launches.
-To this end, most PSAS software has some kind of production switch.
+Therefore, most PSAS software has some kind of production switch.
### Major Softwares
-This is the list of major software and what it's used for. Items in **bold** are written by PSAS.
+This is the list of major software and what it's used for. Items in **bold** are
+written by PSAS.
- **Flight computer**: [av3-fc](https://github.com/psas/av3-fc)
- **Telemetry viewing/recording**: [telemetry](https://github.com/psas/telemetry)
@@ -55,77 +77,165 @@ The high level view of programs running in the two modes look like this:
#### Testing
-[[!img highlevel_testing.png size="800x800" alt="testing software layout"]]
+[[!img highlevel_testing.png size="800x800" alt="testing software layout_"]]
#### Launch Operation
+Compile everything for flight. Set all flags to flight, watch data in real
+time on telemetry viewer.
+
# Flight Computer (FC)
-## The Flight Computer
+[[AV4|avionics]] is an Intel Atom based flight computer, connected via Ethernet
+to Cortex M4-based sensor nodes. Wireless 802.11 telemetry to the ground
+during flight.
+
+
+
+
+## Flight Computer Code: psas/av3-fc <https://github.com/psas/av3-fc>
+
+The PSAS portion of the flight computer code is written by us in C. This is
+what is running during flight. It culls data from various sensors and sends
+live telemetry to the ground. This is where all real-time state estimation
+and control algorithms are contained.
+
+ - clone: `git clone https://github.com/psas/av3-fc.git`
+ - download current master: [av3-fc-master.zip](https://github.com/psas/av3-fc/archive/master.zip)
+ - releases: <https://github.com/psas/av3-fc/releases>
+ - documentation: <http://psas-flight-computer.readthedocs.org/>
+ - issues: <https://github.com/psas/av3-fc/issues>
+ - build status: [![Build Status](https://travis-ci.org/psas/av3-fc.png)](https://travis-ci.org/psas/av3-fc)
+
+
+
+
+## FC Environment: psas/fc-environment <https://github.com/psas/fc-environment>
+
+The flight hardware is running debian based linux. Kernel config, custom udev
+rules and other environment info are here.
+
+ - clone: `git clone https://github.com/psas/fc-environment.git`
+ - download current master: [fc-environment-master.zip](https://github.com/psas/fc-environment/archive/master.zip)
+
-[[AV4|avionics]] is an Intel Atom based flight computer, connected via Ethernet to Cortex M4-based sensor nodes. Wireless 802.11a telemetry to the ground during flight.
-The user space flight computer code is written by us in C:
- - FC repository: <https://github.com/psas/av3-fc>
+## FCF - Flight Computer Framework: psas/elderberry <https://github.com/psas/elderberry>
+The main flight computer uses a framework that was developed by the 2013 CS
+Capstone group.
-The flight hardware is running debian based linux. Kernel config, custom udev rules and other environment info are here:
+The main flight computer has code for each task, and each piece is highly
+modular. For example `arm.c` only has code for handling the arm/safe state.
+'Elderberry' is a python code generator that with the help of some config files
+creates an event based main that calls the modules. This way we can hand someone
+one piece of functionality to develop without worrying about integration into
+the rest of the code. This is handled automagically!
- - FC Environment: <https://github.com/psas/fc-environment>
+ - clone: `git clone https://github.com/psas/elderberry.git`
+ - download current master: [elderberry-master.zip](https://github.com/psas/elderberry/archive/master.zip)
+ - releases: <https://github.com/psas/elderberry/releases>
+ - documentation: <http://psas.github.io/elderberry/>
+ - issues: <https://github.com/psas/elderberry/issues>
-Our previous avionics experiments were with CAN (not developer-friendly) and USB (bad latency).
-- [Event-driven flight computer simulator](https://github.com/psas/event-driven-fc) is for experimenting with control algorithms, like Bayesian Particle Filtering
-### FCF - Flight Computer Framework
+## FCFTF - Flight Computer Framework Test Framework: psas/fc-test <https://github.com/psas/fc-test>
-The main flight computer uses a framework that was developed by a 2013 CS Capstone group. This code creates the event loop that calls modules of code written to do particular tasks. That way the software team can focus on functionality.
+Because there are lots of moving parts, a test framework has also been built to
+help run the FC locally.
- - FC framework <https://github.com/psas/elderberry>
+ - clone: `git clone https://github.com/psas/fc-test.git`
+ - download current master: [fc-test-master.zip](https://github.com/psas/fc-test/archive/master.zip)
-### FCFTF - Flight Computer Framework Test Framework
-Because there are lots of moving parts, a test framework has also been built to help run the FC locally.
+Our previous avionics experiments were with CAN (not developer-friendly) and USB
+(bad latency).
- - FC test framework <https://github.com/psas/fc-test>
+[Event-driven flight computer simulator](https://github.com/psas/event-driven-fc) is for experimenting with control algorithms, like Bayesian Particle Filtering
-## Launch Tower Computer
+# Launch Tower
-[[Launch tower computer|GroundTeamHome/launch tower v3]] uses Phidgets for sensor nodes and a Beagle board to serve them. Unlike previously, there will be direct ethernet connection between the launch tower computer and rocket while on the pad, used for bringing up and controlling the avionics pre-flight. Wireless 802.11n/g between launch tower computer and telemetry consoles and launch control consoles.
+The rocket is placed on a guiding rail for launch. There is a small embedded
+computer at the base of the tower that is control of the ignition of the rocket
+motor. We also have an umbilical cable that attaches the rocket for power and
+data up until the launch.
- - Repository: <https://github.com/psas/launch-tower>
-## Launch control
+## Launch Tower Computer (LTC): <https://github.com/psas/launch-tower>
-Console software written in Python 2.7 with Kivy UI framework <http://kivy.org>. Phidgets python drivers also required. Linux recommended.
+[[Launch tower computer|GroundTeamHome/launch tower v3]] uses Phidgets for
+sensor nodes and a Beagle board to serve them. Unlike previously, there will
+be direct ethernet connection between the launch tower computer and rocket
+while on the pad, used for bringing up and controlling the avionics pre-flight.
+Wireless 802.11n/g between launch tower computer and telemetry consoles and
+launch control consoles.
-- Repository: <http://git.psas.pdx.edu/launch-tower-comm.git>
-- Kivy framework: <http://kivy.org/#download>
-- Kivy documentation: [old](http://kivy.org/docs/guide-index.html), and [new](http://kivy.org/docs/guide2-index.html)
-- Phidgets Python support: <http://www.phidgets.com/docs/Language_-_Python#Quick_Downloads>
-- Previous UI spec: [[RocketViewLaunchPanel]], [[LaunchControl]] (Java, CAN-over-sockets)
+This repo has mostly hardware specs.
+ - clone: `git clone https://github.com/psas/launch-tower.git`
+ - download current master: [launch-tower-master.zip](https://github.com/psas/launch-tower/archive/master.zip)
-## Telemetry Viewer
+
+
+
+## Launch control: psas/launch-tower-comm <https://github.com/psas/launch-tower-comm>
+
+Console software written in Python 2.7 with Kivy UI framework <http://kivy.org>.
+Phidgets python drivers also required. Linux recommended.
+
+This runs on a laptop in mission control. It has a screen that can read and
+update the sensors and switches in the launch tower computer.
+
+i.e., this is the big red launch button.
+
+ - clone: `git clone https://github.com/psas/launch-tower-comm.git`
+ - download latest master: [launch-tower-comm-master.zip](https://github.com/psas/launch-tower-comm/archive/master.zip)
+ - releases: <https://github.com/psas/launch-tower-comm/releases>
+ - issues: <https://github.com/psas/launch-tower-comm/issues>
+
+Helpful links:
+
+ - Kivy framework: <http://kivy.org/#download>
+ - Kivy documentation: [old](http://kivy.org/docs/guide-index.html), and [new](http://kivy.org/docs/guide2-index.html)
+ - Phidgets Python support: <http://www.phidgets.com/docs/Language_-_Python#Quick_Downloads>
+ - Previous UI spec: [[RocketViewLaunchPanel]], [[LaunchControl]] (Java, CAN-over-sockets)
+
+
+# Ground Software
+
+## Telemetry Viewer: psas/telemetry <https://github.com/psas/telemetry>
A summer 2013 CS Capstone group helped us build a real time telemetry viewer.
+This software is designed to run on one machine on the mission control network
+and then allow multiple clients to view custom telemetry pages in near real time
+via a web interface.
- - Telemetry: <https://github.com/psas/telemetry>
+ - clone: `git clone https://github.com/psas/telemetry.git`
+ - download current master: [telemetry-master.zip](https://github.com/psas/telemetry/archive/master.zip)
+ - releases: <https://github.com/psas/telemetry/releases>
+ - documentation: <http://psas-telemetry-server.readthedocs.org>
+ - issues: <https://github.com/psas/telemetry/issues>
-Pretty much everything below is obsolete. The previous requirements, communications protocols, and UI designs could be instructive for current projects.
+# Miscellaneous
-## Admin
+#### PSAS Admin Tasks (plz ignore)
- [[SudoSetup]]
-# History
+# Software History
Old version of this page: [[Software Team History|software/history]].
+
+This has lots and lots of very, extremely out of date information and ideas!
+However the previous requirements, communications protocols, and UI designs
+could be instructive for current projects.
+