It was an exciting, action packed meeting this evening. Well.... it was a long evening that's for sure. From 5:00pm - 2:30am we worked on the software and firmware for the avionics system, trying desperately to get it to work for USENIX. We even got pretty close! The goal for USENIX is:
The inertial measurement unit sends data over CAN to the Flight Computer which sends the virtual CAN packets over wireless (802.11b) to the telemetry computer which then displays them in rocketview.
During the meeting, Larry and keith worked on the uplink code and got java talking to the serial port (and thus eventually the 2m radio), Ian and James refactored the FC/LTC code after it getting munged up this weekend, Dave and Jamey worked on rocketview, Karl worked on launch control code. Tim, Bart, Kathrine and Stephan did various things, including providing moral support, ranging from Bart adding an amazing language called 'nickle' to the PSAS server ;) to Tim jumping up and down when a CAN message finally turned on the damn light bulb (thanks).
<font="-1"> Everyone working hard, including James' evil twin
After 7 hours of work tonight, we got IMU -> FC -> 802.11b -> TC to work, which is exciting and feels like we got over a major hump. And the Avionics Power System (APS) was even vaguely functional - we turned the rocket on and off via a message on the CAN bus, and saw IMU messages pouring over the CAN bus and into the FC. James even ran FCFIFO on his laptop, thus proving we got the CAN messages over the wireless. Hooray!
We also talked about CVS, which got us in a bit of a mess this last weekend. Someone (Jamey? James? Ian?) should add more here.
This was a meatware problem, not a software problem. I haven't been too available for planning, as real life has intervened, and the same is true to a greater degree for Jamey. Ian and Andrew tried to interpret our cryptic ramblings and ideas about how to partition and implement code for the Launch Tower Computer, and decided it meant adding the Launch Tower code in the Flight Computer FIFO source directory, which is close but not quite on the mark. Ian well-meaningly ended up morphing the code away from Flight Computer software and toward overly-complicated Launch Tower Computer software, and checked this into CVS. Meanwhile, I was away for the weekend and was working on extending the flight computer software on my laptop. I was already a bit perplexed with some of Dave's changes. When I got back Sunday night, I ran
cvs update to merge in changes -- I saw quite a few but tried not to worry, hacked enough to get things sort of working, then commited my changes. Then updated, and crap!!! even more clearly incompatible changes from Ian, and no clear way to make him stop (CVS doesn't have access controls, and we're not trained on branching).
Some swearing and complaining to Andrew helped me calm down. We lost significant time, but in the end, it was a good learning experience... at the meeting we discussed the design and implementation, factored out common bits of code into a new ltc-fc-common module, created a ltc module for the launch tower application, and I reworked the flight computer application. The code we designed ended up much more slender, readable, and risk-averse. Keith, Jamey, Dave, Larry, Andrew, Ian, Bart and I talked about effective CVS use and collaboration, and settled on a model where:
- a README in each software module directory identifies a contact for that area of code and its interfaces
- to commit changes one must have the explicit blessing of the contac.
- changes to the interface between modules must have the approval of all parties using that interface
- limit breakage to an evening or so
- use tags liberally to identify working, stable versions
- People expecting stable software should not use the tip of trunk revisions; they should use the most recent stable label
Many thanks to Keith for his wisdom.
Bart recommend checking out OpenCM for the future. I think as a refinement this is worth looking into. --
<font="-1"> Flight Computer Guts. Note the blinking lights!
- Dave: rocketview rocketview rocketview. Do you need help on this? Should we assign you more people, like Jamey?
- James: Debug flight computer code.
- APS: Fix bugs, make it ignore non-APS messages, implement more message error checking, etc.
- IMU: Possible rewrite, with messages/second command.
- GPS/ATV: virtual UART, CAN commands (Markus?)
- Ian: Launch Tower Computer code.
- Larry: Clean up uplink code.
- Tim: Try to dig up calibration constants for the IMU. Maybe sketch out an algorithm to zero the gyros.
- Ted: CAD drawings to Tom, quick and dirty CAN relay board
Certainly next Monday 6/9 , right before we take off. Brian will already be gone, but Ted and I can take the avionics with us.
However, I'd like to encourage people to meet this coming Sunday, from noon to about 5:00pm or later. That way we can get everything that we need to up and running, and do clean up Monday evening. More soon on that.
Good job everyone.