Robots are a perfect example of how electronics can perform mechanical work with precision and accuracy. In recent decades, the scope and definition of robots has extended away from the realms of mechanical tasks. Now, robots are imagined to automate everything possible, including communication and intelligence. One cause behind this is an attempt to replicate human capabilities in everyone. The result of the same effort are humanoid robots.
Humanoid robots are robots built to resemble a human body. These robots have human-like construction and replicate similar kinematic movements and kinetic capabilities. Often humanoids are designed as autonomous robots. Many humanoid robots are remotely controlled or pre-programmed. Just like dancing, humanoid robots are often pre-programmed to display specific dance sequences. Developments in the area of humanoid robots mainly focus on two aspects – one is imitating human movement and the second is imitating human interaction.
In this article, we will discuss humanoid robots and explore some open source humanoid projects that enthusiasts and electronics engineers can try out or start as a starting point. The open source humanoid projects discussed in this article use 3D printed parts, so a 3D printer would be required to start any of the mentioned projects. Even a budget 3D printer operating with Cura or another open source 3D slicer will suffice. The projects utilize the same microcontroller or microcomputer platforms that are used in hobby/embedded projects.
What is a robot?
The term robot originated from the Czech word 'robota' which means slave or mechanical item that would help its master. A robot is an automatic device that performs functions normally assigned to humans. The concept of robotics actually evolved from CNC machines. Still, a robot is very different from an automated numerically controlled (NC) machine. The difference lies in the robot's sensory capabilities. A robot is a software-controlled mechanical device that uses sensors to guide one or more end effectors through programmed movements in a workplace in order to manipulate physical objects. Unlike automated machines, robots are reprogrammable and rely extensively on sensing their environment. A typical robot workflow essentially includes sensing, decision-making, and performance. A big difference between robots and CNC machines is that robots are designed to be autonomous machines. This definition fits perfectly at least for what we call industrial robots.
What is a humanoid robot?
Currently, humanoid robots do not have an exact definition. Often, robots that have a human-like structure or robots that imitate human interaction are called humanoid robots. However, robots that have a human face and are designed to imitate human interaction are a completely different field of robotics, more focused on natural language processing (NLP) and artificial intelligence (AI) rather than typical mechanical robotics. It would be better to classify humanoid robots as those robots that are similar to humans and built to imitate human kinematics and movement. A humanoid robot is typically designed to imitate walking, jumping, holding, picking up and placing objects, as well as imitating human gestures.
Applications of humanoid robot
Currently, humanoid robotics is a field of research. This is a challenging and evolving area of robotics. Unlike industrial robots, you may not find humanoid robots deployed in industrial or consumer applications. Humanoid robots are under development as military or engineering projects.
There are two major challenges in humanoid robotics. One of them is to imitate the flexibility and dynamics of human muscles. Human muscles are a complex network of interconnected tissues that stimulate and produce movement very efficiently. Current humanoid robotics rely on servos to imitate similar movements. Obviously, servos have their own limitations as motors and cannot produce exactly the dynamics that muscles stimulate. Human muscles also have a defining role in maintaining balance and body posture. Obviously, servos alone have nothing to do with balancing. In humanoid robots, balance is maintained by mechanical design, positioning, and servo operation. Second, human movement is guided by vision and highly capable auditory senses. Developing similar capabilities with cameras and microphones is a complicated task.
Although currently humanoid robots do not have an industrial or consumer presence. Humanoids are part of robotics and are often tested as walking robots or dancing robot projects. You can find humanoid robots as toys, household robots or restaurant robots. Some active applications of humanoid robotics can be found in the area of orthotics and prosthetics. Once humanoid robotics passes a milestone, we may find humanoids replacing humans in all types of jobs, especially those that pose a danger to human life. You can find humanoid robots performing household tasks, operating as factory workers, as divers, or as astronauts on a distant space mission without the need for an oxygen tank.
Open source humanoid projects
Humanoid robotics is a challenging field. Knowledge of electronics, mechanical engineering, physics, and software programming is required to design and manufacture a humanoid robot. A major challenge in taking this initiative would be choosing a starting point. In theory, making a humanoid robot could be a difficult task. Fortunately, there are some open source humanoid robot projects that are worth trying. These projects can be a starting point in your robotics adventure or serve as standalone projects. The good thing about these projects is that you don't have to design robots from scratch. You get 3D models for robot parts that can be 3D printed and assembled according to the guides provided. This way, you can focus on programming the embedded platform to implement maximum kinematics or solve new dynamics problems.
Let us now discuss some of the open source initiatives in humanoid robotics.
InMoov humanoid robot project

