Ultimate Ninja: 150g PCB-framed counter-gyro vertical spinner

Do you ever get one of those silly ideas that lodges itself sideways in your brain, filling up all available space and not shutting up until you see if it works? I am thankful that for me it’s usually just pun-based memes, but sometimes I take it a (few) step(s) too far. This is one of those times.

First up, we’re still on the bad movie train and the name comes from the Z movie that got me into Z movies, The Ultimate Ninja. Written and directed by Hong Kong martial arts legend* Godfrey Ho, filmed guerilla-style in public parks and forests by a crew mainly made up of Hong Kong Triad members (allegedly). Don’t ask me what the plot is, I’ve seen it a dozen times and still can’t follow it.

*they made him a professor of film-making at a local university for his pioneering “cut and splice” techniques**

**which was mostly just him stealing footage and music from foreign media and roughly splicing it together with his own footage with no regard for things like “aspect ratio” or “audio levels”.

Back to robots. There’s no way I wasn’t going to make my first spinner extremely weird, and I tried to combine two dumb ideas into one bot; can I spin the weapon motor in opposition to the weapon for some gyro cancellation, and exactly how far can I take the “PCBs as frame rails” concept in my quest to make my robots as obnoxiously small and tightly integrated as I can, often to my own detriment in the arena?

Several late-night Christmas CAD sessions later and several more days’ combined 3D printing time I have a CAD model and a mostly working prototype. Please ignore the “Cockroach connected to a computer in a 1990s science documentary” vibes, I’m using some spare electronics until final PCBs arrive, but it drives and the weapon spins up - first blood was a cherry tango can.

If you’ve seen my other robots you’ll probably spot some design cues. I’m re-using a slightly updated version of the 3D printed bevel gear setup from Birdemic, except this time with the primary driven wheels at the rear. To save some weight over Birdemic’s 3S setup I’ve dropped down to 2S, but am aiming for a similar drive speed by using 1500rpm motors. Similar wedge design to Fatal Deviant and Birdemic, but this time removable with screws so I can use a TPU wedge on a PLA-ST body.

While the main body of the robot is PLA-ST (or possibly TPU, I need to do a test print and see if all the features work out in TPU), I knew I needed the weapon uprights to be as stiff as possible, so I have designed them to be fabricated as PCBs. Since 5x PCBs this size are about $2 plus shipping from the big Chinese fab houses this turns out to be a really cheap way to get precision routed FR4 parts with four colour graphics (dark green base, light green soldermask, silver tinned copper, white silkscreen). I’m not a great visual artist, so I usually go for the ultra-mininmalist look with my robots, but with all that artistic potential on offer it would be a shame to go to all that effort only to use bare green PCBs. I have thus handed artistic control for those parts entirely over to my mysterious friend Lucifer (their words not mine), no spoilers yet but I have seen some drafts and am extremely excited to see the results!

Of course, it wouldn’t be one of my builds without weird electronics. I’ve seen other people use PCB fab houses to make FR4 parts for robots, but I’ve never seen anyone do this. Maybe for good reason?


Yes folks, I made the the drive electronics structural. It’s the same core schematic as the Birdemic PCB, only without the brushed weapon drive channel and with the switch integrated. It’s then splatted onto a basic mechanical outline that I’d already defined in CAD. Everything just about fits! This amazing for packaging, because I essentially no longer have to account for any drive electronics. It is also amazingly risky, because if the board flexes enough the components will start falling off.

I have mitigated this in a couple of ways. The main (and easiest) change was just to increase the thickness of the drive PCB - it’s 2mm thick, whereas the rest of the uprights are the standard 1.6mm thickness. Those should now flex in preference to the drive PCB, although I have ensured that the other uprights are well triangulated to the body and composite baseplate - you can see the screw holes in the top of the main body in the photo above. The screenshot below shows how the TPU spacer between the uprights fits through the inner upright while the drive PCB sits on top between it and the main body.

