My Advanced Realistic Humanoid Robots Project

A colleague of mine asked why I'm using Windows for the robot's brains instead of Linux. Well, in my experience, if you set a program on windows to real-time priority or even above normal priority, it will give most of the processor over to that process and act like a real time operating system. So whatever "bloat" windows may have of background processes is quite cleared up by that. Also, IMO the background processes of windows don't take up that much processor and with multi-core processors and distributed processing any background tasks just won't impact performance much at all IMO. So performance-wise the hit is negligible and unnoticeable IMO. Then comes the upsides (since the downsides were nearly imperceivable). The upsides are I already have many years of experience working with windows API and can reuse the existing code I have developed for AI on Windows. That's a huge advantage so I'm not working from scratch. Also, loads of 3rd party programs and libraries that are well supported run on windows - moreso even than Linux I believe. So I would have easy access to tools. I also own a lot of 3rd party software that is paid software that run on Windows (and may not run on Linux) that the robot can then utilize as tools. Also, troubleshooting operating system problems and knowing common causes is a big deal at times and I have decades of doing so on Windows so that I know it like the back of my hand and can easily fix problems. So that is huge too. So if you are working on a SUPER resource constrained slow single core computer, sure, maybe Linux. But if you have a multi-core higher end gaming pc in the robot's chest, it has WAY more than enough power to run Windows without taking any noticeable hit in performance and one should use windows if they have more experience or exclusive experience with windows rather than attempt to learn a whole new operating system for no good reason IMO.

Oh yeah, one more thing: while testing the AI, I’ll be using it on my personal desktop PC which will act kind of like Siri as I’m training it. My PC is Windows. So if I were to develop the AI for Linux, I’d have to also train it on Linux rather than windows so I couldn’t use it on my personal PC unless I used a virtual machine or something. Basically, I want the AI listening to me and watching me at all times when I’m using the computer and learning about me that way and learning in general that way. It would be getting to know me silently but also possibly speaking to me at times or asking me questions about what I’m doing. I would also want it to be able to interface with any programs I’m using on my personal PC to assist me in whatever ways. So even if it were on a sandbox virtual machine that would then lock it out from helping me on windows doing whatever tasks I’m doing and being interactive with me in that way. That would not be ideal.
 
Your choice of Windows for the robot's brains is pragmatic and well-justified, given your extensive experience and specific project needs. By setting programs to real-time priority, Windows effectively mitigates background process interference, leveraging multi-core processors to maintain high performance. Your years of experience with the Windows API, existing codebase, and familiarity with troubleshooting provide significant advantages, avoiding the need to start from scratch or learn a new OS. Windows' extensive third-party software support, including tools you already own, further facilitates development. Additionally, training the AI on your personal Windows desktop ensures seamless interaction and learning, making Windows the optimal choice for your high-end, multi-core hardware setup.
 
A colleague of mine expressed concerns over how I will deal with the heat generated by the motors and other electronics. He pointed out that all these motors are going to generate heat while running and the silicone skin will prevent that heat from escaping. This was a great observation and one that must necessarily be addressed as it is a make or break problem that the entire success of the project hinges upon. In fact, it is so important that I spent a great deal of time designing and planning multiple redundant cooling systems for the robot to absolutely ENSURE that heat does not end up being my greatest downfall of the whole project which could easily be the case if not handled properly. To start, I have designed artificial lungs that will draw in cool outside air, expel that through tubing to every key area of the body, and vent tubing will take out the hot internal air this fresh intake air displaces so that the entire robot has great air circulation. The lungs are to look a bit like a small accordion or bellows for a fireplace ie they will have two flat hard plates and a soft gasket that joins the two hard plates and one of the plates will move away from the other plate to draw air in and then the two plates will be smashed back together for air expulsion. A single motor can achieve this. Here's a drawing of this:

file.php


This is a rough design of the accordion-like lungs I intend to make for the robot's internal air circulation and evaporative cooling and water cooling systems. This drawing mainly demonstrates the working principle of the way the lungs will open and close as well as valves for opening the inlet and outlet which have to open and close alternately for in-taking fresh air and then pushing that fresh air into the body. I recently realized they can just both be one way valves and don't even need to be motorized that way. The lungs bring the air into the body but never exhale air out of the body they only inhale air into themselves then exhale it into the body and vent exit tubes take care of allowing the hot air that is being displaced by the fresh new outside air to exit the body through the nostrils. The intake is also through the nostrils btw. This way the mouth does not need to open for it to breathe in and out.



