easymini: Elide symbols from combined .ihx file
[fw/altos] / doc / pyro-examples.inc
1 [appendix]
2 == Example Pyro Channel Configurations
3
4         Programming configurable pyro channels on Altus Metrum products that 
5         include them isn't difficult, but in an attempt to aid understanding
6         of the configuration interface and help "keep simple things simple",
7         we offer the following examples of the simplest configurations for
8         common situations, along with some hints on avoiding unexpected
9         results.
10
11         The rich set of conditions provided can be used to configure almost
12         any pyro event you can imagine, for a wide variety of objectives.  
13         But don't be fooled!  Typical events need only one or a few simple
14         conditions to be configured for success.  A key thing to remember is 
15         that *all* configured conditions must be true to allow a pyro channel 
16         to fire.  Trying to include too many conditions often results in 
17         conflicting rules that never allow a channel to fire.  The most 
18         important advice we can offer is, therefore, to try and find the 
19         simplest set of conditions that will do what you need for a given 
20         project.
21
22         === Two-Stage Flights
23
24                 Successful completion of a two-stage flight often involves
25                 programming of two events.  The first is firing a separation
26                 charge, the second is igniting the sustainer's (primary)
27                 motor.
28
29                 Separation charges are best fired as soon as possible after
30                 the previous stage has completed providing acceleration, to
31                 minimize drag of the sustainer's coast phase before ignition.
32                 Recovery, whether the remainder of the flight is nominal or
33                 not, usually works best when the states are separated.  So,
34                 the "best" way to configure a pyro channel for a separation
35                 charge is to just set "after motor number".  For a 2-stage
36                 project, set this to "1".  This will cause the pyro channel
37                 to fire as soon as the firmware's flight state machine
38                 determines the first motor has burned out.
39
40                 Safe ignition of a sustainer (primary) motor requires that
41                 it happen after the previous stage burns out, while the 
42                 airframe remains mostly vertical, and typically after the
43                 sustainer has coasted away from the booster a bit.  A good
44                 starting point is thus "after motor number" set the same as
45                 the separation charge, which is "1" for a 2-stage rocket.
46                 Then "angle from vertical less than" set to some
47                 reasonably vertical amount, perhaps 20 degrees.  Then "delay
48                 after other conditions" set for the desired duration of coast.
49                 Use simulations to figure out what a reasonable value here is,
50                 but for typical high power rocketry sport flights that aren't 
51                 trying to set records, something like 2 seconds is usually a 
52                 good place to start.
53         
54         === Triggered Clusters and Air Starts
55
56                 When an airframe has a cluster of motors, one of which is 
57                 "primary" and centered, surrounding by a ring of "secondary"
58                 motors, you may want to use the launch control system to                        fire the primary motor and use onboard electronics to light
59                 the rest of the cluster as soon as launch is detected.  This
60                 is particularly true if the primary motor is significantly
61                 different in geometry and may take longer to come up to 
62                 pressure than the secondary motors.  In this case, a simple
63                 configuration to light secondary motors is is "time since
64                 boost greater than" enabled and set to "0".  There's
65                 really no point in setting an angle limit since no time has
66                 transpired for the airframe to change orientation.
67
68                 Air starts can use the same simple configuration, but with 
69                 the time set to a non-zero value.  However, if air starts
70                 are going to light after the airframe leaves the launch rail
71                 or tower, add an "angle from vertical less than"
72                 condition just you would for a 2-stage sustainer to stay safe.
73
74         === Redundant Apogee
75
76                 When flying a board like TeleMega or EasyMega, it's easy to
77                 configure a programmable channel to fire a redundant apogee
78                 charge.  This is of course not *fully* redundant, since it's
79                 always possible that the board itself or its battery could
80                 the the failure source, but far more often, pyro events fail
81                 due to broken wires, bad connectors, or bad e-matches... so
82                 firing two charges from one board can add useful redundancy.
83
84                 The simplest configuration for redundant apogee is "flight
85                 state after" set to "drogue", and then "delay after other 
86                 conditions" set to a second or two.
87
88         === Redundant Main
89
90                 Similarly to apogee, configuring a redundant main charge can
91                 provide useful redundancy.  What we want is to configure an
92                 altitude for deployment lower than the primary main deploy
93                 altitude, and then ensure we only trigger on that condition
94                 while descending.
95
96                 The simplest configuration for redundant main is "flight
97                 state after" set to "drogue", which will ensure we're in to
98                 the descent phase, then "height less than" set to a number
99                 lower than you've chosen for the primary main channel 
100                 deployment height.
101
102         === Apogee Above Baro Sensor Limit
103
104                 A question we've seen increasingly often is "How does the 
105                 Telemega/Easymega detect apogee for flights above 100,000
106                 feet?"  Flights above that height are a bit outside
107                 our original design envelope, but can be made to work...
108                 This is *not* a simple flight, and the configuration for it
109                 is also not simple, but we think including this information
110                 is important for anyone contemplating such a project with our
111                 electronics!
112
113                 Our flight computers use a Kalman sensor-fusing filter to 
114                 estimate the flight state, which consists of three values:
115
116                         1. Height above ground
117                         2. Vertical speed
118                         3. Vertical acceleration
119
120                 Apogee is assumed to be where vertical speed crosses zero.
121
122                 Below 30km altitude (about 100k'), we use both the barometer 
123                 and the accelerometer to update the flight state, along with 
124                 a basic Newtonian model of motion. That works well, pegging 
125                 apogee within a few sensor samples essentially every time.
126
127                 Above 30km, the barometric sensor doesn't provide useful data, 
128                 so we can't use it to update the flight state. Instead, the 
129                 Kalman filter falls back to a single sensor mode, using only 
130                 the accelerometer.
131
132                 At all altitudes, we de-sense the barometric data when we 
133                 estimate the speed is near or above mach as the sensor is 
134                 often subjected to significant transients, which would 
135                 otherwise push the flight state estimates too fast and could 
136                 trigger a false apogee event.
137
138                 That means the filter is no longer getting the benefit of two 
139                 sensors, and relies on just the accelerometer. The trouble 
140                 with accelerometers is they're measuring the derivative of 
141                 speed, so you have to integrate their values to compute speed. 
142                 Any offset error in acceleration measurement gets constantly 
143                 added to that speed.
144
145                 In addition, we assume the axial acceleration is actually 
146                 vertical acceleration; our tilt measurements have enough 
147                 integration error during coast that we can't usefully use 
148                 that to get vertical acceleration. Because we don't live in 
149                 an inertial frame, that means we're mis-computing the total 
150                 acceleration acting on the airframe as we have to add gravity 
151                 into the mix, and simply adding that to the axial acceleration 
152                 value doesn't generate the right value.
153
154                 The effect of this is to under-estimate apogee when you base 
155                 the computation purely on acceleration as the rocket flies a 
156                 parabolic path.
157
158                 For flights *near* 100k', all of this works pretty well - 
159                 you've got the flight state estimates adjusted using the 
160                 barometric sensor up to 30km, then you're flying on inertial 
161                 data to apogee.
162
163                 For flights well above 100k', it's not great; you're usually 
164                 going fast enough through 100k' that the baro sensor is still 
165                 de-sensed through the end of its useful range, so the flight 
166                 state estimates are not as close. After that, as you're flying 
167                 purely on accelerometer data, there's no way to re-correct the 
168                 state, so the apogee estimates can be off by quite a bit.
169
170                 In the worst cases we have seen, the baro sensor data was 
171                 wildly incorrect above mach due to poor static port design, 
172                 leaving the state estimate of speed across the 30km boundary 
173                 way off and causing the apogee detection to happen far from 
174                 the correct time.
175
176                 The good news is that correctly determining apogee is not 
177                 really all that important at high altitudes; there's so little 
178                 density that a drogue will have almost no drag anyways.  Data
179                 from customer flights shows a very parabolic path down to 
180                 about 50-60k feet, even with a recovery system deployed.
181
182                 So, what we recommend is to set up two apogee plans:
183
184                         1. Use the built-in apogee detection, but add a 
185                            significant delay (as much as 30 seconds). This 
186                            will probably fire near enough to apogee to not 
187                            have a significant impact on the maximum height 
188                            achieved.
189
190                         2. Add a back-up apogee which fires after apogee 
191                            *when the height is below about 20-25km*. This 
192                            way, if the flight isn't nominal, and the sustainer 
193                            ends up reaching apogee in dense air, you aren't 
194                            hoping the chutes come out before it gets going 
195                            too fast. And, you get a second pyro channel firing 
196                            at that altitude even if it reached a higher 
197                            altitude before.
198
199                 You can wire these two pyro channels to the same pyro device; 
200                 you just need to make sure they're wired + to + and - to - 
201                 (the manual shows which screw terminals are which).
202
203                 The bottom line is that flights to altitudes modestly above
204                 the range of the baro sensor with Altus Metrum products can
205                 be accomplished safely, but flying "way high" (like 300k') 
206                 demands a deployment mechanism which doesn't solely rely on 
207                 altimeters (like ours) which are designed for modest altitude 
208                 rocketry.  Flights to those altitudes also probably need 
209                 active stabilization to make sure they follow the prescribed 
210                 trajectory and stay inside their waiver.