I got my robot to autonomously charge, how about you?

66 views
Skip to first unread message

Michael Wimble

unread,
Aug 1, 2026, 2:33:59 AM (4 days ago) Aug 1
to hbrob...@googlegroups.com

A few decades ago, I had a side gig writing for a couple of computer magazines (can you say, “Byte”?) and was paid by the word. I developed some bad habits from that. Nonetheless, here is a longish story, taken from my personal blog, about how I got my robot to autonomously charge itself after a couple of days of work (not counting the months I spent 3D printing the mechanical, two mating pieces). For your amusement, only. This was written for the non-technically obsessed.


2026 07 31 Friday


All I wanted to do was to have my robot be able to charge its battery itself, without me getting involved.


It just needed to know that the battery was getting low, know where the charging station was, drive to it, plug itself in, wait until the battery was recharged, and then go back to whatever it was doing.


Oh, child. Things always seem easy until you get into the details. And so begins another adventure with Sigyn, my attention-needing robot.


A few weeks ago, maybe a few months now, I began working on pysical the part of this problem where the robot would plug itself into the charger. There would be a part attached to a wall that contained the actual charger. On the robot, there would be a part that would need to be mated to the wall part. Once the two parts connected, electricity would happen.


Robots, as a rule, don’t make precise movements. The two parts would have to work if the robot couldn’t quite get itself precisely at the needed spot. In my case, the robot is heavy and is rolling on three wheels. The up and down position of the charging port attached to the robot wasn’t going to move much. There isn’t a suspension system, the robot doesn’t really flex when it moves. All I really need to worry about is left-to-right alignment of the two parts when they mate. Oh, and the forward and back alignment. To solve the left/right alignment problem, I began to design two parts that would work even if the left/right alignment was a bit off.


My first designs were two pins on the robot that stuck out, and two rectangular plates on the wall. The plates were somewhat wide, and as long as the pins touched anywhere along the plate, a good contact would be made. But my robot charges using a 42-volt system, and there are a few regulations about how much voltage you can have on exposed contacts. There are several rules that can apply, but somewhere between 15 and 30 volts seems to be about the most you can have and still make some claim to being safe. So the parts had to have no exposed metal when electricity was flowing.


My next designs were a pair of pyramids that mated. On the robot, the pyramid pointed outward, toward the charger, and the charger’s pyramid pointed inward. At the tip of each pyramid, I tried various kinds of commercial plugs. But the friction was usually too high, making it hard to uncouple after charging was complete, or there was too much wear on the contacts, so the connection would fail after a few thousand matings.


I’m now on, I think, version 21 of my design attempts. It is two cones. And at the top of the cone on the robot side is a square tower with two brass plates on opposite sides. Obviously, the wall side has an inverted cone and a tower that goes inward rather than outward. Its two brass plates are spring-loaded and at a slight angle. When the robot starts to mate, the two cones can be quite far apart as the insertion begins, and the cones will force alignment as the robot moves forward. And when the robot-side tower penetrates the wall-side tower, the two pairs of brass plates slide past each other. The springs make sure they press against each other. The length of the brass plates means that the robot doesn’t have to have a precise penetration distance to make a connection. It has more than an inch of working room where the contacts will work. So, the robot can be a bit off in left/right position as it mates, and it doesn’t have to precisely move forward to successfully mate.


That was the easy part. Other than it taking 21 attempts at experimenting with different shapes, angles, lengths, thicknesses, mountings for springs, sizing the spring forces, figuring out what angle to use so that the pairs of brass plates would self-clean as they slid past each other, figuring out how to allow the wires that attached to the brass plates to not interfere with the springs, and making sure the brass plates wouldn’t slip out of their holders. All easy stuff if you’re a mechanical engineer.  I am not.


I stopped working on the robot for a couple of months so that I could learn a new skill, in my lifelong journey of knowing how to do everything. I’m learning to sew. But yesterday I decided to take a break from that and get back to working on the robot charging system. I powered up several computers and, wouldn’t you know it, things did not work. In this case it was because I had changed how my home network worked. I have a “mesh” system in my home with the idea that as the robot moved throughout the house it would always find a way to get a really fast network connection so the robot could talk to other computers, especially those I use to remotely watch what the robot is up to. 