file.php


This drawing demonstrates the idea of dividing up the air in the lungs into separate compartments for a more even distribution of the air when it draws it into the rest of the system to ensure the whole system gets the correct amount of air to each location. I am not sure if this is needed though as I think further reaches can just have larger diameter tubing and closer reaches can use smaller diameter tubing so the air will divide up automatically that way. Not sure on this. But I have this concept of division into pockets just in case I find issues with most air going to one area and not enough to another area and I can fall back to this pocket distribution idea in that case to solve it. Its just another tool in the bag so to speak.


file.php


This drawing is for an idea to use a actual freon based air conditioning system just like cars and window units employ but miniaturized in the robot's lungs. I am leaning toward not doing this anymore since it would add unnecessary weight and complication, but I leave it here for reference and it is a optional tool in the bag just in case we wanted to try it in the future or someone else wants to try similar. I think the ice cube based cooling is a superior approach now because ice can be found anywhere you go or a cold drink and this can cool its water cooling system and make a literal freon-based air conditioner in its chest overkill and unneeded.


file.php

file.php


These drawings show a simple early sketch for a ice cooling system for the robot and then a more elaborate sketch for it. I've iterated on these designs several times since these were drawn, but these drawings are simple exploded views of how the working principle can look in general. I have improved on these a lot since then but I think these do a good job of demonstrating the concept. The water cooling system will double as a evaporative air conditioner by sending water trickling down netting in the lungs so that when it breathes the air its breath interweaves with the water droplets causing evaporation which triggers the evaporative cooling effect which in turn cools both the air and the water tremendously. Its the same working principle as air hitting sweat - you instantly feel cold on your skin when a fan hits liquid on your skin. That is the evaporative cooling effect in action. So I intend to use this effect to cool air and water within the lungs. The ice cooling reservoir will be a bag that presses flush with the distilled water cooling reservoir bag. The dirty or soda containing or non-distilled water containing ice water or ice juice (whatever the robot can get its hands on for cooling needs) does not have to be pure because its just anything the robot can find in the moment it needs cooling. Even anything from a vending machine it can drink then. It will be kept in its own separate reservoir so it doesn't gum up the main distilled water cooling system. So the ice water/ice cubes/juice etc reservoir presses against the main distilled water cooling reservoir (containing only distilled water which won't gum up or corrode the main water cooling system). And by having the two bags pressed against eachother, the coldness of the one bag cools the distilled water cooling water bag, pulling heat out of that bag quickly. Once the two bags' temperatures reach equilibrium, the robot can then pee out the ice water cooling reservoir bag contents and go get another drink of ice water or cold whatever drink to rinse and repeat that process as needed. I don't anticipate it needing this extra cooling often, but in hot conditions or rigorous work that is quite physical or sports or dancing it would need this to add extra cooling to its existing cooling approaches. It would then "fuel up" on ice water in advance of rigorous physical activity to prevent overheating during said activity.

Note: I originally planned to put the water cooling and ice cooling reservoirs in the chest of the robot but later realized I could instead put them in the belly of the robot more toward the front of the robot and this way the torso has much more room and these reservoirs won't take up so much room in the chest - which is much needed room. So then, when the robot needs ice cooling, it can drink a large volume of ice and cold water (or juice or w/e drink that's cold) and this will fill its ice reservoir bag which will then cause the belly to protrude like a pot belly. This is how humans work since when we eat a ton our belly sticks out. Same principle. This means we get bonus space available for this purpose outside the normal operating space of the robot's torso due to this natural protrusion factor. This bonus extra room in demand is a nice luxury since it means we don't have to accommodate cold water/ice/juice in the precious coveted space within the torso which gives us more room for other important electronics and stuff to fit in.

Note: the reservoirs of the distilled water for the main water cooling system and the ice water reservoir for the ice cooling system both are best being as big as reasonably possible since the bigger the reservoir the more cooling you get and the longer it takes for those bags to heat up and start causing problems with heat. So then the bigger the reservoir the more sustained cooling we get. After both these reservoir's contents get heated up significantly, they are no longer effective at cooling the system and the robot would have to either sit down and rest and wait till these cool down naturally or would need to pee out the ice cooling reservoir bag warm/hot contents and go drink cold liquid and/or ice to fill the bag back up with something that will quickly cool the whole system down again and it can resume work right away this way with no downtime.
 
