A long time ago( a year ago) we had a software design.
We created a code structure for this software that matched this design, and then it branched.
One branch turned into vehicle control software optimized to run static rocket tests and gather data.
The other branch learned to fly the helicopter.
Over time the two branches grew and mutated until they were not really recognizable as twins.
The vehicle branch controls all the rocket actuators and logs data while running static tests.
The helicopter branch hovers the helicopter in place and successfully moves it to a selected 3D waypoint.
The vehicle branch gains such things as differential GPS and a flash file system to record data.
The helicopter branch gains things like status LED’s and remotely programable modes selectable via the RC transmitter.
About a Month ago as the physical vehicle reaches completion we started working to merge what is common in the two branches in preperation for hovering the vehicle.
We split out the parts that are defferent between the two vehicles into vehicle specific modules and merged the parts that are common.
This merge took about two weeks and the merged software passes all the ground tests we can throw at it.
The merged software almost flies the helicopter, it is just a tiny bit unstable. The helicopter holds position sort of and if its not disturbed almost flies, disturb it and it goes into ever increasing wobbles….
So we added the ability to tweak the control system gains in flight and flew the helicopter, we reverted the GPS to WAAS mode and flew the helicopter, we played with gains and flew the helicopter, we stuck the tail roter in the dirt, we fixed the tail roter, we flew the helicopter, we stuck the tail roter in the dirt we replaced the tail roter gear box, we adjusted gains , we flew the helicopter, we adjusted gains, we stuck the tail roter in the dirt we replaced the tail roter belt, we flew the helicopter, we had a dumb thumbs moment while trying to check the blade tracking in manual mode, and we replaced the gear, the training poles, the main roter blades, the tail boom, the landing gear, and the tailroter ie rebuilt the helicopter, and we adjusted the gains, and our hair turned grayer, and we swore at the helicopter.
We went back to the source control, checked out the last version of the Helicopter before the attempted merge, we reverted the the GPS to WAAS mode, and we flew the helicopter. It flies perfect…..arghhhhhhhh!
So we know its not the GPS, not the IMU, not the servos, not the helicopter mechanics, or any thing else it’s the software and as far as I can tell the control laws and delays are identical, just rearranged into different files.