Outreach for new addition to Singlecopter code

Hello Ardupilot Community!

A Little About Myself:

I am an aspiring open source developer. I did my first ardupilot project by updating and modifying some Sense and Avoid Lidar code for 180 to 360 degree coplanar avoidance as a custom flight mode and switch for Arducopter by tracing commits from a well known arducopter/trad heli contributor while finishing my Undergrad in Computer Engineering about a year ago. I also threw together an optical flow program for position hold relative to a target object using PTP for CHDK and an offboard controller communicating with the Pixhawk for computer vision computation (first with mavlink through the telemetry port with a custom message and later with pwm inputs for x and y flow).

Current Development Interest:

I am currently developing an ICE Singlecopter vehicle (Honeywell Tarantula Hawk remake) from the existing Singlecopter code (possibly as a stand alone thrust vectoring vehicle if appropriate as I’ve read on Ardurocket and other systems showing interest in this control system). Are there any teams or coders actively developing the Singlecopter motor code who I might be able to collaborate/communicate with? I have found figuring things out for yourself only goes so far with a project as big as ardupilot… I am going to be testing the control system and AUTO mode features and would like to ensure I am abiding by the Ardupilot standards and contribute my findings to the appropriate developers if it may be of any use.

I understand this work may not be appropriate for the official Ardupilot build but I would like to formally reach out to see if any of this belongs in the community as I tend to keep my code and findings to myself and “lurk” the forums/repositories. Thanks in advance to anyone who reads this post! I am very excited to work towards an official contribution or help with any debugging concerns in my field of interest!

Josh Ward

(P.S. Please forgive any missed formalities)

hi Josh,
I’m working on internal-combustion helis as well. I recently added support for automatic engine control for ICE helis, so it can auto-start the motor and auto-restart in flight if need be.
My patch for that isn’t submitted to master yet, but I should get to that soon. You can see the patch here:

and the general purpose AP_ICEngine library here:

I haven’t written docs for the ICEngine support yet (very busy preparing for OBC2016 where we will fly this heli), but hopefully you will find the code easy enough to read.
Cheers, Tridge

hi Tridge!

I’m a fan of your work! I understand the code and have been looking at this briefly from master, thanks for the reference and the help! I am thinking of using the P-lead on the magneto as a tachometer as it should produce a proportional PPM wave to the ignition (hopefully without grounding the spark plug) with minimal voltage division/filtering and, with your code, closed loop control!

I’ve followed almost all of your Canberra footage, linux conference talks and OBC on youtube and forums. This actually lead my lab to purchasing a Gaui Gx9 for agricultural spraying algorithm development (we plan to offset spraying location based on a relative wind vector and altitude, modelling spray dispersion from the main rotor output and changing width of an autogrid based on altitude, all within the ap_sprayer library… hopefully).

Thanks again Tridge!

Current ICE Issue:

Much of my work at the moment is Autocad design and fabrication issues including replacing the flywheel on my 33cc engine with a propeller. This means either switching from a magneto ignition to a transistor-battery ignition (if magneto is used I plan on removing the fins on the flywheel impeller to remove weight and load and fit the propeller straight to the crank shaft while keeping the magneto). I’m calculating which would be preferable based on flight time and performance as the extra battery may be too costly in terms of refueling time and marginally increased performance. Given the “optimal rpm range” and “advanced timing” issues inherent to magneto ignition, I am attempting to build/scale the ducted fan around the optimal rpm/power of the engine for fuel efficiency and hover requirements and in turn calibrate the magneto to fire optimally in this range. I am not designing around the engine but rather scaling a design to this engine as I am learning as I go. Transistor ignition is still very attractive in terms of vibration reduction, smoother operation and advanced timing-- if relatively wide ranging and relatively high rpm performance of the ducted fan is efficient enough to consider. If I go with a magneto ignition I am going to limit the upper end rpm as I dont want to stress the engine and am concerned about advanced timing issues-- maybe allowing for higher RPMs in certain failsafe situations, although I dont like this idea… Does anyone have insight into these considerations? Which is more robust from a safety standpoint? An electronic failure could cause power system failure and lack of auto rotation is concerning for this vehicle and potentially catastrophic (this may not be an issue with Tridgell’s aforementioned auto start feature but still leaves the electronics as an additional point of failure i.e. secondary battery failure, also I must consider that the magneto system can incorporate this auto restart/start code as well but it would be preferable not to incorporate a heavy starter with the already heavy magneto-flywheel system), given the otherwise high safety of a ducted propeller system.

I’m only now finished with the frame design and I still have some vibration concerns despite using a wire suspension harness and vibration reducing washers etc; I’m even considering small orthogonal stockbridge dampers in a T configuration to fit onto each semi-tensioned wire in the harness for a small range of specific high frequency vibration dampening but this might be a huge waste of payload. After destroying an accelerometer on a Quadrino by using risers with nylon screws and no vibration isolation years ago I am very concerned with vibration…

I openly welcome any constructive criticism, questions and comments.


vibration isn’t the only issue - also be careful that you don’t conduct ignition EMI into the autopilot. You probably need an opto isolator to keep the noise away.
Rob and I are both keen on doing auto-rotation in ArduPilot in the future, but for now we don’t have it. So only chance on engine failure is if a skilled pilot takes control.
As for RPM limit, right now the code doesn’t have any concept of a “burst RPM” limit, but it would be possible to add.
Cheers, Tridge