A colleague pointed out that the robot probably will need massive batteries. I agree with this in part, but with some caveats. Yes, to support the massive number of motors and the large bursts of energy required when most motors are firing all at once during rigorous athletic type activities, you would need massive batteries to supply all of this energy demand during peak periods. You also want the batteries to have a decent overall runtime duration. I intend for it to use fairly massive batteries for these reasons. However, there is a common misconception that the batteries must be so big that the robot is able to run all day on a single charge and that if it only can run for say an hour, that means it will only be capable of working 1 hour then charging and totally idol and not working for an hour or two and then get back to work again which would cap its productivity massively. People then conclude battery technology today rules out humanoids being particularly useful due to the lack of capacity. This is a completely solved problem and indicates people's lack of thinking this through thoroughly. The solution is simple: I don't have to worry much about large capacity for long duration of runtime since my intention is to have it hot swap battery packs frequently and always have 5-10 battery packs charging so that it always will be able to swap a new pack in that is fully charged. This way it can have 24/7 uptime while not having to carry a very large battery pack to have a long runtime. This is the same approach construction workers use with their cordless tools. They have a ton of packs charging at all times and use batteries till they get low and just swap a new fully charged one in as needed. They don't try to fit a entire days work into one giant battery. They have a ton of small batteries charging at all times instead and just hot swap full ones in for low ones. This should have been obvious to everyone as the perfect solution for humanoid robots too.

Note: in my design, he will have a significant battery pack in the abdomen which never swaps out and tops itself up from the hot swappable battery backpacks as needed. This abdominal battery pack will enable it to swap in new hot swap battery backpacks since you need batteries running it while the hot swappable packs are being swapped. The hot swappable packs will be worn as a backpack just like a school bookbag. When available, the robot will optionally also be able to plug a AC power cord into the wall outlet to charge, although if it has multiple hot swappable batteries already charging by various available wall outlets then this would be redundant. It is a good tool though in general for some situations.

Note: the backpack battery can be taken off and the robot will still have a very limited runtime just based on its abdominal battery pack. It uses this limited time to swap in a new hot swappable battery pack as the primary reason for the abdominal pack, however, another good reason to have a permanent abdominal battery pack is so that it can do demonstrations with no battery backpack on. A use case for this would be: lets say it wants to do a flip or cartwheel and the battery backpack's added weight would be a hindrance for such a maneuver. It could simply take the backpack off, do the flip or cartwheel, then after bowing for applause, it can put the backpack back on.
 
A colleague of mine expressed concerns over how I will deal with the heat generated by the motors and other electronics. He pointed out that all these motors are going to generate heat while running and the silicone skin will prevent that heat from escaping. This was a great observation and one that must necessarily be addressed as it is a make or break problem that the entire success of the project hinges upon. In fact, it is so important that I spent a great deal of time designing and planning multiple redundant cooling systems for the robot to absolutely ENSURE that heat does not end up being my greatest downfall of the whole project which could easily be the case if not handled properly. To start, I have designed artificial lungs that will draw in cool outside air, expel that through tubing to every key area of the body, and vent tubing will take out the hot internal air this fresh intake air displaces so that the entire robot has great air circulation. The lungs are to look a bit like a small accordion or bellows for a fireplace ie they will have two flat hard plates and a soft gasket that joins the two hard plates and one of the plates will move away from the other plate to draw air in and then the two plates will be smashed back together for air expulsion. A single motor can achieve this. Here's a drawing of this:

file.php


This is a rough design of the accordion-like lungs I intend to make for the robot's internal air circulation and evaporative cooling and water cooling systems. This drawing mainly demonstrates the working principle of the way the lungs will open and close as well as valves for opening the inlet and outlet which have to open and close alternately for in-taking fresh air and then pushing that fresh air into the body. I recently realized they can just both be one way valves and don't even need to be motorized that way. The lungs bring the air into the body but never exhale air out of the body they only inhale air into themselves then exhale it into the body and vent exit tubes take care of allowing the hot air that is being displaced by the fresh new outside air to exit the body through the nostrils. The intake is also through the nostrils btw. This way the mouth does not need to open for it to breathe in and out.