Hopefully this feature lets the inner upright shift around on hits instead of transferring forces into the PCB. In this screenshot you can also see the little TPU isolation bongler that holds the tiny bronze bushing the motor shaft rides on. As a result of all this the PCB is only semi-rigidly mounted to the rest of the weapon assembly and motor. Just in case though, I’m going to pot the whole board in epoxy. Can’t be too safe.

The weapon has 2x 42mm discs. Four teeth because they look like ninja stars (rule of cool). JLC3DP says 9g and $8.20ish each from SLM titanium, which is absolutely wild. 3800KV 1604 motor with ~1.2:1 reduction gives ~180mph theoretical tip speed - not looking to end anyone’s day with a single roof shot, but hopefully spicy enough to keep people on their toes.

In all this excitement you might have forgotten about the “counter gyro” part of the title (I know I almost did). Maybe you didn’t and were wondering where I’d put the flywheel? Maybe this explains things:

hub

It also wouldn’t be one of my builds without an esoteric RC car callback repackaged into a robot. In this case I’m abusing balls. Ball bearings, I should clarify. As used in a ball differential.

If you’ve ever played with an RC car (or real car on jack stands) with an open differential, you’ll know that if you hold the centre section and spin one wheel of the vehicle, the opposite wheel will spin in the opposite direction. Most vehicles have bevel gears to achieve this, however smaller RC cars often have ball differentials, which provide much the same effect by using ball bearings rolling on parallel plates. This means that with just a little frame of reference change, a differential can be a reversing gearbox. Normally this is a terrible idea, because differentials have relatively fragile bevel gears inside. However, ball bearings are compact, and robust, and can survive some clutch action, and anyway once that antweight fight starts physics cease to apply anyway. Can I use them to spin a pulley one way and a weapon the opposite way?

Ball differentials aren’t optimised for continuous running, however. The balls only roll when the car is making a tight turn, or a wheel loses grip. They’re designed to have some inherent friction to improve their function as a differential. If you grab a wheel and pin the throttle something will get hot and unhappy pretty quick. There’s something else though that has two parallel plates separated by a number of bearings in a carrier. They’re also optimised to roll efficiently. And very cheap as a complete assembly. It’s a thrust bearing!

The bulkheads have the bearing carriers affixed. Currently superglued into PETG, but will be soldered into the final FR4 bulkheads.

Weapon hub stackup is a complicated one. The central hub is driven from the weapon motor via 2x o-rings. Pressed onto the sides are one side of each of the thrust bearing faces. This is slid in between the uprights. The weapon disks then slide onto the outside - the 3D printed versions also have thrust bearing faces pressed in, but I’m hoping to have the bearing groove feature baked into the final titanium parts. In the centre of the weapon disk is a smaller roller bearing, these align the disks and the hub axially and (fingers crossed) clearance the thrust bearing cages just enough to constrain the thrust bearings from climbing the grooves in the faces if required. It’s all tied together with a big screw, a locknut and some belleville washers.

Does it work? Actually, yes! At least with plastic weapon disks.

Just like a ball differential, preload is touchy. Half a turn too tight and the motor can’t get things spinning (and if it does all the 3D printed rotating parts melt). 1/8th of a turn too loose and the weapon disks are barely coupled and take a couple of seconds to spin up and down. But get it right and it’s as smooth as any other badly aligned belt drive spinning at 30,000rpm. A little oil on the balls does a lot for smoothness too (I’m giving up make your jokes I don’t care).

Gyro isn’t entirely cancelled - there’s about 5g of spinning mass in the motor and another 4g in the pulley, while the total mass of the weapon disks is 18g, but if there’s left over weight I can put it into the pulley and negate more gyro. If I can’t, I’ve already negated about half of it. If I had the space available inside the bot I’d prefer a higher KV motor and a 2:1 or so reduction to the pulley, but smol bot > optimising the physics.

How smol?

Yeah that’s pretty small I guess.

Thanks for reading about my latest silly little robot, I will hopefully have it done for GROCS and/or ORCS. See you in the OOTA zone.

11 Likes

now im glad that i entered plants

