Fred InMoov

Fred InMoov is built using two Raspberry Pi 3 with a planned third one to be installed.

Servo Control is done using a PCA9685 Servo Driver in the form of a raspberry Pi Hat from Adafruit Industries located on the top of top moths RPi named Fred_1, This is then conneted to 3 other PCA9685 Servo Driver as stand alone boards, one located on the back, and one in each bicep.

Located in each forearm is a ADS1115_16B_4CH_I2C_ADC again from adafruit industries. This allows for 4 of the 5 finger pressure sensors to be monitored.

Heavy power cabels are run from a central power switch bank to each of the servo driver boards to avoid voltage drop, and thus draw more current by the servos resulting in motor burn out.

Currently, the Raspberry Pi's are communicating with each other using WiFi.

Here is where the first of the problems are, in order to allow internet access, the units are connected to the house router, where they are provided with an IP Address as well as access to the net.

When the router goes down or Fred is out of range of the Router, the links between the Rasbperry Pi's fails as well.

When using speed control of the servo's connected to the PCA9685 drivers, MRL is haing to do a lot more work so slows down the processor.

For this reason, the master controller will need to be separate from both the video processing as wel as the servo control.

Just a bit of a warning with regards to Servos.

In HairyGael's BOM section on servos and other compatible servos, for the smaller servos, about halfway down the list in order of his preference is the MG996R.
Gael lists this as a 180degree rotation 12Kg servo that sometimes burns out.
I would also add to that, on power up it turns about 20 degrees counter clock wise in an uncontrolled manor.  This was for a chinese brand "Towar dpro".
This could be a problem if you are at the limit of your robots movement when the power is applied as it may rotate beyond your robots limit if it isn't at the servos limit.

During the exstraction of a micro SD card from a Raspberry Pi3 in the head of Fred, one of the ears fell onto the power switch for the head servos turning it on, the resulting movement of the neck rotation servo resulted in a broken micro SD card and a loss of many hours of programing work.  I strongly reccomend disconnecting the battery before you work on your robot for this reason along with a number of other reasons including accidental short circuits which can melt your wiring.

The JX 6221MG does not suffer from the same problem, and is rated higher at 20Kg.

More information to follow.


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
GroG's picture

Great build ... I like the

Great build ... I like the Raspi distributed pattern with I2C !

Your Avatar is looking good too ! :D

Ray.Edgley's picture

Thanks Grog, Its a photo of

Thanks Grog,

Its a photo of Fred's head ;-)

Needs work on the eyes, but I'm happy with it so far.

AutonomicPerfectionist's picture

Interesting build

Hello Ray!

Fred is quite an interesting build... I do like the distributed processing you're going for. Mr. GroG is currently working on an extension to MRL that would greatly improve distributed processing. Something I noticed though was your problem of WiFi. Most Raspberry Pi boards come equipped with an Ethernet port, and I believe they can also be configured as a DHCP server. So, theoretically, you could connect them up with either an Ethernet crossover cable or an ethernet switch and allow them to talk over their own subnetwork. Keep in mind, though, that the IP addresses of the Pi's will change if using DHCP. They should still be able to be accessed by their hostnames, though, if Avahi is configured correctly (by default on Raspbian it is). Ethernet connections should solve the connection problems and also greatly decrease latency between the two MRL instances.


As for the servo twitch on startup, I noticed the same thing happening with my servos (same type as yours) and an Arduino Uno. I solved it by using a 3D printer motherboard, the MKS Gen 2Z, instead of the Uno. This board has a separate powersupply rail built in, and additional circuitry to prevent a servo twitch. Best thing is, it's about $35, not bad for such a board!

Great job with Fred, looking forward to some more of your work!

Ray.Edgley's picture

You are correct about the Lan

You are correct about the Lan port on the Raspberry Pi's, The major issue there is the space between the neck rotation server and the end or the raspberry Pi, it is very tight.

I do have a small 5V 5 port network switch comming that I may be able to squeez in somewhere (Not sure where yet) but the plugs into the network ports on some of the Raspberry pi's may be too tight, not that it will stop me from trying ;-)

If I'm Successfull i will upload the pictures showing how its done.

Inside Freds Head

There is just about enough room for one more Raspberry Pi between the two already installed.

Since that photo was taken, the two white cords have been removed, They went to a usb power speaker sitting outside of Fred. I now have one of Mats speaker boxes with a home build amp mounted inside located behide the jaw.

When re-installing the jaw, note the orentation of the jaw,

Jaw upside down

Really doesn't look good upside down :-)


moz4r's picture

Wahoo nice robot and

Wahoo nice robot and interresting configuration !

I wish to dedicate some task like you one day.

Are you using remote adapter between raspi ?