file.php


This drawing demonstrates the idea of dividing up the air in the lungs into separate compartments for a more even distribution of the air when it draws it into the rest of the system to ensure the whole system gets the correct amount of air to each location. I am not sure if this is needed though as I think further reaches can just have larger diameter tubing and closer reaches can use smaller diameter tubing so the air will divide up automatically that way. Not sure on this. But I have this concept of division into pockets just in case I find issues with most air going to one area and not enough to another area and I can fall back to this pocket distribution idea in that case to solve it. Its just another tool in the bag so to speak.


file.php


This drawing is for an idea to use a actual freon based air conditioning system just like cars and window units employ but miniaturized in the robot's lungs. I am leaning toward not doing this anymore since it would add unnecessary weight and complication, but I leave it here for reference and it is a optional tool in the bag just in case we wanted to try it in the future or someone else wants to try similar. I think the ice cube based cooling is a superior approach now because ice can be found anywhere you go or a cold drink and this can cool its water cooling system and make a literal freon-based air conditioner in its chest overkill and unneeded.


file.php

file.php


These drawings show a simple early sketch for a ice cooling system for the robot and then a more elaborate sketch for it. I've iterated on these designs several times since these were drawn, but these drawings are simple exploded views of how the working principle can look in general. I have improved on these a lot since then but I think these do a good job of demonstrating the concept. The water cooling system will double as a evaporative air conditioner by sending water trickling down netting in the lungs so that when it breathes the air its breath interweaves with the water droplets causing evaporation which triggers the evaporative cooling effect which in turn cools both the air and the water tremendously. Its the same working principle as air hitting sweat - you instantly feel cold on your skin when a fan hits liquid on your skin. That is the evaporative cooling effect in action. So I intend to use this effect to cool air and water within the lungs. The ice cooling reservoir will be a bag that presses flush with the distilled water cooling reservoir bag. The dirty or soda containing or non-distilled water containing ice water or ice juice (whatever the robot can get its hands on for cooling needs) does not have to be pure because its just anything the robot can find in the moment it needs cooling. Even anything from a vending machine it can drink then. It will be kept in its own separate reservoir so it doesn't gum up the main distilled water cooling system. So the ice water/ice cubes/juice etc reservoir presses against the main distilled water cooling reservoir (containing only distilled water which won't gum up or corrode the main water cooling system). And by having the two bags pressed against eachother, the coldness of the one bag cools the distilled water cooling water bag, pulling heat out of that bag quickly. Once the two bags' temperatures reach equilibrium, the robot can then pee out the ice water cooling reservoir bag contents and go get another drink of ice water or cold whatever drink to rinse and repeat that process as needed. I don't anticipate it needing this extra cooling often, but in hot conditions or rigorous work that is quite physical or sports or dancing it would need this to add extra cooling to its existing cooling approaches. It would then "fuel up" on ice water in advance of rigorous physical activity to prevent overheating during said activity.

Note: I originally planned to put the water cooling and ice cooling reservoirs in the chest of the robot but later realized I could instead put them in the belly of the robot more toward the front of the robot and this way the torso has much more room and these reservoirs won't take up so much room in the chest - which is much needed room. So then, when the robot needs ice cooling, it can drink a large volume of ice and cold water (or juice or w/e drink that's cold) and this will fill its ice reservoir bag which will then cause the belly to protrude like a pot belly. This is how humans work since when we eat a ton our belly sticks out. Same principle. This means we get bonus space available for this purpose outside the normal operating space of the robot's torso due to this natural protrusion factor. This bonus extra room in demand is a nice luxury since it means we don't have to accommodate cold water/ice/juice in the precious coveted space within the torso which gives us more room for other important electronics and stuff to fit in.

Note: the reservoirs of the distilled water for the main water cooling system and the ice water reservoir for the ice cooling system both are best being as big as reasonably possible since the bigger the reservoir the more cooling you get and the longer it takes for those bags to heat up and start causing problems with heat. So then the bigger the reservoir the more sustained cooling we get. After both these reservoir's contents get heated up significantly, they are no longer effective at cooling the system and the robot would have to either sit down and rest and wait till these cool down naturally or would need to pee out the ice cooling reservoir bag warm/hot contents and go drink cold liquid and/or ice to fill the bag back up with something that will quickly cool the whole system down again and it can resume work right away this way with no downtime.
The heat is one issue you might encounter, but a more significant challenge will be managing the sensors. These sensors and the software that controls them represent a substantial hurdle.
 