1 Like

I love that you’re doing this level of crazy, and I’m very interested to see how it drives (I’m thinking about something similar, but a totally different implementation)
Hope to see it at either of those events (I’ll be there with Grievous :wink: )

1 Like

Hey siri, set reminder to thicken chassis armour before grocs!

Very scary robot here! I just know my ant bot (NBD) is reading this over my shoulder, quivering.

1 Like

Ah memories of burning out a bunch of plates when tried carpet racing the first time!

This is outstanding work mate. I love the concept and the execution is flawless. Pure unadulterated envy.

1 Like

Through no fault of my own (I forgot how long it takes to have a back and forth conversation with JLC support when their working hours are my sleeping hours) parts didn’t arrive in time for GROCS, arriving instead the following Monday. This was a happy accident, because 1. I got my van stuck in a very soggy ditch on Friday night, only got home at 4am, and was in no place to field a brand new robot, and 2. I subbed in Birdemic and (spoiler for the Birdemic build thread) somehow managed to bring home 2nd place in full combat in my sleep deprived haze.

It wasn’t just PCBs and shiny titanium bits that arrived. As a thank you to Lucifer for their incredible work on the PCB art I decided to make them a display/fidget Ultimate Ninja. I had JLC print a body and a pair of weapon disks out of crystal resin, and I printed the remainder of the parts from glow in the dark PLA. The result is stunning and a reminder to us all that the world would be better if technology was still transparent.



Speaking of the art, it’s finally time to drop the full art render. A lot of it is hidden inside the robot, so it’s great to be able to show it all off in one place. The colours on screen also really don’t do it justice, so just imagine it looking a bit like this (or come take a closer look at an event):

untitled

I am so unbelievably pleased with how good the artwork looks, both on screen and in person. Beyond the odd silkscreen easter-egg (as is tradition in the EE world) I’ve never worked with PCBs as an artistic medium and neither had Luci, but it’s definitely something we’re going to revisit. If you really, really like the artwork and ask nicely they’ll tattoo some on you in the back of my van in the Robodojo car park. Or, if you don’t feel like a tattoo in the back of a slightly rusty Ford Transit on a farm in Yorkshire, then maybe you can pay them money to do the graphics for your next robot instead I guess?

As for the rest of the robot: I assembled a drive PCB super quickly, having actually remembered to buy a solder paste stencil for this order and having all the parts in stock already. It took a couple goes to get all the components seated nicely, but in my defence I pick silly component packages and then decide to reflow PCBs sat at my desk, with the PCB balanced between two spanners, and a Lidl hot air gun as a heat source. In the first post I mentioned ordering 2mm PCBs, this turned out to be impractical when 0.4mm of extra board thickness turned $5 into $65, so I decided that actually 1.6mm will be fine after all.

I adore this little assembly. I’ve settled on some kind of blue raspberry lithium goo (why do they always make it look so tasty???) for the drive balls, and the thing is buttery smooth now. It spins up almost as like it weren’t full of balls, and doesn’t make half the noise the plastic version did. How long that lasts I don’t know, but it seems to be holding up so far. The TPU centre section (with its little standoffs that poke through the inner frame rail) seems like it should provide some decoupling for the drive PCB, at least in two axes, as I can see it flex as I move the drive PCB around by hand. I’m holding off on the epoxy potting for now so we’ll see what happens. A spare drive board or two might be prudent?

Here’s a shot of one of the uprights with the bearing cage soldered in. Since there’s a bunch of unknowns in the PCB process I eyeballed the hole tolerances and somehow got it pretty much bang on - certainly within the range of tolerance for these cheap pressed brass cages. The great thing about the soft lead solder is that if there’s any significant misalignment and the thing gets hot, the problem solves itself!

