Yuri's new project (ArduCopter Quad - now 4.1.0-beta)

I wasn’t going to share this publicly - it was more of a little family project and an opportunity for me to dive a little deeper into the ArduPilot ecosystem. But…I’m so incredibly impressed by ArduCopter’s out-of-the-box performance that I really wanted to share my experience. This first post might be a little longwinded - I hope it’s a good read.

I am a pilot by trade, but I don’t have much RC stick time. I’ve built and crashed a very small handful of cheap (and one expensive) planes, but none of them had more than a mildly functional gyro for basic “get out of jail” functionality. I’ve flown the cheap little toy helis with some degree of success. But I’ve never owned or flown a fully featured drone, and I wanted to try it out, with the end goal of having a half decent aerial video platform.

Enter this:

For a first build, I dove in pretty deep, I think! It’s a semi-scratch built 550mm series quad (if I understand the scale terminology correctly) with the obligatory Cube Orange running 4.0 (maybe 4.1 soon). It’s a mix of cheap, mid-range, and a few higher dollar components, some of which I already had on hand after multiple iterations of robot lawnmower experimentation. I included Amazon links to all the components below.

The physical build was very straightforward. It only took me a few days of off and on tinkering to cobble it all together. I spent more time than I care to admit learning about BlHeli, DSHOT, and the associated parameters, but that all came together nicely, and my ESCs now play Van Halen when I plug them in.

I was incredibly nervous to take a 2kg machine with 12" props and fling it into the air with a flight controller I’ve only ever used for 2D navigation. I expected one of two outcomes: I chose props that were too small, and it would barely fly…or it would immediately flip and send ~$1,000 of my hard earned ducats up in smoke. But…and this is why I’m writing…it f***ing worked like a champ!!!

The first flight was just a quick 3’ hover in Stablilize mode that I managed to land softly. After a few tweaks and some more confidence, I was flying it a little higher and a little farther with only the settings recommended in the documentation and no further tuning. I experienced a few mild toppled landings but really didn’t suffer any damage. After slightly more practice, that’s a thing of the past. Without tuning more, I figured I’d try AltHold and Loiter…again…success without any real tuning (in 8-12mph wind with occasional gusts!). It’s honestly astounding what the dev team has created here.

My only ArduPilot related hiccup was autotuning. I don’t know if the documentation is a little dated or if I’m just doing something wrong, but I was unable to test the new vs old PID settings as suggested on the autotuning page. If I made ANY flight mode change or switched out of autotune mode after receiving the “Autotune: Success” message, the algorithm would quit, and the settings would not save upon landing/dearm. I had to keep autotune enabled, leave it in whatever mode I used to tune, and land (at which point I discovered the beauty of landing in AltHold). All’s well that ends well, but I used a lot more battery than I expected through multiple, slightly painful cycles of autotune (cue T-Pain).

Ok, enough rambling for tonight - here’s the build sheet:


I spent a good part of today fabricating a camera mount out of a block of Delrin plastic, wiring things properly, and trying to get this little gimbal controller to function properly.

I spent a LOOOOONG time fighting to get PWM output to function from the flight controller (this is an 8 bit SimpleBGC clone - it doesn’t support serial connection). I finally remembered the BRD_PWM_COUNT parameter, increased it by two, and it started working quite well!

The flight controller’s stabilization seems to work well in the roll axis, but it’s reversed in pitch. Perhaps you’re supposed to hang the camera from the mount rather than support it from underneath - I’ll mess with that and some axis reversal parameters another time. The single IMU on the gimbal controller does a decent job on its own.

Now that I have it calibrated reasonably well, I’m happy enough to keep it for the foreseeable future, but I don’t know that I’d recommend it. Buy a better gimbal or at least a genuine BaseCam board to control it, and get the 32 bit version.

image0 (1)

1 Like

A few last thoughts/findings for this weekend’s fun:

Disabling “Stabilize” on both axes for the camera gimbal was best. The crappy IMU on the gimbal was plenty good enough to keep up, and applying inputs from the FC was less successful than just letting it do its own thing. My last flight included some pretty aggressive drift mode flight, and the horizon barely moved (I also achieved nearly 45mph and got up over 150’!).

Analysis of the .bin log shows that it’s probably performing and tuned well. Vibe only spikes to around 15 at worst in any axis, but mostly stays under 3-4. The attitude estimates all follow nicely, as do the actual vs desired roll/pitch/yaw. Hover throttle is 0.23, which the log proves is appropriate (very happy with that - I was afraid I’d under-propped!).

The TBS VTX provides a great picture within 100’-200’. Beyond that, I get quite a bit of degradation. Perhaps I can relocate the antenna or try a more robust RX antenna. I don’t think I can transmit at any higher power output without violating the FCC (yeah, yeah, I know many do…but I’m not gonna).

