I've been working with the Auto Takeoff macro and have experienced the problem where the throttle goes to "max" as soon as AUTO mode is selected.
The documentation and other posts tell me that I should close the throttle and put the APM in AUTO mode. Next I should advance the throttle off the lower stop. Only then, when the airplane velocity gets to 3 meters per second, the APM should go to max autopilot throttle and pitch up to climb straight ahead to the target altitude.
Here is what does happen- First, I load a simple APM flight plan. Waypoint one uses the Auto Takeoff macro with the max angle set to 15 degrees and the target altitude to 300 feet. The second waypoint is a Loiter_Unlimited at 300 feet. This sequence is really just a test of Auto Takeoff.
Once the flight plan is loaded, I walk the airplane up behind and put it on a bungee launcher. With the throttle closed, I then use the transmitter to put the APM in AUTO mode. At this point, the APM will consistently command max autopilot throttle. And this happens with the transmitter throttle closed and the airplane at rest, "zero" velocity.
Other people have reported this same bad behavior. You can see it demonstrated live in MyGeekShow Episode 50 starting at 1:05 into the video. He has completed a short checkout flight to verify Stabilize mode. As soon as he switches to Auto mode, the motor spins up to takeoff power while he is holding the airplane overhead. This is right after he tells the viewers that it will wait for forward motion.
Have a look - http://youtu.be/DR8JU5Qep0E
My setup is --
Airplane - X8 Wing
ArduPilot 2.5 with Arduplane 2.66
APM Planner 1.25 Mav 1.0
DragonLink RC radios
3DR Telemetry radios
JR9303 RC Transmitter
To investigate this in a safer environment, I created a testbed with an APM 1, GPS and DragonLink on a piece of balsa. The throttle channel is connected to a 9g servo swinging a half-inch arm. The APM 1 has the same ArduPlane 2.66 code and the same parameter set as the airplane. I loaded the same flight plan via USB.
Disconnected from Mission Planner, the board gets powered up and I wait until the GPS has lock. As soon as the JR switch commands Auto mode, the throttle servo goes to (75%) autopilot max. Every single time and without exception. It does not wait for movement, it just goes for takeoff immediately.
Here's the (procedural) solution- You have to power up the APM and be connected to Mission Planner, either by USB or radio link. You have to use Mission Planner to manually set the current waypoint to "Waypoint 1". Once that is done, the Auto Takeoff macro will perform as intended. With the transmitter throttle closed, it will go into Auto mode and wait. When the throttle is advanced, this arms the code and the APM will advance its throttle channel after seeing about 8 mph.
I tested both the failing sequence and the successful sequence several times by putting the balsa testbed system on my dashboard and driving up and down the street. Anyone should be able to duplicate this test and I would like to see others check my work.
As it stands, the Auto Takeoff macro is dangerous. The APM code starts up on waypoint "zero". The prop will spin as soon as Auto mode is commanded. If the pilot is unprepared, this can easily cause injury and/or damage. I don't know why ArduPlane starts on waypoint zero when every flightplan begins with waypoint one. It's my guess that this is the aspect of the code that should be reviewed.
Please let me know and I will be glad to add this as a bug.
thanks for your great post! it really helps me. I've got one little problem still. When i let is stay on waypoint zero the motor spins and my elevons are in the RIGHT position (when plain horizontal the elevons 30 degree) but when i use you trick the motor is out (that is great) but my elevons are in the wrong position (one up / one down like it wants to make a turn. Tomorrow I want to test de auto takeoff like you discribed for the first time but I'm afraid that this elevon situation will cause a crash? Do you have the same problem or do you have a solution?
Thanks a lot, Pieter
Thanks for posting, I was beginning to think that no one else in the DIYDrones community either sees this or considers it a safety issue.
To your question- AutoTakeoff is supposed to make the plane climb straight out until it reaches the altitude as set in that waypoint. But, how does it determine "straight out". A pilot looks ahead and picks out a reference point on the horizon, then steers for that point. My understanding is that an APM2.x uses the current magnetometer heading, while the APM1.x will use the GPS heading. GPS heading is unreliable when standing still. I've seen advise to walk the plane forward to the launch point in the desired direction and this will set the takeoff heading. Not the best solution, but it's what can be done with GPS. So, when you observe the elevons, the APM is trying to turn to the takeoff heading.
I found another problem that happens for me after AutoTakeoff starts. My second waypoint is a Loiter_Unlimited. So, the documentation says the plane will climb straight out to initial altitude, then Loiter_Unlimited will make it circle at that point until I give it another command. In practice, my airplane makes a climbing right-hand turn and then circles over the HOME position. It seems to be skipping the Loiter command and going past it to an RTL. So, you should consider what the next waypoint it asking for. If your flight plan is like mine, then it may be doing the same right climbing turn to go back to the HOME position. Have you tried the AutoTakeoff yet, and what does your flight plan look like?
I've been working on battery and power issues since the initial post and I am somewhat astounded that no one commented, corrected me or acknowledged the "waypoint 0" problem. After the holidays I am going to try several AutoTakeoff variations to see if I can make a better description of the problem.
Andy, the weather was bad today so i will try the auto take off for the first time somewhere this week. I fly a Skywalker X8. I will try your advice to walk the plane a little bit forewarn to see if the elevons are corrected.
Im using a Launcher and i have rebuild it so the motor can turn full throttle but the plane stays locked in the launcher, an extra servo has an release mechanism so i can release the plain 1 a 2 seconds after i have set the mode to auto. This will solve the problem also without the waypoint 0 solution.
I'm having trouble setting up my Dragonlink to my APM 2.5 using only the PPM out of the RX which is channel 12 on the RX... I'm using a JR 9303 with Dragonlink v2 to APM 2.5 and I'm hoping you are using the PPM out also.... I went into the mission planner but was unable to change any inputs because as I moved the controls of my TX there were no movements in the setup screen even though I had movements in the servos I had plugged into the APM at the time....
Can you please give me some pointers into how you went about getting the your outputs thru the APM to match your inputs from your TX please?
Any information will be greatly appreciated!!
I'm using a JR9303 with my DragonLinks. The 9303 has nine channels but I'm using just the first eight here.
Now, the JR has different channel assignments than the APM, and I suspect that may be some of your problem. I use separate jumpers from the DL receiver to the APM inputs, and these are not a straight map. For example, JR throttle is channel one and it has to go to APM input channel three. If you aren't transmitting in the same channel order as APM expects, them the ppm stream will not make sense to the APM.
Also, the DL outputs 12 channels. The APM's ppm decoder may not be handling the extra channels correctly. I am out of my depth there since I've never used a ppm stream setup. If you have an oscilloscope, you can look at the ppm streams as they go into the DL transmitter and as it comes out of the DL receiver.
If you just want to get it working, get a a handful of jumpers. Go one channel at a time. Use the Mission Planner's radio setup screen to see which stick movement is on that channel and attach it to the correct APM input. Work with one channel at a time and it should take no time at all.
Thank you for your rapid reponse!
I was hoping to use just the PPM from the RX, but the Dragonlink RX also outputs each channel differently from the JR radio as well so to say that "channel 1" is not throttle as is on JR RX's and so on.... I'm probably better off running individual wires for each channel as you stated....
I had used a different OSD with RTL prior to working with the APM 2.5 and was able to set each PPM signal in the OSD menu for it's respective channel and was hoping to do the same with the APM....
Thanks again for your help!!
I've had this same problem and posted about it numerous times. Never received a response. Agreed it's dangerous. Auto landing has some serious bugs,numerous posts on it as well but I'm not sure 3d robotics monitors the forums.
Here's a link to the DragonLink forum on RCGroups, you can get technical questions answered there---
Thanks Andy - I did figure it out... It turns out some early production runs of the RX output PPM on channel 9 as opposed to the documentation stated ch 12.
Saw your post and video on rcgroups, nice job with your X8. I am still using a JR9303 that I bought for a quadcopter project. JR has a different channel order than the APM expects, so I have always just used jumpers. The channels can be re-mapped if you are willing to recompile but that can get touchy, too.
yeah, I lucked out with the Futaba T9CAP. The PPM stream was perfect.
I had tried to get this to work a few months ago, but concluced the DL docs were wrong, I revisited it the other night and sorted it. So nice to have the single cable for PPM instead of the individual PWMs.