All the prototyping work paid off*, and the assemblies slid together perfectly. Baseplate + four screws and the weapon module slides out, along with the motors and the entire wiring loom. One more screw and another couple loosened and the weapon belts can be changed. I used to be a production engineer for a little bit, and I can still hear the curses thrown at the engineers who failed to consider the people assembling their designs. I also know I will throw those curses at myself if I make it difficult to work on, and I picked up some really fruity ones working in Swindon, so I try my hardest to plan ahead for repair so I don’t have to hustle at events. Instead I can sit around drinking coffee and watching robots fight instead of repairing my own.

*Almost, despite my best efforts I was still bitten by the integration hell gremlins when, despite having survived literally all my testing with plastic weapons and stress testing with over-tightened bearings, the cute little (300mA…) surface mount switch welded itself the first time I fired the bot up with a metal weapon. It did turn off, but it did not turn back on, which is at least the best way for a switch to fail. I did make sure there was space for a bigger switch, but I didn’t account for FreeCAD being a little baby and refusing to make a pocket for it. Thankfully I have a heat gun and side cutters.


Usual packaging shenanigans, contd.


Ever seen a photo of a preserved human nervous system laid out in a glass case? Yeah.

Anyway, does it spin? Hell yeah it spins. This thing is terrifying. It’s hard to get a sense of scale when hitting scrap chassis inside a eurocrate test box, but I don’t think those are small hits. There also doesn’t seem to be much gyro weirdness from the extra weapon mass - I’ve never driven your typical (sensible) spinner bot, so I don’t have any direct comparison, but it feels like the majority of the drive upset from turning the weapon on is actually the vibration combined with the slippery plastic eurocrate floor and the fact that the wheels aren’t attached properly. With the weapon off and on my much gripper desk it drives like a slightly slower Birdemic - not surprising as they have similar wheel layouts but Birdemic has those 3s beans (I;m thinking about thos 3s beans). I was kind of hoping the BBB 1500 motors on 2s would match the 1000s on 3s, but I guess there’s no free lunch and I have to make compromises somewhere!

Unfortunately it’s still not ready for ORCS, as it’s currently at 152g with no wedge or forks. For now I’ll probably just run with a single weapon disk - probably sensible anyway given I have no spares, but I’m going to take a shot at smoothing out the (predictably) rough surface on the discs I had made with the integrated bearing groove. They’re a couple of grammes lighter than the versions with the steel insert pressed in so should just bring me under the weight limit. Other than switching chassis material or drilling holes in the weapon (no thank you) there’s not much else I can do to drop any significant weight. I could always make it smaller I guess?

Anyway, thanks for reading far too many words about my latest silly little robot, and thanks for all the nice comments here and elsewhere! If you’re at ORCS please come take a close look at the artwork in person, it’s really quite something, but bring your own magnifying glass as it’s real tiny.

3 Likes

“Probably sensible”.

Some flap disk work, a bit of sanding, five minutes on the drill with the bearing preload wound up way too high, some big globs of grease, and a few batteries’ worth of spin ups did the job. Not exactly buttery smooth but good enough is good enough.

Programming connector weighs 0.45g, so we’re officially in weight! I shaved all the chunks out of the floor of my test crate and filmed one more video, making sure to get in a few spins with the weapon off and on for some back to back gyro comparison. It turns a little slower past half throttle, but I’m hoping to run the weapon at a low speed with full power triggered by the thumb switch on my transmitter. Definitely no gyro dance, which is pretty great for controlbot-pilled brain.

Otherwise? Thing rips. 10/10 no notes, really pleased with this one. Can’t wait to see the balls go everywhere at ORCS.

5 Likes

Well damn, it only kinda worked?? 2W 3L at ORCS, no major damage and it didn’t blow up (which is great because I haven’t made a spare drive board yet). I even remembered my actual physical copy of The Ultimate Ninja!


Keeping warm by the fire the night before.

I had a great range of matchups for a new bot - a drum (Falcon 2), a pusher (immovable object), a grabber (Fang), a horizontal (Seal Avenger) and a flipper (Phoenix). They were all really great fights (if not always for me), but I was especially excited for the Seal Avenger matchup, because a fun quirk of this vert design is that when fighting a horizontal the big weapon to weapon hits are actually loading the thrust bearings in their correct direction! After a few tentative weapon to weapon hits I realised the bot could tank them, and after some less tentative big hits back and forth antweight spinner RNG sent The Seal Avenger into the pit and left me with only some dings to the weapon disks.

