Close
0%
0%

LLM Controlled "Robot Wife"

An LLM returns statements and parameters which are published to ros topics to control the robot

Similar projects worth following
0 followers
My real wife was yelling at me for something, eating junk food or something like that, and she said "why don't you find yourself a wife that doesn't yell at you" and I said "ok, maybe I'll make one". So, it started as a joke between my real wife and myself.

The robot frame is built from the GoBilda structure. This allows configuration into different shapes. There are four 12V DC motors and top speed is around 0.8 m/s. The motors are controlled with a high current esp32-s3 4 motor control pcb that i designed (reference below).

The robot uses a raspberry pi as its "brains". The heavy processing is offset to my laptop, which is running an NVIDIA RTX 4070 with 8G of memory. The pi is connected to a microphone, speaker, cameras, 2 X esp32s, gamepad dongle & touch screen.

On the PC: LLM is open source llama 3b params model. Speech to text is done with whisper. Text to speech and media pipe running on cpu.

Robot head is from the Poppy-project (thanks to these makers).

The project is an all purpose LLM controlled robot. I call it a "robot wife", which is just a bit of a joke between my real wife and I. The prompt is tailored to the personality of a robot that doesn't tell me off and always laughs at my jokes. The robot build has the following parts

1. Robot frame/body and motors, including motor controllers.

2. Robot head. I'm using the poppy-eva 3d printed head.

3. Onboard robot brains, which is used for sensors, interface and control.

4. Offset robot brains, which is mostly the heavy language and image processing. This is software only and can be updated more frequently than the onboard brains.

5. Robot power. 

6. Robot sensors, interfaces and controls, which are connected to the raspberry pi.

  • 8 × GoBilda 1120 series U-channel. These are vaious sizes. 2 x 528mm for the legs, 2 X 432mm for the upper body, 2 x 360mm for the feet, 2 x 144m for crossbars, one between the feet and one between legs. I have no affiliation with gobilda and paid full price for my robot.
  • 4 × 5204 Series Yellow Jacket Planetary Gear Motor, 80mm Lenght 8mm REX shart, 117 RPM I'm using the long shaft motor. This is because i had them left over from a previous robot project. For this project where the motors are orientated at right angles to the wheel axis, short shaft would be better. The robot is four wheel drive.
  • 100 × M4 screws. You will need lots of these. If you are using the gobilda components, check the configuration instructions. For the whole robot, I used over 100 M4 screws varying in length from 6mm to 16mm and then a number of 60mm screws.
  • 10 × 1201 Series Quadblock pattern mount 4 x (43-5) for the motors, 6 x (43-2) to connect the U-channels for the robot body. Check the gobilda website for configuration ideas.
  • 8 × 2319 Series MOD 1.25 Steel Miter Gear (8mm REX® Bore, 30 Tooth) These are to mount the motors sideways. Will also need bearings and spacers other parts used for connection. Check the gobilda website for extra bits that you need to connect these to the motors.

View all 22 components

  • 1st entry

    jonathanr4242.utubean hour ago 0 comments

    Ok, so I've just put this project on hackaday because Zack Freedman says if we want to inspire makers, then we shouldn't only put our stuff on github. At this point, its quite far into the project, but there's still a lot to do.
    Now, when i give the robot wife a command, she sometimes hallucinates that she is doing it. So, i say move your head, and she says "i'm moving my head", but doesn't actually move her head.

    I'm thinking there are certain conditions for her to send parameters to the ros topic for safety, which are not met. Like hearing "jessica darling", which could be the speech to text not picking it up properly. But she hears the command, so thinks that she is doing it, and still nothing is getting published to the ros topic. 

    Next step is to adjust the prompt to see if she can generate some statement about why there is no command being implemented. 

View project log

Enjoy this project?

Share

Discussions

Does this project spark your interest?

Become a member to follow this project and never miss any updates