-
Notifications
You must be signed in to change notification settings - Fork 91
Current OS: Amelia
π¨ Note: Always disconnect the Raspberry pi from power source before connecting wires to it.
Important Notes:
β οΈ USB CONNECTION - CHOOSE ONE: The USB C breakout board is recommended (takes less space, carries more current) but requires soldering. The USB cable is easier (no soldering) but takes more space.- π¦Ύ ARM BUILD: Components marked "(only if building the arms)" are required only for the full build with arms
- β‘ SOLDERING REQUIRED: USB C breakout board and INA260 battery sensor require soldering
- Speakers: Check if speakers are already included with your USB sound card before purchasing separately. (They are with the link below)
- Before buying something else, it is recommended to ask first in the corresponding discord channel.
- If you source your screws yourself instead of using the kits, make sure you use flat head screws, it does not matter if they are type hex or torx or phillips.
- Basic Build (No Arms): Skip components marked "(only if building the arms)" - you'll need 4 MG996R servos and 1 kit of M3 screws
- Full Build (With Arms): Include all components - you'll need 6 MG996R servos, 4 MG90s servos, 6 servo extension cables, 4 magnets, and 2 kits of M3 screws
- 2 screw Kits is more than actually required for the build with arms but I guess they will serve for other projects. I will add a complete list with totals soon if anyone want to purchase exactly what is required.
-
β οΈ Important: The arm version can be built at a later time, but it is strongly suggested to install the extension cables during the initial build so that you do not have to disassemble anything when ready to add them. - There are 2 different screen supports (one 1024x600 and one 800x480). Print the one required for the screen you have bought.
| Category | Component | Description | Quantity | Link |
|---|---|---|---|---|
| 3D Printing | 3D Printer | Any printer will do as long as the bed is at least 180x180 | β | β |
| PETG Filament (RECOMMENDED) | Rigid components | 1kg (1.5kg for the arm version) | β | |
| PLA Filament (ALTERNATIVE) | Rigid components. Cheaper and less durable | 1kg | β | |
| TPU Filament (OPTIONAL) | For the foot pads | 200g | β | |
| Core Components | Raspberry Pi 5 (4GB+ RAM) (8GB recommended) | Main computing unit | 1 | (Buy) |
| Raspberry Pi 5 Active Cooler | Fan and Heat Sink for Pi | 1 | (Buy) | |
| Display | 5" 1024x600 UeeKKoo DSI Display |
Higher resolution display option | 1 β (1 needed) | (Buy) |
| 5" 800x480 Hosyond DSI Display |
Standard resolution display option | 1 β (1 needed) | (Buy) | |
| 5" 800x480 Waveshare DSI Display |
Standard resolution display option | 1 β (1 needed) | (Buy) | |
| 200mm DSI Ribbon Cable (OPTIONAL) | Prevents having to fold the cable that comes with the screen | 1 | (Buy) | |
| Power Components | 12V Rechargeable Li-ion Battery 3000 mAh with Charger | Main power supply | 1 | (Buy) |
| XL4015E DC 5A Adjustable Buck Converter | Step-down converter for the servos (12V to 6V) | 1 | (Buy) | |
| DC 6A USB Voltage Regulator | Step-down converter for the Pi (12V to 5V, 5A) | 1 | (Buy) | |
| Micro Rocker Switch | Power switch | 1 β (1 needed) | (Buy) | |
| USB Cable |
Power connection for the Pi. Easy option (no soldering required) but takes more space | 1 β (1 needed) | (Buy) | |
| USB C Male Breakout Board |
Power connection for the Pi. Better option (takes less space, carries more current) but requires soldering β‘ | 1 β (1 needed) | (Buy) | |
| 40cm Dupont Cables (Female to Female) | Connection cables for INA260 and PCA9685 | 1 β (8 needed) | (Buy) | |
| 20 Gauge 2 Conductor Parallel Wire | Parallel power wiring (~200cm) | 1 | (Buy) | |
| INA260 Battery Sensor (OPTIONAL) | Battery monitoring (requires soldering β‘) | 1 | (Buy) | |
| Servo | PCA9685 16-Channel PWM/Servo Driver | I2C interface for servo control | 1 | (Buy) |
| MG996R Servos | Main servo | 1 β (4 needed (or 6 if building the arms)) | (Buy) | |
| MG90S Servos (only if building the arms) | Servos for the forearms and hands | 1 β (4 needed if building the arms) | (Buy) | |
| 12" Servo Extension Cables (Male to Female) (only if building the arms) | Extension cables for the servos | 1 - (6 needed if building the arms) | (Buy) | |
| Audio System | USB Sound Card | Audio input and output board | 1 | (Buy) |
| 8Ξ© 5W Speaker | Audio output (if they do not already come with the USB sound card) | 1 | (Buy) | |
| Camera System | OV5647 Camera Module | Visual input | 1 | (Buy) |
| Hardware | 10x3mm Magnets (only if building the arms) | For magnetic attachments | 1 β (4 needed) | (Buy) |
| 6" Velcro Straps | Cable management | 1 β (2 needed) | (Buy) | |
| Heat Shrink Tubing | For securing wires | 1 | (Buy) | |
| Spade Connectors | For connecting the switch | 1 - (2 needed) | (Buy) | |
| M3 Screws | M3 screws, different sizes used | 1 kit or 2 if building the arms | (Buy) |
BUILD WITHOUT ARMS (Legs Only)
| Screw Type | Quantity Needed | Notes |
|---|---|---|
| M3x5mm | 17 | Electronics, camera, audio, servo controller |
| M3x8mm | 15 | Electronics, torso assembly, speakers |
| M3x10mm | 12 | Chassis connectors |
| M3x12mm | 16 | Lids and covers |
| M3x16mm | 12 | Bottom assembly, leg-to-hull connection |
| M3x18mm | 12 | Leg mount, servo clips |
| M3x20mm | 18 | Servo mounting and hull assembly |
| M3x35mm | 4 | Leg mount assembly channels |
| Self-tapping screws | 6-7 | Included with MG996R servos (PCA9685, servo horns, optional INA260) |
| M2.5 screws | 2 | Included with screen (Screen mounting) |
Total M3 screws needed: ~116
BUILD WITH ARMS (Full Build)
| Screw Type | Quantity Needed | Notes |
|---|---|---|
| M3x5mm | 17 | Electronics, camera, audio, servo controller |
| M3x8mm | 35 | Electronics, torso, speakers, fingers, arm lids |
| M3x10mm | 14 | Chassis connectors, forearm pushers |
| M3x12mm | 28 | Lids, arm servos, arm shaft assemblies |
| M3x16mm | 12 | Bottom assembly, leg-to-hull connection |
| M3x18mm | 12 | Leg mount, servo clips |
| M3x20mm | 18 | Servo mounting and hull assembly |
| M3x35mm | 4 | Leg mount assembly channels |
| Self-tapping screws | 14-15 | Included with MG996R & MG90s servos (PCA9685, all servo horns, optional INA260) |
| M2.5 screws | 6 | Included with screen (2) & MG90s servos (4) (Screen mounting, forearm & hand servo horns) |
Total M3 screws needed: ~140
- Layer height: 0.2 mm
- Minimum walls: 3
- Infill: 20 (Gyroid)
- Top / Bottom layers: 5
- Don't use any Brim
- Enable automatic Tree supports for all parts (Some areas require supports but can be hard to spot in the slicer preview.)
- Support Threshold Angle: 10 (Avoid having supports in the screw holes)
- All parts are pre-oriented.
It is strongly recommended to keep the same orientation and rotation, as the final aesthetics depend on it. - Print the calibration guide first to verify your printer tolerances.
All parts are designed with additional clearance to accommodate up to Β±0.02 mm dimensional deviation.