In the other fights it showed a lot of promise, immediately doing vert vs drum stuff with Falcon 2, in what might have been two minutes back and forth if my robot hadn’t ended up upside down. I’d kind of hoped it’d have enough traction to drive around upside down just a little, or maybe enough weapon power to run into a wall and self right. It actually had enough weapon power to roll neatly straight into the pit.

It also experienced some mobility problems, where it had trouble driving confidently when the weapon was throttled up. Initially I thought it was voltage drop in the vape cells (now surely being run at way over their rated current), but after getting home and taking a close look in the test box I noticed some wobble in the blade. I was worried something was bent, and the M3 axle bolt was slightly tweaked, but actually the majority of the wobble was a melted SLS nylon hub! I suspect I either had the bearing preload turned up too high or the ends of the hub were making contact with the weapon discs - there’s supposed to be an air gap but design clearances because hypothetical a long time ago. Looking back at the video footage I can see the forks vibrating, which is a sure sign that the wheels were barely touching the ground!

TL;DR pretty good showing for a new bot. Improvements for next time:

  • I’ve already tweaked the weapon hub design for smoother running (it was a little narrow previously, maybe because it was melted). I also turned the weapon discs around, so that I’m now using the shiny sides for the bearing surface. Way smoother than the grooves. Wish I hadn’t used green loctite on the insert ones now…
  • It needs something to stop the weapon touching the floor when upside down. It should then be able to self right against the arena wall (Sorry Dave)
  • The wheels also need to touch the ground when upside down…
  • Since getting it home, the PETG belt retainer that goes around the motor melted in the test box. I could figure out a different plastic, but I think I can make a really thin aluminium one work.
  • It could do with lower capacity, higher discharge rating cells. These are 280mAh and maybe 10C on a good day…
  • I need to save like, three grammes to get all this in weight. I think my scales read low, too…

Also, at least some of the balls did come out, but they were very polite and waited until we got home.

5 Likes

That’s a tidy bot..
For the belt carrier, ABS or nylon should handle the heat a bit better than PETG and ABS should also be lighter..
you could add cooling fins to the belt carrier too.

If the Cells I had would work for you they were 1S GNB 300mAh with 60/120C discharge rating.

Thanks! I might try an ABS carrier, would also mean I can bake cooling fins in. I did consider it but there’s so little space inside and I was worried about clearances. The body and housing aren’t far off the geometry required for a centrifugal fan. Would be cool if it also sounded more like an air aid siren than a possessed coffee grinder, too!

I did check the CAD on those cells, I can make them fit but ideally I’d have to make the bot wider to squeeze them in, and they’re already a couple of grammes heavier than what I’m using. I think I’ll stick with the ones I have for now, but component shop have some 260mah 50/100C cells that could work well, if they’re ever in stock again (like they were a week ago)…

I fixed some vibrations on the robot, but it still drives weird with the weapon on, so I put together a little test setup to see if it’s actually a battery issue. From left to right, the meters show voltage at the battery terminals (at the cell itself, to avoid connector/wiring losses), voltage at the ESC power pads (to measure connector/wiring losses), and ESC current.

100% power from stopped pulls (very briefly) 9A, and the battery sags to 5.25V. The middle meter thinks the ESC voltage is 0, but I think this is just an auto-ranging issue.

After a few seconds of spinup it hits max RPM, but it’s not happy - I can hear the RPM of the motor fluctuating, and the battery still hasn’t recovered to a sensible voltage.

A few more seconds at max speed and things settle down a bit, but the battery still isn’t happy. No wonder it’s getting hot.

So yes, battery issue confirmed. At least there’s only 2-300mV of system voltage drop though, not bad considering it’d the main power connector is rated for 3A and the switch only 1A. Time to go down the antweight battery rabbithole…