It turns out that Google’s mesh routers do not like to provide high-speed connections throughout the house—they interfere with each other and only work well when you accept slower data speeds. Unless you change the way they talk to each other. I made that change and it required that I change all the network settings for all of the computers involved in the robot. And, while I was at it, I changed the antenna system on the robot so that the body of the robot didn’t interfere with the WiFi system, which meant I had to change the way WiFi worked on the robot. The result of just changing the network was that much of the software no longer functioned correctly.


How could that be an issue? Well, let me tell you that the robot networking software works rather differently when the robot thinks it’s talking directly to Wi-Fi and not to an intermediate device, which it was before. This led me down to doing network analysis of the data traffic from the robot to the other computers. 


I’ve been working on computers since the days of kerosene computers, and I’ve worked on nearly every part of a computer. I’ve designed small computers and supercomputers, I’ve written operating systems, language compilers, linkers, loaders, code optimizers, simulators, and on and on. The thing I know least about computers is networking. In this case, the hardest problem that I had to find is that someone else’s software package I had added to my robot decided that for one of the data types the robot produces, in this case it was the “odometry” data, or where the robot thinks it has moved over time, this other software package was configured to store a thousand readings before sending out the data. When you aren’t using Wi-Fi to send signals, sending out 1000 messages is nothing, it’s instantaneous. With Wi-Fi, it takes seconds for the data to show up (yes, lots of details are omitted). And the robot does not work if data is not pretty much instantaneous. The robot has absolutely no use for data of where the robot was some seconds ago—it will happily crash into things if you don’t give it up-to-date data and lots of it.


Well, that took a few hours to track down and fix. As a side note, I had to also fix all of the “quality of service” configurations for all of the parts of the robot that were sending and receiving data. This was not an issue when I was using Ethernet for communication, but it sure became an issue when I went to Wi-Fi. When Halloween comes around, look up “WiFi Retransmission Storms” for your ghost stories to tell around the campfire.


I had anticipated having to write quite a bit of original software to get the robot to move into position to mate with the charger, especially dealing with moving those last few millimeters where it would be easy to break things if the robot wasn’t pretty close to the position and angle it needed to be and moved too fast or exerted too much pressure as it mated. Just before I began writing the code, after having spent a couple of hours writing out the specifications for what I thought I needed to do, I decided to look at the built-in facility provided by the open-source software that I use as the base for my robot. I expected the provided solution to be a farce, a “placeholder” where you would replace it with real software.


It turned out, though, that the built-in software was fairly well designed for my robot. All I needed to do was to be able to tell the software where the charger was, within a few millimeters, and where the robot was, within a few millimeters, and to tell the software when the robot had successfully mated with the charger.


The first part was technically hard but actually easy. You’ve seen QR codes, those things that are going to replace bar codes soon (they are just waiting until they are sure the last store in Zambia has equipment to read the QR codes)? Well, there is a simpler version of those graphics called April Tags. You print them out on your laser printer, paste them to a surface, add a camera to your robot, and (magic steps omitted), if the robot can see an April Tag it can tell you with rather surprising accuracy where your robot is from that picture. So I taped up a tag right next to the charger. Now I could tell the software exactly where the robot was and where it needed to be for mating to occur.


The second part was technically easy but actually hard. In order to tell if mating had succeeded, I needed to measure if current was flowing from the charger into the robot. I already had four similar sensors in the robot already, but they measured current flow for other pieces of the robot. It was easy to add a fifth sensor except that I had to nearly completely dismantle the robot to get at the needed wires and add a few new wires. Sigyn is not designed to be quick to disassemble. It is designed to survive a lot of vibration, which means a lot of screws have to come off, and a lot of cable ties have to be untied. That was about a four-hour effort just for that. The April Tags were also a smaller issue, but that’s a tale for another day.


