5DoF mobile assembly robot using SimpleFOC

I’ve been working on a robot for assembling modular structures, and at some point someone recommended that I look into using BLDCs + SimpleFOC for the actuation system. The robots are kind of working now, and I wanted to share with the community in case people find it interesting.

The robot is basically a 5 DoF arm with grippers on both ends. It’s an “inchworm” style robot that’s designed to crawl around the structure that it’s building and to carry and place new blocks of material as it goes. The modular block system is more or less like giant Legos, but “engineering” :zany_face:. The robot itself is also modular, towards eventually assembling it with another assembly robot (the lab that I’m in is a lil fixated on self-assembling systems; imo this type of modularity mostly makes everything worse and harder lol).

We’re presenting the whole assembly system at the upcoming ACM SCF conference, so here’s a video we made for that :slight_smile: (sorry if the video doesn’t embed correctly!)

The system uses a GM3506 gimbal motor that goes through a two stage reduction for a total of 144:1 nominally. The two stages are to offset the output shaft from the motor shaft so I could more easily stick an encoder on both of them (AS5047), so I could run the motor in closed loop mode but also know from the get-go the output shaft position. The driver is the DRV8316 and the microcontroller is the Adafruit Feather M4 Express (SAMD51). We can electrically+mechanically “glue” the modules together using low-melt solder on the incoming/outgoing attachment plates, which have an internal trace laid out as a resistive heating element, controlled via MOSFET on the module board. This works better than you’d expect! But, in this revision, after many days of robot use, one of the vias mechanically failed, causing the communications bus to fail, so I got rid of these for the second robot. The robot modules are networked to each other over… I2C lol. The primary microcontroller is an ESP32C3 Xiao that we stream commands (e.g. desired joint position, open/close grippers) to over WiFi. Most of the rest of the robot is 3D printed polycarbonate and waterjet aluminum.

The overall robot weight is about 4 kg, and its payload capacity is about 1.5 kg (for this geometry, this means that regularly some of the joints are hitting >10 Nm). You may be wondering if at these weights/moments 3D printed gear boxes perform well: in some ways yes (failure is not immediate), and in other ways no (failure is inevitable). The main failure mode is that my tiny planetaries start losing their teeth after like 30 min of operation. It’s fixable, but irritating and limiting. I’ve finally come to terms with not 3D printing the gearbox and I’m now switching the whole system to an off-the-shelf reduction hahah.

Another valid question is if at this reduction/speed and for this application whether it would make more sense to use a simpler motor set up (gearbox + brushed dc or stepper). Originally, I had wanted to do a modular set up with much lower reduction that we could reuse for other more dynamic applications, and I made this version of the robot arm that really struggled/couldn’t hit the payload capacity I needed, so I de-prioritized backdrivability etc. and just increased the reduction, keeping the general architecture/electronics since it was already made. Overall, even with the eventual switch to an off-the-shelf reduction, we’re at a good torque density at a good cost, which is why I’ve been sticking with this.

Learned a lot through this project! Hope you guys like it haha. I also wanted to say thanks to all of the developers and contributors to SimpleFOC for enabling this!

5 Likes

Wow, that’s really amazing. Hey, @miana welcome to our forum!

What a fantastic result and a great video showing it. I’m really astounded at all the different projects SimpleFOC gets used in… this is another very amazing example.

Thanks a lot for sharing it :slight_smile:

That’s really awesome!

Hi @miana,

This is awesome!
Congrats on a very clever design, some nice results and a cool paper.
It reminds me a bit of small cube robots assembly from a few years ago.

Is the actuator hardware (mechanics/electronics) gonna be closed source or would you be up to share them with the community?
It seems very well thought trough and would be surely interesting for many users. Also, 10Nm is an impressive amount of torque coming from a gimbal motor GBM3506 :smiley:

Thanks :slight_smile:

Yes, I plan on sharing the actuator hardware! Cleaning up the documentation/CAD a little now haha.

1 Like

I cleaned up the documentation of the actuator hardware (cad, PCBs, firmware) a little here: Files · main · Miana M Smith / MILAbot-actuator-v1 · GitLab