- Push the switch in the space made for it in the Buck Converter Support part.
- If using an INA260 (Battery % monitor), secure it to the side of the Buck Converter Support using 1 self-tapping screw (You should have some that came in with the MG996R servo).

- Connect a 35cm length of wire to the out poles of the Buck Converter used for the servo.
- Using 3 M3x5mm screws (identified by the red arrow), attach the 2 buck converters in the same orientation shown in the picture.
- Use the Buck Converter Bracket part to hold the buck converter used by the Raspberry Pi.

Power cable wiring diagram. Following this diagram, use 20AWG wire to link everything. Keep the wires short to the components within the support, you can have a longer length going to the battery (15cm max).

It should look like this once completed.

- Insert the Battery charger plug in the support and use an M3x8mm screw to hold it in place.

- Connect the Battery and turn the power ON.
- Using a small screwdriver, turn the screw to adjust the buck converter to output 6.2V (It might take several turns before you see a change).

- Place the Raspberry Pi on its support and use 2 M3x8mm screws and the Raspberry Pi Support Bracket to hold it in place.

- Place the Raspberry Pi and support on top of the buck converter assembly and secure it in place using 2 M3x5mm screws.

- Create the wire loom to connect the PCA9685 and the INA260 (if using) to the Raspberry Pi following this schema.
- Use about 35cm of wire length for the wires going to the PCA9685.
- You can use 22AWG or 24AWG wire for this if making your own wire loom with dupont connectors, otherwise use 30cm premade dupont connector (and splice the wire if you are using an INA260).
At this stage, the electronics setup is complete and you should be able to power the Raspberry Pi, the Servo Controller (PCA9685) and the INA260 (if using). You can keep the charger plugged in while everything is powered on, it will charge the battery at the same time as providing enough power for the computer.

