[AR] Re: Flight Controller Features

  • From: "Monroe L. King Jr." <monroe@xxxxxxxxxxxxxxxxxx>
  • To: arocket@xxxxxxxxxxxxx
  • Date: Sun, 10 Jan 2016 20:56:07 -0700


I'm going to echo what Paul said a couple of weeks ago - it's going to 
be hard to get folks to agree on anything common.  I'm not knocking the 
idea of trying to make a common flight controller, go for it if that's 
what you're interested in.  I can't speak for others but I would have no 
interest in using it. I've spent too much of my life debugging other 
people's code and "discovering" interesting and unexpected behavior 
along the way.  When I looked at that OSAL/CFe code a while back, my 
first thought was it looked very powerful but also comes with a lot of 
overhead.  For me, the flight computer is an area where I can be 
creative and try out clean-sheet concepts. This may sound silly but part 
of what makes amateur rocketry interesting for me is that it's hard and 
you can't just buy the pieces off the shelf.  I actually enjoy learning 
the details of how all this stuff works.  When everybody is launching 
actively controlled rockets with off-the-shelf H/W and S/W (like the 
drone folks are doing), that's probably when I'll lose interest and move 
on to something else.

 Robert that's really cool and I understand that actually once the
challenge is over I've always moved on myself. BUT! I am not a jack of
all trades :) and programming is probably my weakest skill. That said I
know I'm not alone in that either. It's also one I only do out of
desperation and is very slow. (obviously with all the other aspects I've
been working on I was not yet able to learn enough to get the job done)

 These are the things I want to help others like me accomplish.
    
But to answer your question, here's my wish list (coincidentally similar 
to what I'm working on):

 Having said that (you) thank you very much for your input.
 
1.  Decentralized architecture with a robust messaging system between 
components.  This allows S/W functions to be combined on cheaper boards 
or distributed out to separate boards (similar to what PSAS is doing).

 This flight controller runs on Nuttx and there are already inroads in
the stack to offload task to the RPi and the Odroid ect...
 
2.  A sequencer / state machine that allows for an orderly startup of a 
liquid engine with appropriate sensor checks along the way for 
out-of-tolerance values, etc.  Also include the ability to hold the 
countdown and be able to override any checks, jump to other steps, etc.

 I know this is a question with a long answer (which you may not be
inclined to) But could you give a detailed run down on exactly what you
want here? I know this varies a lot but I can compare your answers and
my answer to this and see what they add up to. (anyone else is invited
to take a stab at this if your willing also)
  
3.  Specifics of individual sensors decoupled from the architecture so 
you can try out different IMU, GPS, pressure sensors, etc.

 This hardware has more than one IMU built on so that should be doable
fairly easy. We intend to SPI in our own IMU's as well (for higher
dynamics) Which is fairly east to implement. We can also collect data
from other sensors and log it and you can make comparisons of all the
data in real time (by playing back the logs)
 
4.  Every variable in the system should have the units appended to the 
name (temp_deg_c, etc.) so there's no confusion about the units.

 I'll have to check into this off hand I we do but I'm not 100% sure.

5.  Support for digital as well as analog bridge-type sensors. For 
chamber pressure sensors, you want as little dead space as possible and 
almost all of those miniature transducers have millivolt output.  This 
implies an instrumentation amplifier or similar.  You also need 
appropriate filtering for ADC inputs. Most in-amps don't have very good 
CMRR above 1 MHz and with a bunch of high-speed buses around, they 
generate lots of high-frequency noise that typically shows up as mystery 
offsets in your data.  A simple one or two pole RC filter may be good 
enough but the data system needs some thought.

 This would have to be implemented on a next generation board design to
get everything you wanted in that and yeah I agree with you that is a
section of hardware that we would want to add.
 
6.  Support for several high-current outputs for recovery, solenoids, etc.

 Yeah that's not a problem.

7.  Regulated 3.3V power (maybe also 5V for sensors and 10-12V also for 
any servos) from an onboard battery.  Capability to charge the battery 
from an external source and monitor the battery voltage.

 This gets handled in the Cubesat portion of the project but there are
some specifics there that will be variable from project to project so
I'll for sure take that into account as we go forward (thanks for that)

8.  Two-way telemetry, either serial or network based for ground control.

 For this we use the Mavlink protocol which will do the job for most
projects I would believe. I am working with SatNOGS (an amateur ground
tracking network) and that is a whole other can of worms. I'll be trying
to sort out over the next 2 years I imagine. We could do some local
networking for sub orbital rockets and I have some thoughts about that
as well.

9.  Backup recovery system independent of the flight computer that 
allows you to deploy the parachute on command from the ground.

 I'll have to think about this one a bit. How could we best do that.

10.  Ground station S/W that allows you to debug the flight computer and 
monitor additional messages (beyond the TM stream) prior to launch.

 We can do some of this but not to the extent your wanting most likely
I'll look into this farther. We can change parameters in flight but
that's not what your saying either.

11.  Navigation S/W that integrates IMU data with GPS and altimeter for 
position reporting and guidance (Kalman filter).

We do have this capability.

12.  PWM or serial outputs for flight control servos, gimbal actuators, etc.

Yep

13.  Onboard time source synced to UTC for messages (TM and onboard) and 
for synchronizing with other offboard systems.  Most GPS units put out a 
1 PPS that  you can wire into an IRQ pin on the CPU to calibrate its 
onboard oscillator.  Most regular XO units are far enough off that over 
a few minutes, the error can be several tens of milliseconds.

 Actually this is part of the telemetry I'm working on with SatNOGS to
do soft handovers from station to station so that could be implemented.
I'm thinking about why do this but yeah it makes sense. Hummm I'll
consider that and add it to the list.
 
Is all this needed to send something up?  No but hey, it's my project 
and if I find these things interesting, that's what I'm going to work on :)

-Bob

 Thanks I really appreciate the input.


Other related posts: