Yonah's Nemo QuadPlane - Finally autonomous!

Hello people,

As some of you know, together with @disgruntled-patzer, @tzhl , @seahhorse, @Ivan_Tan, @Linkegvh and myself, we’re a team we call Yonah. Our end goal is to build an autonomous system that we can use to help rural healthcare providers with transportation of cargo (up to 4kg) in support of their operations. Most of the engineering hands on team are undergrad engineers from National University of Singapore.

We seldom post stuff, mostly because we have been busy with the engineering. It is however, on our hearts to share and grow towards being able to share better (i.e. github). Some of you may have read our Block Diagram post that we hope helped new-comers grapple with extracting “gospel truth” from the code base.

A year on from our last crash, going back to the drawing board and redesign of several aspects of our system, we are happy to share that Yonah’s main carrier platform has finally maidened its first AUTO flight on the 8th of Aug 2019. We subsequently did 6 more flights before running out of time for the test window.

Here are some flight products of Nemo that we hope may benefit the community

Some information about Nemo

  • Fit 1 x ADVC-24 box. This box is a WHO pre-approved equipment for carrying vaccines. More detailed specs of the box can be found here. We reckon that this box can carry 6 to 10 vaccine vials.
  • MAVLink telemetry over data and SMS with a cellular router.
  • ProfiCNC’s Cube Black with ArduPlane 3.9.8
  • Dual GPS
  • Fwd propulsion: 4L tank fueling a 64cc 2-stroke engine, 22*10 CF prop
  • Quad propulsion: KV120 P80X, Alpha 60A ESC and 29*9.5 prop
  • Airframe: 3.3m wing span, 0.45m Mean Aerodynamic Chord.

Some lessons learnt

  • Planning for a crash was very important. With that end in mind, we created a set of documentation that assisted a lot in quickly recovering and learning from a crash, which we did have.
  • Setting Q_M_SPIN_ARM too low caused problems during ramp up: 2 quad motors didn’t spin while the opposite 2 spun up, causing the system to tilt and wing tip to hit ground. Problem went away when we bumped it back up to default. (Reduced it in the 1st place thinking it would be safer for ground handlers)
  • Q_M_SPOOL_TIME is in effect not just during spin up but also during Q_ASSIST. Initially we set to 5s to give it more time to spool time, but changed it to something more sensible when we discovered how wide its effect is.
  • Default quad velocity controller gains were too high for Nemo. We had to dial it down quite a bit to achieve stable VTOL
  • Loading the avionics rack as heavy as practically possible (using battery esp) and using a 2-cylinder boxer 2 stroke engine helped a lot in reducing flight controller exposure to vibration.
  • Magnets that came with our router’s antenna base mount affected our Here GPS compass at a distance of approx 15cm. Removing those magnets helped a lot when we calibrate. We calibrate without wing, quadboom and tail attached. Heading holds well and steady
  • Differential I2C with this gave us very steady values for airspeed with airspeed installed more than 1.5m away.
  • Discovered an edge case when messing around with DO_ENGINE_START; also realized we’re not ready as a team to make changes, compile and test firmware on the field - but we’re getting there.
  • Making sure the ground between ignition and rest of the system is totally isolated.
  • RFD900x radio at full power, with the “stubby” antenna, if not installed properly, can introduce a lot of “random” noise into I2C lines (i.e. airspeed and LIDAR)
  • The batch of LW20 we bought from Lightware seem to only be able to reliably read distance 45 meters and less. We were flying over a rice field and so there are patches of water in our flying area.
  • Use of paint markers to draw lines so one can tell when fasterners loosen.
  • Use of Viton fuel tubing so fuel lines don’t harden up.
  • Use of good servos from Hitec D645MW and properly setting it up.

In conclusion, Cube and Ardupilot worked wonderfully well for us when we spent time to understand it and knew what we were doing. We also made an effort to ensure components are at least industrial grade (i.e. minimally 80 degree celcius rated) or better. Hope to release more materials that we created along the way.



Thanks for the write-up!
A few comments from the log:

The log shows significant discrepancies in attitude between the two EKF lanes:

that is usually a result of vibration
Another odd feature is you have less gyro noise on the non-isolared gyro3 than the two isolated IMUs:

the first thing I’d suggest is to change INS_FAST_SAMPLE to 5 from the current value of 2. The value 2 says “enable fast sampling on 2nd IMU”, but as the 2nd IMU can’t do fast sampling it does nothing.
I also noticed that the log has RNGFND_LANDING=0, which means it isn’t using your rangefinder for landing (ie. not using it for when to slowdown on descent).
Cheers, Tridge


Tian Chang,

A QuadPlane with purpose…well done!

1 Like

Hi Tridge,

We did not note the difference in attitude between 2 EKF lane. We’ll try out changing INS_FAST_SAMPLE and RNGFND_LANDING.

Thank you for responding to our posts.

1 Like