With my fixed base (used for mowing with ArduRover) providing RTCM3 injects, an RTL routine put the landing spot within about an inch of home.

What a blast!


Hi @Yuri_Rage
Great project!
to achieve this below my suggestion is go with Co-axial rotor, which will give mode efficiency system. it just suggestion.

1 Like

Looks like a great project!

The receivers in those FPV Monitors are often mediocre at best, but you can probably improve the performance by swapping out the stock antennas it came with for something like the TBS antenna you used on the VTX. Get the same polarization and see if that improves things.


While I understand the benefit of counter-rotating props, I’m not sure there’s much to be gained on this build. I’m getting 15-20 mins of flight time with pretty snappy performance. I may try similarly pitched 14” props for comparison’s sake, but I’m pretty happy as is.

Appreciate the point out on the antennas - I ordered some matching replacements for that little FPV monitor, and I bet it helps!


Love the writeup you did for this multirotor. Do you also have a writeup on your rover? Sounds really interesting

1 Like

I have a lot of rover related posts on the forum, but I haven’t done a complete build sheet like this (it was a very iterative process). I intend to do some video documentation of it in more detail this summer. The rover is oddly a little more complex and difficult to tune.


A youtube video would be great. I’ve seen some other videos of Rover mowers and they’re very interesting. I’d like to do a wheel chair framed reel mower Rover someday. edit found your channel on youtube, that mower is very cool


I’m a little slow to publish, but I will get some more detail on the channel. Thanks for the compliment!

This morning’s flight before work resulted in a 23 minute flight duration, takeoff to land. RTL was commanded at 14.0V. That’s about as good as some of the DJI stuff!


I was waiting to hear the flight time. That is in the range of what I was hoping to get when I DO get a flying machine going.

Amazing results all around!

1 Like

I updated to 4.1.0-beta today without issue, and it’s flying easily as well with the new firmware as previous. I think the autotune parameters may be a tad conservative, and perhaps I’ll run it again in calmer wind (I ended up running the routine in Loiter mode for all but the yaw axis). It’s quite stable, and I’m pretty happy as is, but I think it could be just a little more responsive with less oscillation to stabilize after large control inputs.

Thanks to @Derek for the log anonymizer feature point out. Here’s a Google Drive link to today’s last flight (starting with about a 75% charged battery for this power cycle):

I also added some WS2812 LEDs to help with visual orientation. I have some experience with Lua scripting for ArduPilot, but this proved slightly challenging, particularly due to the mid-stream firmware update that changed some of the variable and function names. There’s plenty of improvement to be had with the code I attached below, but it’s functional. Interestingly, it helps to delay the first call of the update function. If I let the script execute straight through without that 750ms delay, the LEDs remain off (except for an occasional lucky boot).

QuadLights.lua (3.4 KB)


Lastly, I’m not sure what’s up with the antennas I linked in the build list, but they are not an improvement to the antennas that came with the SIK radios. They are indeed the same part number that I used for my mower project, with which I get great range and quality. Perhaps one of them has a bad ground or something - I’ll do some more exploration there. I noticed the link quality was pretty poor no matter what antennas I used, and a firmware update from within Mission Planner along with the settings shown below seems to have helped quite a bit. I’m sure locating the ground radio some distance away from the laptop would help as well. If I get ambitious, maybe I’ll just make some simple 1/4 wave antennas…

Note: To update the firmware on the air radio, you need a 5V USB FTDI interface. I happened to have a couple of them from other projects, but they are cheap, accessible, and simple to connect.

Further note: The replacement antennas I was using had RP-SMA connectors, while the SIK radios use SMA. I didn’t notice that until much later…



On the subject of SIK radios - I’m sticking with the stock antennas for now. I did some experimentation this morning with antenna placement/orientation, and even frequency tuning of the replacement antennas (replaced the active element on one and trimmed while watching for change). No matter what, the stock antennas beat the replacements. That is not the experience I had with the mower, but so be it!

As such, I don’t think I can recommend those antennas - save your 6-9 dollars for something else.

EDIT: Nevermind about the replacement antennas being useless. You need an SMA/RP-SMA adapter to use them with the SIK radios I linked in the first post. I was just to un-observant to recognize that and blamed the poor signal quality on the antennas rather than my own mistake.

I use one of those antennas for my ground unit. The air units have a half-wavelength piece of thin coaxial wire (salvaged from an old laptop) with half - quarter-wavelength - of the shielding removed and soldered directly to the HM-TRP pins. Saves weight, and it’s good for 2.5 Km, almost the same as my Taranis with an antenna mod does.