- Remove the top plastic casing on the USB to AUDIO board, use something to pry it open, it's only a press fit casing.
- Install it on the Lower Chassis Lid using the Soundcard Brace and 2 M3x5mm screws
- Using Velcro Straps, install the Battery on the Chassis Lid in the orientation shown
- If the Velcro Straps are too long, you can cut them

- Using 2 M3x5mm screws, install the camera to the Upper Lid 5inch

- Secure the screen to the Screen Support using the screws that came with the Screen kit.

- Install the support and screen on the Upper Lid 5inch using 4 M3x5mm screws

- When needed, connect the Screen and Camera to the DSI Connectors on the Raspberry Pi (Be gentle with these connectors, they are easy to break):
- CAM/DSI 0 = Screen
- CAM/DSI 1 = Camera
- Raspberry Pi 5
- Active Cooler
- microSD card (32 GB minimum, 64 GB+ recommended)
- microSD card reader for your computer
- Keyboard and mouse (Optional, you can SSH, or VNC *)
- HDMI cable + Micro HDMI adapter + monitor (Optional, we can use the screen we installed above or you can use VNC *)
- USB-C power supply (27 W official recommended, Optional, the electronics section shows how you can power the Raspberry Pi)
(* Refer to the How To section on how to SSH or use VNC)
Before anything else, install the active cooler on the raspberry pi. Connecting to a monitor is optional if you know how to SSH to do all of the rest of the installation.
- Go to the official Raspberry Pi site:
π https://www.raspberrypi.com/software/ - Download and install Raspberry Pi Imager for your operating system (Windows, macOS, or Ubuntu).
- Launch Raspberry Pi Imager.
- Click "Choose Device" β select Raspberry Pi 5.
- Click "Choose OS" β select
Raspberry Pi OS (64-bit)(Use Trixie) - Click "Choose Storage" β select your microSD card.
- Click the βοΈ settings icon (bottom right) to open advanced settings:
- Enable SSH (optional, for remote access)
- Set a hostname
- Configure Wi-Fi (SSID, password, country)
- Set a username and password
- Choose locale/time zone/keyboard layout
- Click Save β then Write.
Wait a few minutes for the flashing process to complete.
- After flashing is complete, open the boot partition on your SD card (should show up as a drive in File Explorer).
- Open the file:
config.txt. - Scroll to the bottom and add the following lines:
dtoverlay=vc4-kms-v3d
dtoverlay=vc4-kms-dsi-waveshare-panel,7_0_inchC,dsi0
NOTE: You may already have the "dtoverlay=vc4-kms-v3d" line in your config.txt. In that case, you DO NOT need to add it again.
- Save the file.
- Right-click the SD card and choose Eject.
- Insert the microSD card into your Raspberry Pi 5.
- Connect the monitor, keyboard, mouse.
- Connect the power cable
Once you reach the desktop or connect via SSH, open a terminal and run:
sudo apt update && sudo apt full-upgrade -y
sudo rebootThis ensures you're running the latest kernel and firmware optimized for Raspberry Pi 5.
If you need to enable interfaces like camera, I2C, or SPI, run:
sudo raspi-configThen navigate to Enable the Camera, I2C, SPI, VNC.
- Open a terminal on your Raspberry Pi.
- Install Python venv (if not already installed) and clone the repository:
sudo apt install python3-venv -ygit clone -b V3 https://github.com/TARS-AI-Community/TARS-AI- Navigate to the cloned directory:
cd TARS-AI- Update script permissions:
chmod 777 Install.sh- Allow the script to be executable:
chmod a+x Install.sh- Run the installation:
./Install.shTo enable LLM and TTS functionality, you need to configure your API keys.
- Open the
.envfile in the TARS-AI folder in a text editor and replace the placeholders with your valid API keys:
sudo nano .env-
Get Your API Keys
Required:
Recommended:
OpenAI is not free but it is also not expensive, Elevenlabs has a free tier and usually is enough for normal use, there are other free options in the software that can be used for free too.
- From the TARS-AI folder, navigate to the software source directory:
cd src/- Open the
config.inifile in the TARS-AI\src folder in a text editor and edit the options.
sudo nano config.ini- From the TARS-AI folder:
./tars-launcher.shOr
- From the TARS-AI folder, Navigate to the software source directory:
cd src/- Activate the Virtual Environment, the virtual environment must be activated each time you want to start the program:
source .venv/bin/activate- You should now see
(.venv)in your terminal shell prompt: - Start the TARS-AI assistant:
python app.pyNote that while the program will run if there was no errors in the previous steps, a microphone and a way to output sound is required to interact with it. For now, you can use an USB microphone and something like bluetooth speakers if you want to test the Software while you are building the rest of the Robot.

