3lb Hammer/Axe Combat Bot - How to thwack with FoC?

Hi All,

I’m working on a 3lb combat robot that’s trying to be a hammer/axe bot.

With 3lb of weight, I’m allocating roughly 350-450g to the weapon system mechanics, with the current plan being a ~100-150g axe or hammer head, on a 140mm moment arm, mounted securely to the frame with an 8mm steel shaft that’s held in a pair of bearing blocks in the chassis.

The story so far
My previous 3lb combat bot Z Offset was a lifter/grabber that has a number of key design problems, so I’m building a new design from the ground up in a related design space to allow ideas to percolate for the first bot. Z Offset had a 140mm flipper arm, powered by a 3000kV 4S brushless inrunner (BLHeli32 driver) with a 52.8:1 geartrain. The geartrain has a slipper gear towards the output side, tuned to slip when the flipper arm exceeded ~4-6lb of force at the tip. The flipper was robust in a recent competition (placing 5th/16 bots), but really highlighted how important position control could be.

The motor and gearing from Z Offset 3.4:

The main problem with the flipper is that while I tried doing my own PID angle target control (AS5600 on the output shaft) in a prior version, it’s very annoying to try to tune a PID, that’s wrapping the BLHeli32’s internal PID (presumably), where its parameters are all set around low inertia propeller drive, and work “ok” for other use cases if you’re creative.

A previous version used a 65kg/cm metal geared servo to control the flipper, which was much nicer, although it was too large, and not robust enough for the application.

New Hammerbot
I’ve got two avenues for a hammer motor in mind:

  • A salvaged DJI Inspire 2 3512 motor: 460kV, 136g, runs up to 6S. This would likely need a two stage ~7:1 gear reduction. I am considering putting the existing Z Offset slipper gear inline, like so: 7:1 two stage gears
  • Or A 5010 360KV motor, with a lower reduction

In both cases I’m weighing (literally, gears are heavy) just using a round belt stage in place of the slipper gear, or just using timing belts and relying on the motor taking impacts in stride (possibly unwise).

My plan this time around is to use a B-G431B-ESC1 (I picked up a pair last week, although sadly they’ve sold out everywhere at this point :s ) for the weapon motor, running SimpleFOC, along with an AS5047 magnetic encoder wired to the B-G431B-ESC1 in SPI or quadrature mode (whichever seems best).

I’m also considering adding a second encoder to the main output shaft, and wrapping that in another control loop to allow for servo like position control (for self-righting the bot, and returning the hammer, regardless of potential geartrain slip). That’s not super relevant at this point though.

I’ve got thee questions

  • Does anyone see any glaring holes in my plans? Thoughts/suggestions are welcome.
  • What’s the best way to get the hammer going as fast as possible in it’s ~180 degrees of travel (3.5 revolutions of the motor if the 7:1 gearing is what I go with? I’ve read threads about fancy ideas for a controller, but this isn’t exactly that. Unlike the vast majority of applications discussed here, the motor system is supposed to crash into a solid object and break things! Keep in mind that as the system gets damaged, the gears/bearings/shafts will become damaged and misaligned to some degree so solutions that rely on a static calibration might only work for a bit.
  • What can I expect to happen electrically when the hammer hits the plywood floor/a plastic bot/the opponents steel weapon that’s spinning at 10k RPM? Is there anything I can do on the software side to give the electronics the best chance at not exploding? (e.g. put the FETs in a specific state before impact?)

Preferred. I would go for a bigger motor


with a simple belt reduction, and up the current board. The B-G431B-ESC1 will overheat and burn very quickly, as it is not designed to work in this use case. You need a board that can deliver at least 100A burst and 50A continuous without heating/cooling problems.

Not needed, and will add complexity. As long as your belt doesn’t slip you will be fine. Also you must consider a simple chain reduction, instead of a belt. You can make a really simple and cheap chain reductor with bicycle parts. Rubber will stretch with time and high temperature and slip. Bicycle chains can deliver a massive amount of torque with zero stretch and no slippage.

What are your dimensional constraints? Does the bot have any hard dimensions you cannot exceed?

Let me think about this a little more.


The biggest constrain I’m under is weight. It’s a 3lb weight class, so I need the entire bot to be under 1360g. The second biggest constraint is runtime (in a good way!). Matches are 3 minutes long (at which point the judges score on aggression/control/damage), but if your bot can’t move outside of spinning in place, you get counted out after 10 seconds (and lose instantly). As well, competitors can tap out, surrendering at any time.

I use a google drive spreadsheet to track part weights, down to the last bolt, and typically leave 5-10g or so to spare. What that means in practice is that ~30% of the weight can go to the weapon system total (ESC, motors, gears, support, arm, head etc.), not including batteries.

The rule of thumb I’ve used is no more than 30% of total weight.

On the power side, I’m planning to run 2x850mAh 3S 100C batteries in series (if I end up using a 6S capable motor, like the two I’ve listed), or in parallel otherwise. For comparison, Z Offset was more power light and ran a single 4S 720mAh 75C battery, which was fine. The weird thing is that I think combat robots have an even more extreme power to runtime ratio than the most aggressive mini-racing quadcopters (which I believe typically run >5min).

Another consideration is that for combat bots it’s often a good idea to run things way above spec if you can get away with it. For example I generally run 12V DC motors at 4S. I don’t care if they go from 1000 hour MTBF to 2 hours… because I’ll use them for a maybe a dozen 3 minute matches over a year, and maybe an 30 min of testing total), and often replace them entirely out of caution.

