Catapult

https://groups.google.com/forum/m/#!topic/uavdevboard/Jm4PqZ66KRY

Thanks very much for limiting the pitch drift corrections during catapult launches.

It has made a significant improvement to my hand launches in stabilized mode. I expect pilots that hand launch will enjoy this in future main stream releases of MatrixPilot.

In the past I have always still had a rather large dip towards the ground by my Alpha Axion after launching it by hand with a throw. I had to quickly grab my transmitter from my left hand, and put in up elevator for the first couple of seconds of flight. I could have had a trim switch for takeoff (As Ric suggested long ago, if I had a decent transmitter. But I'm using a cheap 2.4Ghz transmitter that comes with the plane, because one day I want all my planes in the air at the same time .)

Anyway, I had a new plane (with a new cheap transmitter) for the Autopilot stack. And it's heavier with 3 autopilots. So I was a bit worried on launch that it would really dip badly. It did not ! It flew away smoothly. I thought it might be a slight difference in my new airframe. I was running MatrixPilot_mw4 revision 2961.

I then ended up running MatrixPilot_mw4 in my original plane, (not the autopilot stack plane). It too launched beautifully with hardly any dip. And the only change was the firmware. Then it clicked. Mark W. had incorporated the new Bill Permerlani limitations on pitch drift. What a difference ! It's so nice to be more relaxed on a hand launch.

Thanks Bill, Mark, Tom and Phil (the latter two investigated the issue in detail for catapult launching of their X8 flying wing).

Best wishes, Pete

static void roll_pitch_drift(void) {	VectorCross(errorRP, gplane, &rmat[6]); // the following is done to limit the pitch error during a catapult launch // it has no effect during normal conditions, because acceleration compensated gplane // is approximately aligned with rmat[6] vector if ( errorRP[0] > MAXIMUM_PITCH_ERROR ) errorRP[0] = MAXIMUM_PITCH_ERROR ; if ( errorRP[0] < - MAXIMUM_PITCH_ERROR ) errorRP[0] = - MAXIMUM_PITCH_ERROR ; return ; }