Install the power door using some length of filament. Make sure to push the filament completely through the hole on both sides of the case. Cut any filament that might be protruding from the hole.

Connect the Lower Chassis to the Upper Chassis using the middle, left and right Chassis Connectors and 12 M3x10mm screws.

Pass each speaker module through the side opening in the Upper Chassis, ensuring that enough wire is pulled through on each side.

Assemble the Left and Right leg mount assembly using 2 M3x35mm screws on each side to link the Channel, Pusher, Pusher Guide and Shaft.
Important:
- Each assembly should slide easily without having any play
- The pusher guide should also move freely
- The left and right assembly should mirror each other

Using 8 M3x18mm screws, attach the Left and Right assembly. Make sure the audio wire goes in the hole of the assembly on each side - this is where all wires are going to be channeled to each leg.

Arrange all 4 main MG996R servos as shown in the image. The number on each one corresponds to the pin ID they will be connected to on the servo controller. Servo 2 and 3 wires need to go through the Left and Right holes where the audio wires are going through.

For Arms Version builders only: Feed the extension servo wires through the Left and Right holes and identify them for later (tape and marker works well).
- Left side: 3 wires for pins 4, 5, 6
- Right side: 3 wires for pins 7, 8, 9
If you are not building the Arms version, you can skip the extension wires.

- Secure the PCA9685 board to the Servo Controller Support using 2 self-tapping screws (included with MG996R servo)
- Feed the wires through the middle hole and out of the top hole so they are not in the way of the left and right assembly
- Connect the wires to the corresponding pins on the PCA9685
- Pull all wire slack out of the main torso (there is more than enough room in the leg for extra length)
- Secure the servo controller support on the Upper Chassis using 4 M3x5mm screws


Using 4 M3x8mm screws, secure the electronic support to the Lower Chassis. Once everything is in place, it should look like the images above.

Using 4 self-tapping screws and 2 servo horns with 2 prongs (included with MG996R servo), attach them to the left and right servo connectors.

Slide the left and right Hull Hub on both sides. Important: They can only be installed at this step, so make sure the orientation matches the image.

At this point, all electronics should be working on battery power. We will now set the initial position of the servos and assemble them in place.
Navigate to the servo tester app:
cd TARS-AI
cd src
source .venv/bin/activate
python app-servotester.pyChoose option 2: Terminal Mode (text-based)
Run Command 1: Set all servos to preset position
Warning: The servos will remain under power while we add components. While they will try to keep their position, it is important to avoid forcing them to move. We can adjust minor misalignment later.

Position the assembled Servo Connector so the servo horn is parallel to the servo as much as possible. Each servo is slightly different, so it might not line up exactly, but we can fix this later. Do this for both Left and Right sides and use the M3 screw (included with servo) to secure in place.

Cut one side of 2 servo horns with 2 prongs (included with MG996R servo).

Position the modified horns on the Torso servos at a 90-degree angle. If it's not exactly 90 degrees, we can adjust the minor difference later. Do this for both sides - they should mirror each other.

Put the Servo Connector Arm on top of each side and use 2 M3x8mm screws to secure everything in place.
At this stage, you can disable power to the servos using the script:
Run Command 2: Disable all servos

Using 4 M3x20mm screws, attach the left and right servos to the leg mount. Note: The screws go in at an angle.

Using 2 M3x20mm screws, attach the servo connector arm on the Pusher. Important: Make sure it's not too tight. Do this for both sides and position the servos back in place in the case.

Use 4 M3x18mm screws to bolt down the left and right Torso Servo Clip. I am also using a small tie-wrap to bundle the wires together here so they do not get caught in the mechanism.

The USB cable for the Audio Card is a bit bulky so fold it and attach it with some tie-wrap in order for it to use less space in the case and be out of the way of the mechanism.

- Use 4 M3x12mm screws to secure the top and lower lids (red arrows)
- Use 4 M3x16mm screws to assemble the bottom footpad and base to the lower chassis