So, all the pieces were in place. I downloaded new pieces of software to make it all work. There was software to operate a new camera (also another story to be told). There was software to recognize the April Tags. Then I found that the software I was using was abandoned years ago, and I had to search again to find something which was still being maintained. Then I had to create fairly accurate descriptions of where the camera was mounted on the robot, relative to the dead center of the robot, describe how the charging monitor needed to scale its values, create a relay circuit to get around that 1000 message queue problem, write code that took that charging sensor and made it part of the safety system of the robot, and also converted it to a message that other parts of the system could know that charging was happening, and then just give it a try.


And, of course, it all failed. Spectacularly. At first, it was all that communication problem from the network. Then it was a problem in that “where is the April Tag relative to the robot” problem where a forgotten piece of configuration data made the distances way off. Then it was a problem that the April Tags were physically too big, and the charging system physically obscured the tag so the camera couldn’t always see that tag as it approached the charger. Then it was another piece of configuration that contradicted the location of the charging station—the robot had to run into the wall a couple of times before I fixed that.


And then it worked.


Once.


Tomorrow I’ll try it for a second time. For now, I’ll revel in my accomplishment.

Dave Everett

unread,
Aug 1, 2026, 5:39:27 AM (4 days ago) Aug 1
to hbrob...@googlegroups.com
Good to see you have it working. I thought my scheme was too complicated, but now I see I'm in good company.

I built a box out of lasercut mdf with a stand for the charger. The charge voltage is on 2 springs stretched across charger box, positive on top and negative below. But normally there is no current flowing, one strip is grounded always, the other, via a relay is switched to one of the I/O pins on the charger nano. 

The charger has a single IR LED which flashes out a code.

The robot has a 3D printed curve piece on the back, on top and bottom are thin 0.5mm strips of aluminium that accept the charge when they touch the springs, but not when it's roaming, then the 2 strips are connected as a short via a relay.

When the robot wants to charge, it heads towards the location, then turns around with it's rear facing the charger. 2 IR receivers in the 3D printed part look for the IR code. The IR receivers are inside cutouts that restrict their view. This way if the robot is too far left it will only see the code on one receiver and vise-a-versa. When the robot can see the LED in both receivers it knows it is lined up enough and backs into the charger while a sonar checks the distance.

Once the charger detects the short from the robot charger strips, it changes the IR code to tell the robot to switch the battery terminals to the strips via the relay. The charger then also flips the relay to connect the charger voltage to the strips and off it  goes.

I was very concerned about something shorting the charger voltage or the robot battery in normal use, so that's why I cam e up with that convoluted method.

Dave

--
You received this message because you are subscribed to the Google Groups "HomeBrew Robotics Club" group.
To unsubscribe from this group and stop receiving emails from it, send an email to hbrobotics+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/hbrobotics/5703F41A-DB70-493B-BB4B-8273931E7F49%40gmail.com.

Chris Albertson

unread,
Aug 1, 2026, 1:27:55 PM (3 days ago) Aug 1
to hbrob...@googlegroups.com
I think today, the way to charge is wireless.    You place a coil on the floor, then drive over it.  Alignment is not super critical.    The smaller systems designed for cell phones can only do about 7 watts, but there are industrial wireless chargers designed just for robots.

My vacuum cleaner has an interesting design.   It does use a hard connection (not wireless), but the vacuum does not “remember” the charger’s location.  The charger has an IR LED and the vacuum will just make a beeline for the LED when it needs to charge.  I’ve tested this by moving the charger while the vacuum is working.  It finds it.   It will spin in place to find the LED and then sometimes make an “S-turn path on the way to the charger.”     This is simpler even than the description below.  I did not build it.

Another idea would be to design your robot to use an existing vacuum cleaner charger.   It would save some work.     But as said, I think wireless is the way to go.





Sergei Grichine

unread,
Aug 1, 2026, 1:51:46 PM (3 days ago) Aug 1
to hbrob...@googlegroups.com
I agree with the wireless point, but I'd guess that ~50 W  power (12v, ~5A) would require something like a split iron core transformer with quite precise positioning. And yes, 12x5=60 and high frequency makes it more efficient.

As for the contacts - I would never try a solution that just bumps contacts into each other. You need to slide them over or in between.

image.png

Your typical $20 60A A/C Disconnect box has a pretty good pair, you can see it live in Home Depot:

image.png


Best Regards,
-- Sergei


Michael Wimble

unread,
Aug 1, 2026, 1:54:32 PM (3 days ago) Aug 1
to hbrob...@googlegroups.com
I attended a talk given to my ham radio on wireless charging technology. They indicated they could build a charger for my robot at a cost of about $20, but, of course, they would not do it. They are still in startup mode. I’ve seen some coils on the Chinese cheap market sites, but I haven’t done the research yet to find the other hardware, especially safe hardware that deals with people dropping a steel hammer somewhere near the coil and ramping up the standing wave ratio. If anyone has pointers in how to build the charging components, I’d love to see simplified details. I have a minor in electronics, but that was from ’73, and my analog design skills are more than a bit rusty.

Given that my robot currently draws about 4 amps at 42 volts while charging, and the robot needs to patrol the house several times a day, and the 35v/30ah battery only seems to last maybe 3 or 4 hours while patrolling,I think I need something quite a bit bigger than 7 watts :-)

I’m familiar with the Neato vacuum charging system — that was a great solution for that space. My charger won’t change locations, but it will be several rooms away from the patrolling location when the robot senses that it’s time to head for the charger. I will probably also use the feature of the Nav2 Docking Server where you can define lots of “charger locations” and indicate that many (most) of them aren’t actually chargers. This will allow me to get some nice, precise poses for in front of the refrigerator, in front of the paper recycling bin, in front of the trash can, in front of the main entrance door, and so on. I’m going to steal the design intent from our last HBR talk where the robot looks at the position of the door lock levers to determine if the door was properly locked and add that to my patrol behavior tree.

I didn’t go with the Neato system because I thought the literature said that you need to enclose any electrical contacts that expose more than 12 volts. Apparently, I was wrong, and the voltage might be more like 50 volts. My quick survey gave a variety of responses, from 15 to 30 to 50 volts. I chose to err on the safe side and just decide that the charging voltage pins need to not be accessible except for, perhaps, a very curious child like I was. But casual contact is not possible. I could probably come up with a better mechanical system, and indeed, I may work on another 12 designs. My problem is that I’m not a mechanical engineer and would rather not even play one on TV. I’m limited by my mortality (so far), and I can’t keep having to become a subject matter expert on every damn thing on the robot.”

Thanks for the feedback.

Michael Wimble

unread,
Aug 1, 2026, 2:16:05 PM (3 days ago) Aug 1
to hbrob...@googlegroups.com
I’m proud to be in your company. I’ve decided I need to ensure the charger’s voltage must never be exposed in a way that an even modest probability of contact is possible. I probably don’t actually need to do that, of course, but it’s part of my whole “make the robot be safe, reliable, and trustworthy” design goals. It’s, admittedly, a star on the horizon, but at least the boat is heading in that direction.

A couple of my charging coupler designs added a plunger connected to a switch that powered on the charger only after mating happened, and I may go back to that, if only to eliminate the phantom power to the charging wall wart. I also had some designs with extra contacts, allowing a dance between the robot and the charger. Right now, I’m using a LIPO battery from a skateboard that I got at a bargain price a few years ago. The battery management system is all in the battery, so there isn’t much to any dance I might choreograph. But the next design might use a safer/better-in-every-way LiFePO4 battery with exposed wires for each cell or Bluetooth communication so I can perform a better dance. Then I might want some extra connections. I’m just not sure yet.

I like the flashing light thingy. I went with the April Tags because:
  • It gave me an excuse to use the OAKD Lite camera sitting on my shelf. I already have an OAKD camera sitting 4 feet above the robot body that looks downward towards the front of the robot to generate a point cloud and run a YOLO model. This new OAKD Lite gives me another forward-looking point cloud at a different angle, which I’ll add to the local cost map sensor collection. Of course, now the battery needs even more frequent charging.
  • By using the stock Docking Server from the nav stack, you specify a preliminary pose where the robot should move, and from there the expectation is you have some sort of detector to help make the final move. The April Tag can be seen from quite a distance away and provides pretty much millimeter accuracy for distance and similarly for angle. The docking code then does slow-speed navigation from the preliminary pose to complete docking, with configurable speeds and such. My 3D-printed coupling parts, while thick of plastic, still could be easily damaged by a 60-pound robot attempting rutting behavior at the right season.
  • I removed all relays from the current robot but am going to add them back in again. There will be an 8-relay block for low voltage/low current control and there will be a few solid-state relays with 30 Amp capability for emergency shutoff of the motors, battery, and charger circuits. But that’s another 4-hour teardown and the much harder task of finding some space for the relays and the nearly as hard task of untying cable ties which require monkey-sized hands to get at. I have chimp-sized hands which get scratched up every time I have to do this.

Thanks for the response.

On Aug 1, 2026, at 2:39 AM, Dave Everett <daveev...@gmail.com> wrote:

Chris Albertson

unread,
Aug 1, 2026, 2:29:23 PM (3 days ago) Aug 1
to hbrob...@googlegroups.com
They seem to use 1 MHz on the coil and they are air-core.

The power level is anything you are willing to pay for.    Tesla demoed one that can charge a car.   They are planning to use it for their robotaxi network.   Tesla did actualy prototype some robtic plug-in devices, but they were all unreliable in real-world use.  But they need 100+ KW. 

THere are two classes of systems.  some need 1 or 2 mm of alignment and have 90% effiscency others can do 20 to 50 mm alignment but are only 70 to 80%. 

It gets expensive.   A system that can transfer kW costs kilo-dollars.  Even so, these seem to be common for industrial robots


On Aug 1, 2026, at 10:51 AM, Sergei Grichine <vital...@gmail.com> wrote:

I agree with the wireless point, but I'd guess that ~50 W  power (12v, ~5A) would require something like a split iron core transformer with quite precise positioning. And yes, 12x5=60 and high frequency makes it more efficient.

As for the contacts - I would never try a solution that just bumps contacts into each other. You need to slide them over or in between.

<image.png>

Your typical $20 60A A/C Disconnect box has a pretty good pair, you can see it live in Home Depot:

Michael Wimble

unread,
Aug 1, 2026, 2:31:52 PM (3 days ago) Aug 1
to hbrob...@googlegroups.com
Here are two pictures of my sliding contacts. The wall-side contacts are held in a box with springs. When mating occurs, both sets of contacts have the leading edges ground down so there is a ramp where they meet, no abrupt contact. Then the wall-side contacts are slightly less than parallel, which, along with the springs that force the wall contacts to push against the robot contacts, causes a bit of contact wiping during each insertion and withdrawal, helping to keep the brass contacts conductive.

IMG_1142.jpeg
IMG_1143.jpeg

Dan

unread,
Aug 1, 2026, 2:38:05 PM (3 days ago) Aug 1
to hbrob...@googlegroups.com
Inductive Charging. It depends. For cell phones and toy vacuum cleaners, yes....But....

Doing the math for my humanoid in an industrial work setting:
  1. Energy rating is about 1.5 kWh. 
  2. Run time of about 2 hours.
  3. Charges per day ~8
  4. Cost $.45 per kWh ( 1.5 x .45 x 8) = $5.40 per day.
  5. Inductive charging loss vs wired. 25%
  6. Cost of Inductive charging per robot $1.35
  7. Factory situation of 20 robots $27.00 per day.
  8. 365 days * $27.00 = $9,855.00

These numbers are approximations but:
My design does not use wireless charging.

PS. I have a 2002 Rav4 EV with inductive charging J1773
It takes 33kWh to charge my 25kWh pack. That's an extra $3.6 bucks every 100 miles..

Daniel Albert


Chris Albertson

unread,
Aug 1, 2026, 3:03:01 PM (3 days ago) Aug 1
to hbrob...@googlegroups.com

About exposed power connectors, the “magic Google search word”  is “Class 2”.   The National Electric Code (NEC) defines what a class 2 ciruit is.    The big requirement is that the power source has a high impedance and very limited power.   If the exposed contacts were legal, it would take a year to charge the robot.


