The EjoWerks Speeder

Drive It Like You Stole It 

The Curious Case of the Two Channel Quadcopter

This page is too long so I didn't read it. What in the hell is this?

This is a FPV quadcopter with a rear thruster that drives like a RC car with only steering and throttle inputs from a RC pistol style radio.  It flies at a fixed height and is essentially a flying RC car. 

A CarCopter? Quadcarpter? A QuintCopterCar? Let's call it a Speeder




Some renders of the 7 inch model to show some further details of the aircraft's construction. The black parts are all TPU which allows for flex and impact survivability



Development History

First Person View on 4 Wheels

Being an FPV enthusiast since before it was a thing, I always thought it'd be fun to race off-road RC cars via FPV to get that driver's seat feel without the expense and physical risk of racing real cars. Unfortunately, camera shake on an RC car is so horrible it is impossible to see anything at speed on all but the smoothest surface. Some folks have tried on-road FPV racing but being so low to the ground causes visibility problems (you literally can't see which way the track goes). 

Over the years I intermittently tried various methods of camera damping and even constructed my own brushless gimbal. While the gimbal sort of worked, it proved to be too fragile and fiddly to be practical. Besides, even if the shake issues are eventually overcome by tough micro gimbals there is still the issue of being too low to the ground to see the track clearly. Some folks into driving FPV cars mount their stuff to monster trucks or rock crawlers with a lot of height so they can see where they're going, but they're usually not driving at racing speeds. 

Quadcopters are perfect for FPV because they're fast, have no camera vibrations, and can easily see where the hell they're going, but there is a steep learning curve and a special motivation to get proficient enough on the controls to actually race them. 


FPV Quadcopter + FPV Car = Speeder

Sometime in late 2020 I decided it was time to see if I could build something that could merge the thrill of flying a FPV quadcopter and the ease of driving a FPV RC car. If I got the basic engineering hurdles down, I imagined I'd design a quadcopter with an off-road car-like appearance and the ability to be "driven" with a two channel RC car radio. It would automatically hover at a fixed low altitude at perhaps half a meter, while being very reactive to the ground underneath it like a futuristic off-road racing speeder. 

I reasoned to myself that most folks can easily drive a car in real-life or drive a race car in a video game. This ability is quickly learned and far different from managing and mixing 4 functions on a FPV quadcopter controller. If I was successful in building such a craft, perhaps my non-FPV-nerd friends and my brother - whom races motorbikes and occasionally races RC cars - could easily pick up "driving" a racing quadcopter speeder thing without the risk of losing it in the trees or burying it into the ground.


And So It Begins

Being an all-purpose geek whom my wife calls The NerdBomb, I already knew that the tech and code out there to accomplish this silliness already exists. After taking a look at the long learning curve involved in learning to cleanly modify existing popular software like INAV, Betaflight, ArduPilot, and several others to do exactly the things I wanted (especially later mixing several channels into rc-car style steering and adding safety features ), I figured the most straightforward way for a numbskull like me to get there would be to toss an Arduino microcontroller in between the RC receiver and the flight controller to  intercept the throttle signal while passing the rest of the channels to the flight controller untouched.  Other channels could be easily mixed together later.

In order to hover at a fixed height above the ground, the machine would need to know its height accurately at a very high measurement speed. There are quite a few electronic sensors in the world that can measure distance, but the only sensors fast enough for this application are going to need to do stuff at the speed of light. So I ordered some tiny VL53L0X time-of-flight sensors and an Arduino Nano clone. When they arrived, an old BetaFPV 85x quadcopter would be the perfect test platform due to its small size and durability.  

After a lot of really goofy looking Arduino code, trying different filtering methods, many batteries and much violent bouncing between the ground and often smacking the ceiling, the first concept finally calmed down and hovered at its setpoint altitude of 100mm. Unfortunately, the VL53L0X works horribly in sunlight. I realized that in my sensor googling I completely missed the more robust VL53L1X sensor which works far better outdoors, so I ordered a couple and installed them. They worked flawlessly, flying right through bright patches of sunlight even over the dark blacktop of my driveway.  Sweet. 

Concept Test Speeder 1: A well-used BetaFPV Beta85x with the Arduino Nano riding topside and a VL53L0X sensor barely visible just behind each front motor

What Makes It A Speeder

In my native tongue, a quadcopter tilts forward to fly forward but a speeder stays level in the pitch axis. If you disagree with this nomenclature then you need to go away (and while we're at it don't get me started on the infernal mis-use of the word drone). Anyway, it is household knowledge that there are only two ways to make a quadcopter move forward whilst keeping the chassis level: Tilting the motors (keywords: heavy, servo, linkages, bearings, fragility, complexity, broken parts, ugh) or simply slapping a 5th pusher motor on the ass-end like an airboat straight out of the Florida Everglades. As you already know, I opted for the 5th motor configuration.

Wanting a smaller/lighter microcontroller board, I ordered a couple of Seeeduino XAIO boards and managed to cram one in next to the XM+ receiver on the underside of another old Beta85x. With only a single ToF sensor on the front it almost looked like a regular larger whoop quad. (Being too lazy to wire up and mount two sensors was a huuuuuuge mistake, more on that shortly).

I CAD'd up (is that a word?) and printed a NinjaTek Armadillo hard TPU motor mount and FC cover, added a tinyhawk ESC and motor no. 5.  Now I had an proper little speeder that I could fly around in angle mode. Lateral thrust control was possible via mapping the throttle stick input from doing nothing in hover mode to the 5th motor's ESC. 

It was a neat little toy and flew great at its fixed low altitude of 100mm, bounding over bumps and obstacles. It handled like a RC air boat just as I predicted, so I was getting somewhere with this nutty idea of mine.

Concept Test Speeder 2: 5 propellers of fury! Flew wonderfully.

Safety First, Kids

Oh yeah, back to the two-sensor thing: Imagine what happens when a prickly dried oak leaf gets wedged to the frame right under the contraption's only eyeball? Yep, full throttle straight into low-earth orbit until this guy's frantic fingers could find the disarm switch. It was entertaining to watch it fall like a rock from a couple hundred feet, smacking the roof hard enough to wake the dead. The very next version had two ToF sensors and some code to keep that from ever happening again. 

I also found an Arduino library to read LTM telemetry from the FC to read battery voltage and automatically shut this thing down if it was tipped too far so it wouldn't freak out after hitting a tree, etc. It was getting a bit safer to operate at this point.

Yaw Roll B There

Now I had a proper "speeder" but it still required a pilot with some sort of RC helicopter/quadcopter skills to operate, so this was the moment in time that I had to add the magic two channel rc car radio mixer sauce that would enable your grandma to fly it. To make this happen I needed to mix roll and yaw together via a single input, the steering wheel. The problem was I needed a car radio with a steering wheel, a throttle trigger, and lotsa other channels for PID adjustments and other nonsense.

My mom always taught me never to assume, but not listening to her lifelong lesson caused me to make the really time-consuming assumption that there were no RC car radios over 3 channels (why would there be, right? What do you want, a missile launcher and an ejection seat on your basher car?). So I hacked together an Arduino radio of sorts from an abandoned el-cheapo rc car controller and interfaced it to my Taranis trainer port over the airwaves because I always trip on wires.

Flip the trainer switch to give control to the pistol radio and wow, it was such a different experience than flying with the copter radio! It was just like driving an airboat on land. My 5 year old son drove it around effortlessly and I had a hard time getting the controller back from him. We were elated that this was actually a viable silly little toy. When I excitedly offered my wife a turn to drive it she smiled sweetly and walked away while shaking her head in disbelief that I thought she would ever find these things interesting.

Honorable mention: My DrehmFlight stretch 2" version with custom programmable LED lights. It never got a thruster motor because I shorted something out by accident and it caught fire. Bummer. In the future, I intend to return to the DrehmFlight flight controller because I would prefer to have complete control over the quadcopter portion (as well as direct access to the IMU for safety features)  but at this point it has been easier to prototype with BetaFlight because BetaFlight already has thousands of hours worth of code towards filtering, safety features, angle mode, FPV OSD, etc. One thing I definitely owe to Nick Rehm is his code layout, organization, and some tips and tricks I've learned from him on RCGroups.  Thanks Nick! At this point I stuck with the Teensy 4.0 board as it has all the UARTS I would ever need for this project.


Overreacting to the Past

In this man's opinion, a speeder needs to actually go fast. The cute little Beta85x speeder worked and was good enough for goofing around in the driveway but I want this ultimately to be a HD FPV racer that flies fast enough to make the heart pitter patter. This meant the VL53L1X wasn't going to work because the fastest it can measure distance reliably is approximately 20 milliseconds. This frequency, when coupled with a filter to clean up the signal, would mean a fast aircraft would be several thousand miles past an object before its little brain told the actuators to throttle up to clear the object which would at that point exist in the past. In other words, at anything approaching racing speeds it would not react in time to elevation changes or objects and would merrily smack into them like a deaf bat.

Back onto the Googles, I learned the only ToF sensor that was small enough and fast enough was the TF-mini-plus that could take a measurement every millisecond, a whopping 20x faster than the VL53L1X. If the TF-mini-plus was mounted looking forward a few degrees instead of straight down, I figured it should work up to about 30mph or so depending on the filtering applied to its signal. Unfortunately, this meant the added size and weight of the sensor kicked the little 85mm quadcopter out of the game, which was okay because it wasn't fast enough or large enough to carry the HD stuff. 

Iron Like a Li-on in Zion

Being a fan of building my own 18650 packs for my airplanes, I got enamored with small long range quads with Li-on packs and had recently built a LR 4 inch 2S quad with high KV motors and a stripped down DJI digital air unit that flew for 20+ minutes just cruising around. This monster flight time was utterly amazing for such a small and light digital FPV aircraft.

For some dumb reason I threw out everything I ever learned about propeller and motor efficiency like, ever, and embarked on an effort to construct a speeder around a shrouded 3" BetaFPV Pavo30 frame using a 2S Lion pack and the 6000kv motors from my LR 4" quad. (At this point I was still trying to keep the speeder size just large enough to carry digital FPV). Surprise surprise it just....sucked.  The low voltage meant hardly any top speed from the thruster and the amp draw was really heating up the the 2S Molicel p26a battery pack (rated at a peak of 35 amps but not happy at the sustained 18ish amps or so). Later I threw a 3rd cell on it for more oomph because our parents taught us that higher voltage = more efficiency (and of course, larger props = more efficiency but we'll come to that later). So now on 3S it was as heavy as a brick, handled just like a brick, and looked kind of dumb to boot. Funny enough, this slow goofy version is what I showed my flying buddies and at the end of the demonstration as I unplugged the overheating battery they all said they wanted me to make one for them. RC folks are odd ducks.

Of course I knew I could go with a light 3-4s lipo and the performance would be a lot better but the flight times would still be an abysmal 2 or 3 minutes with all this added crap bolted to it. I strongly feel something needs to fly or race for at least 10 minutes to really get into the fun factor.  It didn't help that I hated how it looked.

Sorry to inform you that you're dumb looking and handle like a brick

RedBottoms Rule


Sometime in the middle of all this 3" flying brick goofiness I got my head back on straight remembering the whole point of all this was a FAST FPV ground racer speeder thing, not a bumbling fat turtle with hardly enough power to keep itself aloft, so I tore apart Pavo and crammed its brain and guts into an old 5" freestyle frame sporting my trusty 2205S Emax RedBottoms. With the powerful miniquad thrust it took a bit to tune the hover code - after an emergency disarm caused it to land upside down gouging the battery into the frame which merrily set it ablaze - I finally got it working well despite the soot and partially melted frame.

I was not surprised that I got the most bang for the buck from this 5" frame: It was like driving an angry weed-eater that I wouldn't want running into my knees, but it was FAST and nimble and fun to drive around line-of-sight with my goofy pistol style Taranis-connected Arduino RC car controller contraption.

When taking photos of an object, be sure to have as much crap in the background as possible 

Foamboard? Yes. Foamboard.

I was in a conundrum: The more powerful 5" rig flew fast like a speeder should fly, but it still looked like a regular quadcopter, had open props that would catch on stuff causing crashes, requiring a constant stream of new propellers and expensive trips to the vet to sew up the dog's face (I never hit my dog but there were some close calls because, well, she's a dog and they chase everything)

I didn't want PETA on my ass about the dog so I embarked on a bizarre work-harder-not-smarter effort to run the 2205 motors with 3.5" ducted props suspended in a crazy foamboard prototype frame because I wanted it to resemble a car/speeder and not a regular quad. The ducts turned out to be a real pain in the ass getting the clearances right: Either they were too close and I had to try to trim the props or they were too far away to gain much efficiency. (BTW I printed all the plastics with Polymaker LW-PLA that is pre-foamed and far stronger and more rigid than the other LW-PLA variants and something like 60% the weight of regular PLA. Pretty cool stuff).

Adding to my frustration was that a foamboard frame, while quite rigid once folded, and great for airplanes and other cool flying stuff, is simply never going to be as rigid as carbon fiber under heavy loads and high thrust. Betaflight did not like all this noise one bit and I ate up oodles of time just trying to get this elongated pizza box to just 'quadcopter' without oscillations or hot motors. But, eventually, it flew and it was a lot of fun to drive hard because I didn't have to worry about prop strikes. Now we were getting somewhere!

Pizza, anyone? Before you get all worked up yes it had covers in front which were removed at the time of the photo

Flying this FPV pizza box with the RC car radio was a fun and weird feeling. It took me a few laps to adjust to the fact I had zero altitude control and that yaw and roll were coupled together, but the magic was really happening and I could bash the hell out of the thing which was getting closer to the whole point of this bizarre endeavor.


Tilt-a-Whirl

On all but gentle turns the machine was washing out, stalling and teeter-tottering diagonally on the two fastest motors, leading to undriveable instability. With a frame this big and heavy the motor/prop torque alone is not going be able to swing its big fat rump 'round so it would need actual directional thrust on the yaw axis. I accomplished this by printing some spacers to roll the motors about 10 degrees outward. (They could be rolled inward if I switched to the props-out motor direction in betaflight but I kind of like how they look as is). At this point the machine had far more yaw authority and ceased of the flippity floppity behavior in turns. Also, the ducts were super loud and generally angering me so I tossed them and went with simple prop guards so I could actually get on with my life and continue to work on the code for this thing. 

The next version looked like this:

Kinda looking like speeder of sorts. Less pizza-boxy. Incremental progress.

The foamboard v2 winged-thing actually flew quite well having far less wing area along with more yaw authority with the slightly angled motors. While I was thrilled to be getting closer to an actual crash-resistant, drivable speeder format, as with its pizza box predecessor it just wasn't a happy quadcopter what with the flex and vibrations angering the flight controller. I could never get it dialed no matter how much I squinted at black box logs and fiddled with PIDs in Betaflight. 

I'm certain you learned in school that trying to PID tune a floppy vibrating box of nonsense is a true exercise in futility.  I must have skipped that day because I think I farted around with this thing for a week before giving up. It was like playing wack-a-mole, as every time I'd get it tuned nice and tight I'd fly it and something would loosen up (okay, okay it was the foam) and it would fly like a complete dumpster fire or the ESCs would get hot and shut down. No fun. 


Side Guards and the Letter "H"

I decided it was time to stop the foam board madness. What I needed was a rigid carbon fiber frame with low drag into the oncoming air. Robust prop guard designs tend to be very draggy and needlessly burn oodles of energy but I realized that on a racer the props probably only needed minimal fore and aft protection while side protection should be pretty strong (these things like to slide sideways into things if you come into a corner too hot).  After quickly cobbling together a square 15mm carbon tube with a couple of 8mm arms and some tougher foam board for the side guards I came up with this concept:

This H frame concept flew amazing and emphatically marked the point where I had reached nearly all my original goals: It flew nice and fast, had a reasonable flight time of 8-10 minutes, was light and quite crash-proof.  It also sported a few safety features in the code to keep it from going to the moon or tearing itself up upon crashing. It was this frame that finally got the PMW3901 optical flow sensor for position hold which kept it from wandering off after takeoff prior to punching the throttle. Awesome sauce.

To complete the look I'm going for it needed to resemble a RC car so here it is:

My test pilot with the hand-built frame after a test flight.  This pic was taken the day before I updated to Emax Eco II 2004 motors.  There are a lot of different body and bumper styles that can be applied to this airframe, but I'm pretty happy with this. Now it needs the minimal front/rear prop protection which will be helpful when mowing the weeds or being rear ended by Cole Trickle on the straightaways.  

I'm ready to start working on the designing the CNC carbon fiber plate frame  typical of FPV quads.

Ice Capades and Anti-Skid Stuff

Now that I have this thing really wringing itself out through the woods I needed to put some attention towards off-throttle sliding. While it handles really well like an airboat while on the throttle it will slide to infinity as if on ice if you happen to get sideways at speed in situations where you do not need to continue yawing (which of course also ceases the mixed roll lean). For you old farts out there think of the Atari game Asteroids and how that thing handled. Thankfully, there is already an optical flow sensor on the bottom that measures movement in the X/Y axis which I was using to keep this thing from drifting around during takeoff or landing or idling. Adding another active PID with the optical sensor's Y axis as the input and the roll as the output now means that one can haul ass towards a turn and kick the machine into the turn and it will counteract the slide with opposing roll. This makes it feel like it has airboat-like friction and it slows down much more quickly when sliding sideways. 


They've Gone Into Plaid!

Remember how earlier I said this thing needs to make the heart go pitter patter? While perfectly fun to drive with the Emax Eco II 2004 thruster motor with the 4" T-style prop, it was still a bit too tame for my taste so I swapped out the thruster motor with a trusty Emax 2205S redbottom sporting a 5 inch tri-blade prop. It may not be anywhere as fast as a FPV racing quad but it feels crazy fast flying so low to the ground. And it definitely raises the heart rate when the throttle is mashed on the straightaways.

Youtube compression royally screws up the DJI FPV 720p DVR video quality and I'm no content creator all fussed about about 4K video so here it is anyway:

It isn't a prototype if it doesn't have tape and zip ties holding things together

Features:

Carbon plate frame concept



Thanks to all the hardware engineers for awesome flight and sensor hardware and thanks to all hackers that developed the various libraries that I needed to build this! 



Final 2023 update:  Over this past year I have put in many hours and gone back and forth several times between the expensive carbon fiber plate CNC machined chassis design and a far simpler and cheaper carbon rod and TPU joint style chassis for durability. Additionally, I have scaled the model up to running 7 inch propellers on 2205 hover motors. Due to the higher efficiency gained with larger props, this design runs cool and quiet and flies much longer than the previous 4 inch model.

At this point I feel like I have gotten everything out of this project that I wanted. and am going to hang this final model up on my wall and move onto the next thing, whatever that may be. If you do stumble upon this and want to build one, I highly recommend taking a shot at Nicholas Rhem's version since he has super-clean code, a lower part count and also has the files for a full 3d printed body that is easier to assemble. 

I'm grateful for all the kudos and support from folks all over the world. This was a seriously fun and challenging project and I enjoyed iterating it all the way from the tiny little 2 inch prop model up to this latest 7 inch monster.  

See you on the next project!