I made a few discoveries this weekend. My VIBE values were very low because I had the Cube on a very squishy vibration damping mount, and I think that mount is the reason I’ve had trouble tuning the roll axis under 4.1-beta. The Cube already has internal vibration damping, and it shouldn’t need more. I naively thought that eliminating all vibration was a good thing, but I’m now more impressed than ever with the whole ArduPilot ecosystem - the control loops run fast enough to detect and correct for extremely small perturbations and it’s GOOD to let the FC “feel” nearly everything that the frame is doing (with notable exceptions, of course that are, for the moment, beyond the scope of this thread).

So, I hard mounted the AP using some heavy duty 3M mounting tape, and the sensed vibration increased quite a bit (but not clipping). My first attempt at autotune with the new mount was going very well (no “failure to level” messages), but it was cut tragically short.

The adventure is over for now…it crashed. HARD.

After a couple of late night hover tests with the hard mounted FC, I got up and began running the first autotune routine in pretty calm wind. The roll terms were increasing nicely when the props stopped, telemetry disappeared, and it just fell from the sky from about 30 feet.

A look at the log makes it look like the battery completely died, and all logging/telemetry ceased at the moment of failure. However, there were still lights blinking on the quad when I got to it, and a cursory check of the offending battery shows that it’s mostly balanced with a little under half charge remaining. Another boot cycle with the same battery brought it right back to life (worse for wear, of course), it armed, spun the motors, and probably would’ve flown if I increased the throttle (no prop damage - it pancaked on the landing gear which absorbed most of the impact, along with my camera gimbal (I was tuning with it installed because it sits low and affects the CG quite a bit).

Post crash battery stats:

I need to get some yardwork done today, so I’m walking away from the quadcopter project for now. I’m not giving up, but I need to put it down for a bit. Here’s a link to the log file for the crash.

Well, there are no smoking guns here that I can find. Here’s the process of discovery so far:

I checked the suspect battery’s charge state and internal resistance - all nominal. I put a few mAh worth of charge into it, and the charger functioned normally with nominal values on the battery.

So, I devised a load test of sorts using two identical batteries (the ones I linked in the build list). Let’s call the batteries GB (good battery) and SB (suspect battery). Initial conditions were a fully charged GB and SB around 3.8V/cell.

  1. Power the charger with GB and use it to fully charge SB.
  2. Power the charger with SB to charge the now moderately discharged GB.
  3. Set the charge rate to 2C (14A).
  4. Monitor the input voltage from SB during the charge cycle.
  5. Recharge SB at 1C rate using AC power in and monitor that charge cycle as well.

Everything worked normally. A constant 14A drain on SB showed no sign of distress or failure. Internal resistance remains low (~3mΩ per cell, just like GB).

I think I can rule out battery failure.

Another logical source of failure might be a short to ground from a loose connection or chafed wire. I see no evidence of that, but I will carefully dissect things as I rebuild (probably this week) and see if I can find a problem.

Lastly, I must fess up to some buffoonery. During the build, I accidentally applied full battery voltage to the ground servo rail of the FC, with a ground wire on one of the servo rail’s power pins. It was a double error - I misunderstood the purpose of the ESC’s power wire (thought it was 5V, but it’s full battery voltage), and then cross-connected it, too! Thankfully (or perhaps tragically) the tiny 28AWG wire acted as a fuse, and it appeared as if little harm was done.

I did have some trouble flashing the ESC, but it eventually worked. The FC occasionally seems to have a boot anomaly where it gets stuck prior to ESC detection, but I attributed that to the finicky LED script that I’m running (since the script doesn’t run on the occasionally anomalous boot cycles, and I know it’s taxing on the processor and memory).

So…it’s entirely possible that I pooched up the ESC, FC, or both, and that the electronic demon I created was laying in wait until this morning. If I find no other evidence during the teardown, then I’m attributing the failure to my own stupidity. We all learn the hard way at times…

Against my better financial judgment, I ordered a replacement for both. I can use the suspect ESC and FC on another project that doesn’t wield 13" blades of fury.


I got some SMA pigtails with the express purpose of testing some DIY antennas very similar to what you describe. Good to know someone else had success that way.

This post shows a pretty cool, extremely simple method of constructing a sleeved dipole antenna that might work really well (with respect to its weight) if tuned properly.

1 Like

I guess you are paying more for the new FC than the previous, unless you found a better source than I. #ChipShortage

Looks like it was a brief price hike. It was back to $250 today :smiley:

Make a reel mower rover as a next project? If the flight controller resets it should just sit there (vs crash like a multirotor).

Is there any way to rule out the LUA LED script? Could you run the script and LEDs on your rover mower as a stress test?

If you want to get into making your own antennas, IBCrazy has some good youtube videos https://www.youtube.com/watch?v=sCypz0ZeDdo