Plus toasting the windings isn’t the most common failure mode of BLDC motors:

(my 1lb drum spinner didn’t win that match, but was fully functional two hours later for the next one- with a new motor).

I think I can get away with a motor in the 125-150g range. Ideally with 5mm steel shaft (I have a lot of hardware in that size).

Chains are commonly used in larger weight classes, but other builders have noted that they’re really annoying to repair when they get damaged (partially crushed links). In this weight class, they’re too bulky I think, but 2-5mm tooth pitch timing belts are commonly used. (GT2 , HDT5mm, etc).

For dimensions, The bot is likely going to be around 200mm W x 185mm L x 32mm H chassis, with 4x 44mm wheels, and the weapon mechanism will protrude from the top. This size is flexible (+/-25mm on L/W, and probably could go thicker on H, but not thinner. The main issue is that since it’s weight capped, bigger often means less durable. This size is already on the larger size for 3lb bots.

For a rough idea of what this sort of bot could look like, here’s an older version of Shatter from Battlebots, which is a 250lb weight class hammer bot, where you can see the general layout of a 4WD hammerbot:

They use a chain :wink:

They also use meccanum wheels for omnidirectional travel, which is cool, but not something I think I can make reliable in the 3lb category. Their other advantage is that the Battlebots arena has a metal floor, while 3lb arenas in my area are plywood, so I can’t use magnets on the bottom for extra traction.

My plan is to have the weapon axle (~8mm hardened steel shaft) between a pair of 1/4" to 1/2" UHMW walls, with the axle mounted near the front of the bot in a fairly similar way to Shatter.

Here’s my very rough cad layout (with some sketch circles roughly where the weapon motor and output gear/pulley could live.

Oh, so that’s the really small class. I could not really tell the scale from the pictures.

I suggest you skip the gears and go direct drive then. Pair up two of these in a hard axis coupling configuration

and you can attach the hammer directly to the motor.

This will add up to 376 grams. Plus the hammer 150 is exactly one pound. Direct driving in short bursts will deliver incredible inertia-free hammer movement. It will also massively simplify your design.

I have designed mecanum wheels in the past and it is extremely complex to design the wheels and write the algorithm, and control them, it takes a lot of practice. I wrote an algorithm to control them with a PS5 controller. It works if your bot is large, like 50 pounds large, but 3 lb is not worth it.

Also as I said, you will need a lot more powerful driver.


PS the peak torque of two coupled motors like that is about 5Nm (I’m guessing here), and for a 30cm arm this would be about 1.5kg hammer head. Dynamic torque is about 1/3 of that so you can definitely spin 150gr hammer on a light and stiff arm with a really high momentum. No need for gears. Since you do direct drive you may have to program a simple S-curve motion planner else the force you deliver will be so large you will tear your robot and blow the power driver. Which is a good problem to solve, you will have to work to really lower the power, not increase it. You will also need a pretty large capacitor to burst all that power into the MOSFETs instantaneously.

Antigravity MN7005 KV115_Antigravity Type_Motors_Multirotor_T-MOTOR

Those look perfect, although I’m hesitant to slap a pair of $220 motors in an exposed section :wink: (my typical bill of materials for a 3lb bot is ~$250 USD, which means spending $500-700 per robot due to the need to have spares on hand, and parts that are purchased and don’t work out / are destroyed.

I do like the idea of pairing up (or finding a thicker) 70mm motor in the 100kV range. Simpler is absolutely better!

You absolutely don’t have to use these expensive motors, or if you find a thicker and cheaper one it will also work. Look into motors designed for small scooters and children hoverboards. Let me see if I can find some, you may be able to get from aliexpress?

1 Like

I get most things from AliExpress. I’ll have to take a deeper look tonight. On hand I’ve got a 5010 750kV motor, and two of those DJI ones, but I won’t try to shoehorn the wrong motor in this time around :wink:

Is this what you had in mind?

C$ 55.01 7025 Brushless Motor 170KV

(261g, 0.189 ohm, 6-12S 50A)?

I’m finding more luck with refurbished ag drone motors than hoverboards but I might just not know where to look.

1 Like

Ag drones work too. Hoverboard motors may be too heavy.

Just a thought, if you can live with a bit more reset time on your weapon then maybe have the hammer on a strong torsion spring in the down position and use the motor to tension it over the course of a couple of seconds. Potential for a much more powerful strike with a relatively small motor. Maybe use a cam mechanism to wind it up over 270deg with a sharp release, that way you can cam it to have a very low (or zero) holding torque and the the ramp on your cam will improve the gear ratio.

1 Like

Hit and run :smile:

I was thinking the same. Maybe with a sharp/pointy hammer.

I have a motor similar to the Antigravity MN7005 KV115_Antigravity Type_Motors_Multirotor_T-MOTOR paired with the AS5600 and B-G431B. One thing to be aware of is that the AS5600 is crap and intended for low-speed operations, I can’t reliably get above 60 rad/s with a load attached. Since this board only supports I2C your choice in sensors is very limited. I can’t find a single sensor that actually has a listed max speed.

I might want to try that at some point, but it presents a safety challenge as well as a reliability one. Less moving parts. In recent memory the best innovation in combat robots was Blip, which used a novel flywheel mechanism and cam release to power its flipper mechanism. You can see it here, and they even prototyped it at 3lb weight class before scaling it up to 250lb (which is no mean feat): BLIP REVEAL [Seems Reasonable Robotics] - YouTube

I don’t have any illusions at being able to replicate that design solo in 2 months before the next competition though :slight_smile:

the AS5600 is crap

I’ve become aware of this as well :confused:

I’ve got some AS5047 encoders that seem much better for this sort of thing (people on this forum have claimed to hit 600 rad/sec with it.

Since this board only supports I2C

Says who?

Over in this thread there are reports of it working with PWM sensors. I was hoping to use the SimpleFOC Drivers repo timer based STM32 handler for quadrature inputs, but we’ll see. I’ve got a microscope and can do some degree of hardware hackery to try to convince the board to do what I want.

I meant to say it doesn’t support SPI, which is what most of the decent sensors use.

You can use this board with a decent sensor in ABZ mode (and the timer-based decoder). You will get much better performance at high speeds this way, but you’ll need to do a little dance at startup to find the zero position.

PWM mode isn’t suitable for high speeds, update frequency is too low.

If you desolder the potmeter and temperature resistor, you might be able to breakout the pins normally allocated to SPI2.

Maybe I can use PWM mode (1 pin) to get the starting position, then swap over to ABZ mode :confused:

The AS5600 is a fantastic sensor when used for its intended use case: a digital potentiometer. That’s why you won’t see an RPM spec, it’s not supposed to work with a motor but turned with a knob by hand, and perhaps a slow servo.