With the release of great software like ROS2, great hardware like the Raspberry Pi 5, the Arduino Nano, cheap Li-ion batteries, and wireless charging we are all very close to having the futuristic robotic companion that science fiction has promised.
What is missing despite some fantastic efforts like
James Bruton's Open Dog V3, we still lack a cheap and efficient mechanism to connect all the parts.
James and others have worked on using gearmotors to directly replace each muscle and that is amazing but expensive, heavy, and limits design choices.
I think a better method would be to use a single motor to power a hydraulic pump which would pressurize a tank. The tank would connect to valve bodies that have pairs of valves for each "muscle" sized proportional to how fast the muscle needs to move. The valves connect through hoses to each side of a double-acting piston which then connect to a double-acting elastic coupling and possibly a shock absorber to connect to the tendon that controls the joint. There needs to be position sensors on both the joint and piston positions. The piston sensor would allow the computer to learn to guess at a rough piston position before relying on feedback to fine-tune the movement.
To control a joint, the controller senses the angle of the joint, compares that angle to where the software thinks it should be then flips the valve to move the piston to apply the correct amount of tension on the elastic coupling to move the joint to the correct angle.
This allows one motor to power all the "muscles" and allows all joints to be "soft" and only require power during movement or correction and not while standing still. It does double the number of position sensors necessary, but they are cheaper than motors. Also, pistons and sensors can be made very small, so you could have one for each tiny joint like in toes or facial movement and the strength of each would be limited by the elastic coupling.
It may be possible to replace the hydraulic fluid and the elastic coupling with air or other compressible gas as a control fluid, but I think it would be less efficient and controllable as the air could move too quickly whereas the hydraulic oil movement speed could be designed in by tube size and pressures used.