Today the weather finally cooperated and I dashed off to my local flying field for a long lunch.
My Ardu-IMU-Pilot had two successful flights! Performance was quite poor, but considering that I changed all the control laws and picked gains out of the air I am satisfied that the UAV was able to complete the prescribed circuit (multiple times in fact).
It is funny to see this track on google earth because in fact most of the ground today was covered in snow. I'll have to remember to see how snow cover affects the thermopiles some time.
What I did:
I converted my current UAV (Superstar EP airframe, Brushless/lipo power system, Thermopile based ArduPilot autopilot) to a IMU based system. To do this I used ArduIMU. I connect the GPS to ArduIMU and connect the serial output of ArduIMU to ArduPilot. I have modified V2.4 of the ArduPilot code significantly to use data from ArduIMU rather than the thermopiles. I have also modified the ArduIMU code to provide a binary data message to ArduPilot.
My test flights today proved out the architecture. The new autopilot system successfully provided stabilization and navigation. However, performance was quite poor and I need to do some tuning of both the code and the gains.
I chose to completely change the control laws. I did this for two reasons. First, because this is open source and I can! Second, because I wanted to try out some ideas for the turn-rate limiter workgroup. Briefly, I added a cross track error component to the roll control loop (zero gain today), I changed the elevator control loop so that elevator is used to maintain constant airspeed, and the throttle control loop is used to maintain desired altitude.
Trying out the new elevator and throttle control laws simultaneously with poor gain choices was a disaster. So, I quickly rewrote the elevator control to just hold zero pitch. With this change things went better.
What went poorly:
Well, my roll gains need adjusting. Rolling into a turn would produce bank angles in excess of the desired maximum, and there was a lot of wing wagging going on at times.
Also, my quick patch to hold zero pitch I believe in fact was holding some amount of up pitch relative to the wing. When the UAV was below target altitude and the throttle setting was relatively high things went well. However when the UAV got above target altitude the throttle was reduced to a low level things did not go so well. The elevator continued to hold zero pitch, which was actually some amount of positive pitch, and the airframe slowed until it stalled. I found that it (my SuperStar) does not stall nicely, with a very pronounced tip stall. This produced a couple of unwanted circles during the mission.
I think my next step will be to do some manual flying with data logging to get some data on throttle settings versus pitch & airspeed. With that data I should be able to rework the elevator and throttle controls. I would also like to log some data during some manually flown aerobatics and see how my ArduIMU results compare with those being gathered by Jose Julio.