Matt,
I am keen on a simple, focussed effort ....
But would just like to brainstorm a little further, the UDB as a sophisticated IMU for a moment as that an IMU is an obvious boundary around which one can define an interface.
What speed is the CANBus working at ? How much data can we send over per second ?
The IMU part of the UDB would approx. the following interface:-
Outputs from the IMU:-Location:-
Once per second or on a change of Origin:-
Origin Location: Lat, Long, Altitude, Week Number ( 3 * 32 bits + 16 bit)
Currently produced 40 times / second:-
IMUlocation.x, .y, , .z (Could be 3 * 16 bit words for 1 meter resolution
or 3 * 32 bit words for better resolution (allow for landing))
IMUvelocity.x, .y, .z ( 3* 16 or 3 * 32 bit depending on resolution)
Produced up to 4 times / second:-
GPS velocity over the ground (16 bits)
GPS Lat and Lon and Altitude ( 3* 32 bits)
HDOP Horizontal dilution of precision. (8 bits)
VDOP Vertical dilution of precision (8 bits)
SVS, satellites in view. (8 bit char)
Navigation Valid (True / False). (1 bit) ... probably change to IMU status (8 bits)
Orientation:-
40 times / second
Direction Cosine Matrix: ( 9 * 16 bit integer)
About 10 times / second
Magnetometer output (optional) ( 3 * 16 bit integer) (not necessarily required).
Downstream calculation:-
40 times / second
Current Wind estimation ( 3 * 16 bit integers)
Current Air speed estimation (3 * 16 bit integers)
Status of downstream calculations (is wind likely to be accurate etc).
Upstream .... let assume negligible for now.
On another thread of of interest:-
Also, do you know how much additional RAM you need for mixing on the UDB, i.e. is is just 200 bytes 500 byes or 2 Kilobytes ?
Best wishes, Pete