ArduCopter 6" Midrange Cruiser

Well, here’s a middle child between the 7" standard build and the 5" standard build - a mid-weight, mid-range copter capable of some respectable aerobatics with good range and Arducopter bells and whistle.

My goal was to have a reliable cruiser/adventure copter that I can take on holiday and get nice GoPro footage. IMHO a 6" copter is the smallest size that can carry a GoPro and cruise efficiently, and I think a lightly built 5" LR quad would struggle. A 7" on the other hand, is quite large and heavy to carry for travel. I’m a pretty experienced FPV pilot and fly acro often with Betaflight. Having dealt with Ardupilot at work, I set it upon myself to see if I can build and tune an Arducopter that flies on par with Betaflight/INAV birds in acro mode, but with autonomous capabilities and rock-solid RTL :slight_smile:

I express a lot of gratitude to @andyp1per for how well put together the 5" and 7" build and tuning guides are. If you haven’t read it already, watch through all the Chimera videos! The tuning process for this aircraft was pretty much exactly the same as the Chimera, with the dynamic notch filters based on bidirectional DShot being the cornerstone to good performance.

Good endurance and acro was enabled by the light and stiff 6" frame, combined with homemade 4S1P 21700 Li-ion packs. I used Molicel P42As, which have a very respectable continuous discharge rating of 40A. Rumours have it that they can burst up to 80A but I’d rather not find out the limit the hard way by popping a cell.

Bill of Materials
This quad was cobbled together from semi-used bits lying around so nothing special apart from the frame.

  • Frame: HaloRC Osiris 6": HaloRC - Osiris This is a reasonably light, roomy and (as logs later reveal) stiff frame coming in at only a shade over 100g.
  • ESC: the Mamba F40 Mk2 flashed with Bluejay. Bluejay is very important to get bidirectional DShot and RPM filtering working and gives a second life to Blheli_S ESCs.
  • FC: Holybro Kakute F7. At the time of quad assembly I had to custom build a version with BDshot locally, but it appears that the build server now supports BDshot on this board.
  • Motors: Karearea Toa 2306 2450KV. The KV is a little on the high side but eCalc thinks I’m well within the power limit of this motor.
  • Propellers: anecdotally I’ve found the Ethix K2 biblade 6040s and the Gemfan triblade Freestyle 6030s to work the best. The Gemfans are smoother and corner better, but draw about 2-3 more amps in cruise. I have not seen much scientific thrust testing of 6" props but those are the ones I’ve subjectively found to have the best stick feel.
  • VTX/receiver: TBS Crossfire Sixty9 with a Bardpole antenna
  • FPV cam: a salvaged iFlight Racecam, which I think is just a rebranded Ratel 2 from Caddx
  • GPS: A Matek M8Q-CAN
  • Batteries: homemade Molicel P42A 21700 4S1P pack, 4000mAh 10C, coming in at ~280 grams per pack. FalconRad FPV on Youtube has excellent videos on how to build high quality packs safely at home.
  • Ancillaries: A self-powered Vifly buzzer just in case she goes somewhere down a mountainside, and a few homebrew 3D printed mounts for the Bardpole, GPS, VTX antenna etc…
  • …and of course a GoPro in the front to record my adventures

All-up weight of the bird including the GoPro and the battery is ~829g, +/-5g depending on antenna configurations, etc. A bit heaver than the average 5" freestyle rig (~750g) and a bit lighter than say, a 7" 6S bird (~1kg).

eCalc performance prediction

It goes without saying that I’ll cook the P42As if I do very aggressive, throttle intensive maneuvers but with a hover current of ~14A, I should have enough headroom for cruising.

Build process

  • The build process was fairly straightforward and the same as any old FPV quadcopter and I’ll not go through much detail. The M8Q-CAN was connected over UART and I used MSP. YMMV though, and it may be as such that you need to update your M8Q’s firmware to get MSP working.
  • I chose to orient the battery lead towards the front of the aircraft and zip tie it to the side. This keeps the battery wires far away from the compass, and there’s more room for a large capacitor in the front of the frame rather than the rear.
  • The ESC and FCs are hence mounted 180 degrees from their usual orientation. This is rectifiable by setting AHRS_ORIENTATION to Yaw180. Some trial and error in setting SERVOx_FUNCTION where x = 1,2,3,4 is needed to get the motors spinning in the right order.

Initial tune

  • The default PIDs calculated by Ardupilot based on weight and prop size were quite high and I had to drop the gains a little to get a stable hover.
  • Bidirectional DShot functionality was verified in Mission Planner
  • FFT engine was turned on to get a vibration plot.
  • The notch filter was configured to follow the motor RPMs via bidirectional DShot by setting INS_HNTCH_MODE = 3.
  • GPS + compass was calibrated according to the docs.
  • After verifying GPS and barometer sanity (i.e. compass direction was correct, altitude looks reasonable in logs, GPS track in the map looks correct), Loiter mode was successfully tested
  • In Betaflight, the current meter multiplier for the ESC is specified in 0.1 mV/A, i.e. a value of 255 corresponds to 25.5 mV/A or 0.0255v/A. Ardupilot has this in A/V, so BATT_AMP_PERVLT is the reciprocal of that - approximately 39.2 A/V in my case. Comparing measured mAh vs actual consumed mAh of the battery proved this to be reasonably accurate. I needed a fairly precise reading for this as to not stress the Li-ion cells, and to have a good idea of how much capacity I have left.

Tuning process

  • After Loiter was working, I mapped Autotune to a switch on my radio, and engaged Autotune while in Loiter with default autotune settings. I successively increased the gyro LPF cutoff frequency, test hovered to check if the motors got hot, and if not, continue autotuning.
  • Yaw was tuned manually as per the Chimera guide. Section 23 and 24 are especially important for getting this right
  • I eventually settled on a ratio of of 150/75 for INS_GYRO_FILTER and FLTD values
  • I set ATC_THR_MIX_MAN to 0.9 after a stable tune, as I found the default value to produce very unstable behaviour when I cut the throttle.
    Here are the final PIDs after autotune for roll/pitch and manual yaw tuning:

Flight testing and footage
The exhaustive tuning was worth it! Will append with some DVR footage when I get around to it.

It seems that eCalc underestimated the performance a bit. Cruising at about 70-80km/h I can get around 12 minutes of flight time, landing at 3V/cell. With a light touch of the throttle, drawing about 10 amps at 30km/h, I’ve endurance tested it to 19 and a half minutes landing at 2.5V/cell, and I think I can comfortably break the 20 minute barrier if I just hover in place. Not bad at all.

Param dump
osiris params.param (18.5 KB)
Unfortunately the logs are on the large size, but happy to share if anyone wants a peeek.


If I still have your attention, thank you for making it this far. I am overall extremely happy with how this aircraft performs. I estimate that the acro performance is about 80% as good as Betaflight’s, and for slower flying the difference is almost imperceptible. I can do a good few FPV tricks with this aircraft, and the only things I need to improve are a higher yaw rate and better prop wash handling. I welcome feedback on my tune, and I’m happy to clarify any steps I may have missed in this short writeup.

I can fly a few laps, put her into loiter, and give my goggles and radio to a friend for them to continue the flight. It’s pretty cool to instantly switch from aggresive acro to DJI-like position holding, and even in 20mph+ winds she loiters like a rock. Return to home is excellent and she lands on a dime right where I took off.

Granted the tuning process is long-winded compared to how fast it is to get up and running with Betaflight, INAV etc, but Ardupilot’s loiter and return-to-land functionalities are superior to either of those solutions. More of you should build FPV Arducopters!