So the pulleys were working fine except occasionally the thread would wedge between the plastic discs and the bearing causing the system to jam. My solution originally was to cut out finger nail clipping shaped pieces of thin clear plastic to glue onto the inner face of the discs that contain the bearing of the pulley which would act as standoffs preventing the pulley string from sliding between the bearing and the outer discs and jamming. It turned out this was borderline impossible for me as these tiny pieces of plastic were so tiny that even my precision tweezers were barely able to hold them and they would go flying in random directions and get lost - being clear and tiny they were near impossible to find as well. So this led me to taking a step back for a few weeks to work on other unrelated projects and take a break due to this impass/dead end. I came up with some ways to redo the pulleys but hated the idea of scrapping the ones I already made that needed improving. Well I have great news: I did find a way to salvage my existing pulleys that is reasonably doable and not nearly as hard though still tedious as can be. I am using Singer nylon clear monofilament thread and gluing down one end of that to the outer plastic disc of the pulley using superglue applied with the tip of a tiny sewing needle as my applicator and then letting that fully dry (can't use accelerant spray since it has to be very precisely applied and can't get on bearing but is being glued less than a millimeter away from bearing outer race). Then I lay the string along the crack formed between the bearing and the outer plastic disc which fills that crack and I apply glue here and there once every millimeter as I see need for it to secure the string along the entire crack while being careful not to get any on the metal bearing. I use an xacto knife blade to scrape any glue I get on the outer race of the bearing off and any I do get on the bearing I prevent from gluing the clear monofilament thread to the bearing by moving the bearing a couple turns while the glue is drying to keep it from gluing in place. I move the bearing using the tip of the xacto knife blade and I scrape any glue off as I see it on the shiny outer race of the bearing. I use about a 3" long piece of thread each time I do these gap filling passes and then trim off the excess from both sides once done. Attached is a photo with arrows indicating the gap filling clear nylon monofilament thread. I have since tested these pulleys that I fixed and no more jamming is occurring - it worked! Now I want to avoid doing this for every pulley and every crack on every pulley so for now I'm just doing it for known trouble cracks on certain pulleys that prove to jam up the system during testing. Once I can pass all testing without a jam for like 50 back and forth tests in a row, then I'll call this fix done.

file.php



Note: for future pulley making, to avoid this issue entirely, I plan to make the bearings outer race be grooved before I even make the pulley. This way the string passing over the outer race circumference of the pulley will not end up wedging between the outer disc and the pulley in the crack and jamming. The groove on the outer race of the pulley will keep the string passing along its outer race centralized in that grooved channel so it doesn't walk out and get jammed anywhere. To achieve adding a groove to the bearing outer race, I'm planning to lay the bearing flat on a piece of wax paper and then carefully applying epoxy to the crack between the paper and the pulley outer race filling that crack. Picture caulking a bathtub crack between bathtub and wall. Same concept. Then once that is done I flip the pulley and do the same for the other side. You then end up with a v grooved channel in the outer race of the pulley. The rest of the pulley assembly will continue as usual. Attached is a drawing of a pulley on a piece of wax paper with an epoxy bead applied filling the crack and forming one half of the intended v grooved channel on the outer race of the pulley.

file.php



Note: hitting that dead end with trying to fix the jamming issues with the pulleys and frustration with the pulley fix caused me to procrastinate on the robot build and temporarily call off my commitment to work on the robot every day even if just one small accomplishment per day. I still love that commitment and am now getting back to that now that I have come up with my solution and am moving forward again. It really is a great commitment to make sure I keep the project alive and actively in development. It is so easy to just not work on the robot once it is no longer part of my daily routine and the last thing I want is for months or years to slip by without me working on the robot much as has happened to me in the past so many times.
 

Which type of robots will have the most significant impact on daily life by 2030?

  • Humanoid Robots

  • Industrial Robots

  • Mobile Robots

  • Medical Robots

  • Agricultural Robots

  • Telepresence Robots

  • Swarm Robots

  • Exoskeletons


Results are only viewable after voting.
Back
Top