20W wireless charging is not expensive.  You can buy a charger for under $20.

It is safe.   There are two safety features
1) The coil only activates if the device needing a charge sends some data asking for power.   The phone or robot needs to specify the voltage and the maximum amount of current. A hammer dropped on the charger would not know how to ask the coil to activate.

2) There is a detection circuit that will shut the system down if a metal sheet happens to fall into the space after the power is activated. 

In practice, these things are very safe; phone chargers don’t activate if you place your car keys on the charger or if you place two chargers face to face

You can buy one here:






-- 
You received this message because you are subscribed to the Google Groups "HomeBrew Robotics Club" group.
To unsubscribe from this group and stop receiving emails from it, send an email to hbrobotics+...@googlegroups.com.

Devon

unread,
Aug 2, 2026, 4:02:26 PM (2 days ago) Aug 2
to HomeBrew Robotics Club
Chris mentioned Tesla demonstrating inductive charging for cars...

Plugless Power (plugless.com) has (had?) inductive car chargers that they have been selling for well over a decade.

From the website, it looks like they were bought in 2021 and intend to (vaporware) have solutions for a variety of use cases.
The FAQ on their website is informative.

From personal experience with my Nissan Leaf and Cell Phones...  Inductive charging is the more robust at the cost of lower efficiency.
One obvious example is the fact that the NEMA14-50 outlets now have two grades... EV and Residential... because the cheap ones
kept melting.  
Chris has clearly laid out the other safety aspects.

Dan

unread,
Aug 2, 2026, 5:32:50 PM (2 days ago) Aug 2
to hbrob...@googlegroups.com
I will reiterate in order to stress the danger of inductive charging.
This will tell you why the J1773 inductive paddle was abandoned.
DO THE MATH.
If you have a 10kW charging system. 
It wastes 20% or 2kW per hour.
Your robot is sitting on top of it holding the heat in.
2 kW is equal to 6,824.28 BTU per hour.
OUCH!
Your cell phone is not a robot. A robot battery pack is 10 - 20 times that if it expected to run for 2-4 hours.
Stop playing with fire....DO THE MATH

Vacuum cleaners get away with it because they charge slowly over night.
That's why they suck....or don't in the long run.



James H Phelan

unread,
Aug 3, 2026, 8:13:53 AM (yesterday) Aug 3
to hbrob...@googlegroups.com

Yet another criterion to add to safety, reliability and utility -- serviceability.

Why Stormy the Stingray uses thumbscrews instead of button head hex screws and the rover has a hinged top.

James H Phelan
"Nihil est sine ratione cur potius sit quam non sit"
Leibniz
--
You received this message because you are subscribed to the Google Groups "HomeBrew Robotics Club" group.
To unsubscribe from this group and stop receiving emails from it, send an email to hbrobotics+...@googlegroups.com.

Michael Wimble

unread,
Aug 3, 2026, 11:50:27 AM (yesterday) Aug 3
to hbrob...@googlegroups.com, hbrob...@googlegroups.com
That’s a great idea for a discussion on a new thread

On Aug 3, 2026, at 5:13 AM, 'James H Phelan' via HomeBrew Robotics Club <hbrob...@googlegroups.com> wrote:



Devon

unread,
Aug 3, 2026, 8:30:10 PM (yesterday) Aug 3
to HomeBrew Robotics Club
The inductive paddle was not abandoned due to danger or heat.  It simply didn't gain market acceptance.  (Probably mostly due to cost)

The 20+% of inefficiency of inductive charging does not all result in heat on the robot side, and even if it did, it could be handled safely.  So thank
you for bringing heat dissipation to the discussion.

Tesla's are safely inductive charged by a commercial product, so clearly it's feasible to use inductive charging on large energy storage 
capacities.

Keep in mind, we want to share ideas, and offer alternatives.  All the choices we make are a trade-off.  Let's help with more ideas and pain
points to watch out for.  Sharing existing known and working solutions often helps us understand feasibility.
Reply all
Reply to author
Forward
0 new messages