InMoov Open Source 3D Printed Humanoid Robot Example
InMoov is a personal initiative by French sculptor and designer Gael Langevin. It started as an open source project in 2012 for prosthetic hands, leading to projects like Bionics, E-Nable, and others. Currently, InMoov is a complete humanoid project like a 3D printed life-size robot. All mechanical parts of the robot can be produced from a home 3D printer with a print size of at least 120x120x120mm.
The humanoid robot has a 6 DOF head, 2 DOF torso, 5 DOF arms, 16 DOF hands, and non-motorized legs. This humanoid is capable of independent head and eye movements. Making this humanoid requires 2 Arduino Mega/Arduino UNO, 2 nerve board shields and 28 servos. It uses two cameras for face/object tracking, two speakers for speech, 1 Kinect sensor for 3D depth and gesture recognition, and a PIR sensor for presence detection. All of the robot's fingers are motorized.
You can build this humanoid step by step, starting from the fingers and progressing through the hand and forearm, biceps, shoulder and torso, back, head, neck and jaw, eyes, upper stomach, middle stomach, lower stomach, and, then finally the non-motorized legs.
If the parts are 3D printed at home and the nervous board is prepared by yourself, the project may not cost too much. The SLT files for the 3D printed parts can be found in the inmoov.fr gallery. Building a complete humanoid requires printing about 57 different parts. Many 3D models for InMoov are also contributed to ThingiVerse. Electronic components and their circuit connections are provided in the hardware map and BOM section. InMoov can be programmed using MyRobotLab. However, no one is stopping at having their own custom Arduino programming using InMoov parts and servo logic.
The best thing about this humanoid design is that it is divided into segments according to specific human parts like fingers, hands and arms, heads, etc. So you can make specific parts of this life-sized humanoid as per your budget and progression. This also allows you to play with the kinematics of specific parts independently.
Explore this humanoid project at inmoov.fr.
Gael Langevin's YouTube channel has some exciting videos of InMoov, the life-size humanoid robot.
Poppy humanoid project

Poppy Open Source 3D Printed Humanoid Robot Example
Poppy is another open source 3D printed humanoid robot. The project began in 2012 in the Flores laboratory at Inria Bordeaux Sud-Ouest. It all started during Matthieu Lapeyre's doctorate. Thesis supervised by Pierre-Yves Oudeyer. It was initially funded by the ERC Grant Explorer. It is now run by Poppy Station, a non-profit organization that promotes Robotics and Artificial Intelligence. This is a community-driven project with shareable hardware, software, and web tools. In fact, the project includes three robots – humanoid Poppy, torso Poppy, Poppy Ergo Junior, Poppy Heol, Poppyrate and right arm Poppy. The project is freely available under open source licenses. However, the use of the name 'Poppy' is restricted and protected as an international trademark.
All parts of the robot are 3D printed. STL files for 3D printed parts of this humanoid are available on Github. This humanoid can be constructed in three parts: bipedal legs, torso and head. The complete humanoid model requires 25 servos. The project uses modular smart actuators called Robotis Dynamixel. Poppy is a 25 DOF humanoid with a fully powered spine. The robot can be programmed to walk, interact, dance and perform artistic performances.
The Poppy Humanoid can be built on a Raspberry Pi 3/4 or an Odroid board. The easiest way to set up the Poppy Humanoid software is to install the ready-made Poppy operating system on an SD card. The ready-to-use operating system is available on Github. Software tools for Poppy include Pypot, a Python library for controlling Poppy robots, robot-specific repositories, a robot simulator, and a web control interface. Poppy Humanoid can be programmed using scratch, Python and Robot Operating System (ROS). The humanoid can also be controlled using Robot APIs. A simulated version of Poppy can be tested using two simulator software – CoppeliaSim (previously called V-REP), a virtual robot experimentation platform, and a 3D web viewer, a lightweight simulator without physical support. To control a simulated Poppy robot, you need Python 3.5 or higher, PyPot library, and Poppy Humanoid-specific Python libraries installed on your computer system.

Poppy robot simulator example
Explore more about Poppy Humanoid at poppy-project.org.
You can find some exciting videos of Poppy Humanoid and other Poppy robots on the Poppy Project YouTube channel.
RoboPrime humanoid project

RoboPrime Open Source 3D Printed Humanoid Robot Example
If you are interested in building a relatively small humanoid robot on a budget of $60 to $100, RoboPrime is an open source 3D printed humanoid robot licensed under GPL 3.0. RoboPrime is an initiative by Simone Primarosa. This is a 21 DOF humanoid built on ATmega328P. The project was developed by Simone as a high school project. The author built the robot on the Arduino Pro Micro, however, any Arduino with sufficient GPIO can be used on site. The complete humanoid requires 21 MG90S 9G servo motors. Additionally, it uses HC-05 for Bluetooth, MPU-6050 for acceleration and gyroscope, and 74HC4017 decade counter.
All parts used to assemble this humanoid are 3D printed. The STL files of the 3D printed parts are available on the project's Github page. The circuit diagram and firmware are also available at the same link. RoboPrime is great for starting a humanoid project from scratch with a minimal budget. It would be fun to modify the firmware for this project to play with different kinematics. The firmware already includes code for walking, sitting and greeting.
This low-cost humanoid project could be a good start. This project lets you get your hands dirty with low-level C code. This can be a difficult path, but with a lot of learning. This couldn't be a better opportunity to understand the physics and programming of humanoid robotics, implementing theory into practice.
The only downside of this open source humanoid project is that its documentation is only available in Italian. Still, you have the firmware and complete source code at your disposal. You can examine the source code to demystify how the code and the humanoid robot works. Once you've decoded the source code, you can find help in code repositories from other humanoid projects to make RoboPrime dance in your own sequences. You are free to make more contributions to the project on Github and improve this more affordable and accessible humanoid robot.
Please note that this humanoid project is not actively maintained, so you may need a lot of tweaking and playing around. Still, the project is a functional humanoid robot that can be improved and modified.
Explore more about RoboPrime on Github.