- Place the leg spacer (identified by the blue arrow) between the case and the Hull part
- Using 2 M3x20mm screws, first secure the Hull Hub to the Hull part
- Then bolt the servo clip over the servo using 3 M3x20mm screws
- Do the same thing for both sides (Left and Right)

Install the Hull Lid using 4 M3x12mm screws.

Place the speakers on the Lower Leg Lid and set it in place using 2 M3x8mm screws. Do the same thing for the other side.

Slide the foot pad on the lower leg case. Do the same thing for the other side.

Place the Lid on the Lower Leg Case and secure it using 4 M3x12mm screws. Do the same thing for the other side.

Join the Lower Leg to the Hull using 4 M3x16mm screws. Do the same for the other side.
Note: This is using the left leg parts, the right leg mirrors the left one.

- Route the speaker assembly into the lower leg case
- Slide the footpad into the grooves of the lower leg case

- Fix the speaker to the lower case lid using 2 M3x8mm screws

- Insert the lid on the lower case and bolt it in place using 4 M3x12mm screws

- Insert a magnet in the lower leg case, push it firmly in place. It should remain there but if it's too loose, you can add a bit of glue (or hot glue)

- Add another magnet in the finger 2 part. Make sure the orientation of the magnet will pull the finger toward the lower leg case. You can use the finger plug to push it in place (add glue if you think it's too loose)


- Add 1 MG90s to the main arm case, feed the wire through the holes like on the image and secure it with 2 self-tapping screws that come with the servo

- Add another MG90s to the forearm case, feeding the wires through the same holes in the main arm case and use 2 self-tapping screws to hold it in place

- Install both of the rods on the fingers following this image for the orientation (Finger 1 with Rod 1, Finger 2 with Rod 2), use 2 M3x8mm screws. The rods should be able to move freely but not have too much slack

- Use a length of filament to join the forearm case with both of the fingers

- Join the Lower Case with the Main arm case, using the Leg Hinge and 2 lengths of filament. Make sure the filament goes all the way through the Leg Case as there is a cutout there to allow removal of the filament if needed

- Install a MG996R servo, oriented like on the image. Make sure the wires from the other servo and speaker go to the sides of the servo so they do not get pinched under. Use 4 M3x12mm screws to hold it in place

- Prepare the parts that will extend the main arm. Cut one of the 2 prong servo horns that came with the MG996R servo, like we did for servo 0 and 1. Use 1 M3x12mm screw to connect the Leg Arm Shaft and the Leg Arm Pusher - the Arm Shaft should be able to move freely

- Use 1 M3x12mm screw to join the Leg Main Arm Case with the Arm Shaft
Connect the servos to their extensions
Servo ID's:
- Left Arm (MG996R): 4
- Left Forearm (MG90S): 5
- Left Hand (MG90S): 6
- Right Arm (MG996R): 7
- Right Forearm (MG90S): 8
- Right Hand (MG90S): 9
Run the app-servotester.py script and set the servos to their preset values:
cd TARS-AI
cd src
source .venv/bin/activate
python app-servotester.pyChoose option 2: Terminal Mode (text-based)
Run Command 1: Set all servos to preset position

Keep the servos under power while you connect the arms to them. Don't force the servos to rotate - they are under power so will try to retain their positions. Make sure the cases are oriented like the image, this is the neutral position.
- Main Arm servo (Blue): Use the servo horn we cut, place it under the 3D printed Arm Pusher and use 1 M3x8mm screw to fix on the servo
- Forearm servo (Red): Use one of the 1 prong servo horns that came with the MG90s, place it parallel with the case as much as possible, use the M2.5 screw that came with the servo kit to secure it in place. If it's not totally parallel, we can adjust the offsets later
- Hand servo (Green): Use 1 M3x10mm screw to link the Forearm Pusher to the rods and use the M2.5 screw that came with the servo kit to fix it in place on the servo
You can now power off the servos using the app-servotester.py:
Run Command 2: Disable all servos

- Use 6 M3x8mm screws to assemble the Main Arm Lid and the Forearm Lid
- The Leg Upper Lid normally snaps into place but you can add 1 M3x8mm screw to secure it if you want (the hole is on the side of the case)

Join the Lower Leg to the Hull using 4 M3x16mm screws. Do the same for the other side.
This section is under construction, but the instructions are also located here, in this video: https://www.youtube.com/watch?v=We_4mcOO7hI&t=20s
This project is self-funded and built in spare time. If youβd like to help offset hardware and prototyping costs, you can buy me a coffee. Small contributions go a long way toward faster iterations and new features.