You want a creature-like robot at home. Ready-made kits are expensive, and loose projects from the internet often don’t fit: hours of printing and filament wasted. robos-impressos provides the body: three models with a place for each motor and board, checked by a program before you print (you confirm the fit on your printer with a small test piece). Making it move on its own, with wiring and programming, comes in the next phase.

You want to build a friendly robot at home and don’t know where to start with the body. robos-impressos is a set of three robot bodies to 3D print: a dinosaur and a capybara about 33 cm tall that roll across the floor, and a square desktop robot with a screen for a face. Each one already has the right space for the motors, servos (small motors that turn to an angle and stop), battery, and Arduino and Raspberry Pi boards. It’s for anyone with access to a 3D printer with a 256 mm build plate who wants to build, learn, or teach robotics. This is phase 1, just the body and its fittings: wiring, voice, and intelligence are for phase 2. And an honest note: this is a digital project checked by a script; no one has printed these parts yet.
The two banners above are AI-generated illustrations. The other images on this page are renders (computer-generated images made from the project files, not photos of an assembled robot) and a drawing of the test part.
All three use the same servos and screws. The dinosaur and capybara share the same skeleton inside: only the shell changes.

A big-eyed baby dinosaur with blue spikes. It rolls on two wheels hidden inside its legs and rests on a ball. It turns and tilts its head, opens its mouth, and moves both arms.
5 servos + 2 motors

Seated, with a green bandana. The wheels sit inside the thighs, behind the blue ring, and the support ball sits inside the tail. It turns and tilts its head and opens its mouth.
3 servos + 2 motors

Made for a desk; it doesn’t roll. Its head is a cube with a 3.5-inch screen that displays its eyes and mouth. It turns almost halfway around in either direction (nearly a full turn in total) and tilts up and down.
2 servos + screen
↔ on a phone, swipe the table sideways
| Model | Height (mm) | Parts | Plates (print jobs) | Total filament (g)* | Total print time (h)* | Assembled robot (g)* |
|---|---|---|---|---|---|---|
| Dinosaur | 329 | 38 | 12 | 1107 | 44 | 1666 |
| Capybara | 326 | 39 | 13 | 1049 | 42 | 1581 |
| Square robot | 201 | 14 | 8 | 638 | 25 | 1020 |
* estimate from volume, no slicer
The animals ended up 33 cm tall, a little above the 30 cm target: the battery, Arduino, and Raspberry Pi need to fit stacked inside. Parts list for each one: see the technical guide ↓
The dark skeleton bears the weight. The colorful shell only covers it: it comes off in sections without taking the skeleton apart.

One piece forms the floor, the walls where the motors are screwed in, and the neck support. The Arduino tray and Raspberry Pi tray slide between the walls like drawers. The battery sits underneath them.

The belly, back, legs, tail, and head are separate parts, held together by hidden screws. To reach the boards, remove the head, tail, and back (7 screws), then slide the trays out like drawers.

The top of the body is a sphere, and the head is a helmet that turns and tilts around it with 2 mm of clearance (3 mm for the capybara). That lets the head move in every direction without leaving a gap.

A standard servo only turns halfway. Two printed gears double that rotation, and the cables run up inside the hollow neck tube without getting tangled.
↔ on mobile, drag the table sideways
| Movement (range checked to make sure no parts collide) | Dinosaur | Capybara | Square robot |
|---|---|---|---|
| Head side to side | ±60° | ±60° | ±170° |
| Head up and down | −15° … +20° | −15° … +20° | −25° … +30° |
| Mouth | 0 … 18° | 0 … 18° | drawn on the screen |
| Arms | −15° … +40° | stationary | — |
| Movement | rolls on the floor | rolls on the floor | stays on the table |
These are the mechanical limits. The servos and program actually make it move; that is phase 2.
A script (a small program) opens the print files, assembles the robot on the computer, and looks for problems. These are the numbers from the latest run, across all three models.
cad/parametros.py and section 4 of PLANO.md (in Portuguese): measure your part with calipers and, if it differs, change the number and generate the parts again.Five steps, no programming needed. At the end, you have the assembled body, with servos and motors in place; making it move is phase 2.
Files, commands, and the shopping list are in the technical section: see the technical guide ↓
You don't need this section to understand what you've read above.
Everything comes from a file of measurements. If you change the servo or your printer’s clearance, change one number and generate it again.
cad/parametros.py stores clearances, measurements for each component (with the source next to it), and the shape of each robot.
cad/verificar.py reads the exported STL files and rejects open parts, oversized parts, thin walls, parts intersecting each other, parts that cannot reach their position, and robots that tip over.
The chassis, trays, fork, and neck cradle use the same files for the dinosaur and the capybara (pecas/comum/).
The animals’ outer shells are made by adding rounded shapes together and turning them into a mesh; holes, pockets, and cuts are exact operations applied on top.
Creates STL and 3MF files for each part, already oriented for printing, the complete assembly (montagem.glb), and the build plate layouts.
Assembles the robot from the files, moves the joints to their limits, measures overlaps by shared volume, and rebuilds the assembly one part at a time.
Blender produces the images on this page: assembled, exploded, skeleton, and build plates.
To just print, all you need is a printer, a slicer, and the ZIP download. Python and Blender are for anyone who wants to change the project.
A printer with a 256 mm build plate (the project was designed for the Bambu Lab A1; it does not fit on a 220 mm plate because the largest part is 226 mm), PLA and PETG filament, a slicer such as Bambu Studio, and the components on the shopping list.
Python 3.12 or later (download it from python.org; the library versions require it) and git. The libraries are installed in an isolated environment inside the folder.
# check if you already have it python3 --version git --version
Blender 4. It is only used for the renders.
# check if you already have it blender --version
These are the repository commands. The complete assembly sequence, with every screw, is in PLANO.md (in Portuguese).
The print files are ready in the pecas/ folder, in STL and 3MF formats. If you only want to print, download the ZIP (about 80 MB), extract it, and open the files in your slicer: you do not need a terminal or Python. The componentes/ folders are only outlines of purchased parts: do not print them.
If you want to change dimensions and regenerate the parts, you can clone the repository with git in a terminal:
git clone https://github.com/inematds/robos-impressos.git cd robos-impressos ls pecas/dino/stl pecas/capivara/stl pecas/cubo/stl pecas/comum/stl
Print the test part and, for the dinosaur or capybara, a guide pin (pecas/comum/stl/comum-pino-guia.stl). The drawing below shows each hole from above. Next to the micro servo window are three threaded insert holes (3,9, 4,0, and 4,1 mm), and at the tip is the larger hole for the yellow motor shaft (the shaft must turn freely). In the other row are three guide pin sockets (clearances of 0,20, 0,25, and 0,30 mm) and four screw holes: M3 free fit, M3 that cuts a thread in the plastic (M3* in the drawing), M2,5, and M2. The project uses the 4,0 mm hole and the 0,25 mm socket, the middle ones, marked with a small dimple (● in the drawing). The M3 threaded insert (the brass bushing that is inserted hot with a soldering iron and becomes a thread) must fit firmly; the pin must fit snugly, without hammering it in. The micro servo must fit into the window by hand, without forcing it or letting it wobble. The screws must pass freely through the free-fit M3 hole and cut threads in the other three. If everything fits, keep going. If the neighboring hole or socket fits better, or if the servo is too tight, adjust the clearance in cad/parametros.py, in the FOLGA block (componente for the servo, encaixe for the pin, inserto_d for the insert), then regenerate the parts from step 3: that’s the only time you need Python.
# open this file in the slicer
pecas/comum/stl/comum-teste-encaixe.stl
tap the drawing to enlarge
The first command recreates all the parts; the second runs the 9 tests and exits with an error if any fail.
python3 -m venv .venv .venv/bin/pip install -r requirements.txt # takes a few minutes .venv/bin/python cad/gerar.py todos .venv/bin/python cad/verificar.py todos
These commands are for Linux and macOS. On Windows, use python instead of python3, dir instead of ls, .venv\Scripts\pip instead of .venv/bin/pip, and .venv\Scripts\python instead of .venv/bin/python.
Each build plate below is one print: the parts are already laid flat, grouped by color and material, in a 3MF file with the geometry (the file doesn’t include slicer settings and hasn’t been opened in a slicer yet; if yours won’t open it, use the separate STL files in pecas/<modelo>/stl and pecas/comum/stl (chassis, trays, and animal neck parts), along with the table). The file name is <modelo>-mesa-NN-material-cor.3mf. Untested starting point: 0,2 mm layer height, 0,4 mm nozzle, 3 walls, and 15 % infill. The rounded shells need tree supports; the skeleton prints without supports, except for berco-tilt. The test part and guide pins are repeated on the gray build plate: if you’ve already printed them, remove them from the plate. The colors are just for appearance: at minimum, you need one roll of PETG for the skeleton and one of PLA for the shell. In the tables, mesa-cabeca is a part name (the part that supports the head from inside).
# one 3MF file per build plate, for each model
pecas/dino/mesas/ pecas/capivara/mesas/ pecas/cubo/mesas/
↔ on a phone, swipe the table sideways
| Plate | Material | Colour | Part |
|---|---|---|---|
| 1 | PETG | yellow | bandeja-uno, bandeja-pi |
| 2 | PETG | graphite | chassi |
| 3 | PETG | graphite | mesa-cabeca, garfo-pescoco, capa-esfera, berco-tilt |
| 4 | PLA | blue | crista-cabeca, crista-cauda, crista-costas, iris, iris-esq |
| 5 | PLA | white | olho, olho-esq |
| 6 | PLA | grey | teste-encaixe, bucha-eixo, pino-guia ×4 |
| 7 | PLA | cream | barriga, unha ×6 |
| 8 | PLA | black | pupila, pupila-esq |
| 9 | PLA | green | torso-frente |
| 10 | PLA | green | torso-costas |
| 11 | PLA | green | cranio, perna-dir |
| 12 | PLA | green | perna-esq, cauda, braco-dir, braco-esq, mandibula |
↔ on a phone, swipe the table sideways
| Plate | Material | Colour | Part |
|---|---|---|---|
| 1 | PETG | yellow | bandeja-uno, bandeja-pi |
| 2 | PETG | graphite | chassi |
| 3 | PETG | graphite | mesa-cabeca, garfo-pescoco, capa-esfera, berco-tilt |
| 4 | PLA | white | olho, olho-esq |
| 5 | PLA | cyan | aro ×2 |
| 6 | PLA | grey | teste-encaixe, bucha-eixo, pino-guia ×4 |
| 7 | PLA | orange | torso-frente |
| 8 | PLA | orange | torso-costas |
| 9 | PLA | orange | cranio, coxa-dir |
| 10 | PLA | orange | coxa-esq, barriga, mandibula, topete |
| 11 | PLA | brown | rabo, focinho, pata-dir, pata-esq, orelha ×2, mao ×2, iris, iris-esq |
| 12 | PLA | black | pupila, pupila-esq |
| 13 | PLA | green | bandana-frente, bandana-costas |
↔ on a phone, swipe the table sideways
| Plate | Material | Colour | Part |
|---|---|---|---|
| 1 | PETG | yellow | engrenagem-servo, quadro-cabeca |
| 2 | PETG | graphite | base |
| 3 | PETG | graphite | tampa-base, garfo |
| 4 | PETG | graphite | porta-traseira |
| 5 | PETG | silver | tubo-pescoco |
| 6 | PLA | white | cabeca-corpo |
| 7 | PLA | grey | teste-encaixe, espacador-pi ×4 |
| 8 | PLA | black | cabeca-face |
Assembly order for the dinosaur and capybara:
mesa-cabeca part goes under the skull; then add the mouth servo, jaw, and eyes) and lower the whole assembly onto the neck: two screws from above.Assembly order:
↔ on a phone, swipe the table sideways
| Part | Size on the bed (mm) | Qty | Material | Colour | Supports | Filament (g)* | Time (h)* |
|---|---|---|---|---|---|---|---|
| torso-frente | 145 × 226 × 96 | 1 | PLA | green | yes | 122 | 4.7 |
| torso-costas | 145 × 226 × 74 | 1 | PLA | green | yes | 136 | 5.2 |
| barriga | 79 × 87 × 26 | 1 | PLA | cream | yes | 24 | 1.0 |
| crista-costas | 47 × 27 × 6 | 1 | PLA | blue | no | 5 | 0.3 |
| pino-guia (shared) | 4 × 4 × 9 | 4 | PLA | grey | no | 0 | 0.3 |
| perna-dir | 60 × 127 × 113 | 1 | PLA | green | no | 55 | 2.1 |
| perna-esq | 60 × 127 × 113 | 1 | PLA | green | no | 55 | 2.1 |
| unha | 18 × 18 × 13 | 6 | PLA | cream | no | 13 | 1.0 |
| cauda | 92 × 112 × 69 | 1 | PLA | green | no | 55 | 2.1 |
| crista-cauda | 26 × 38 × 6 | 1 | PLA | blue | no | 4 | 0.2 |
| cranio | 156 × 184 × 120 | 1 | PLA | green | yes | 187 | 7.1 |
| mandibula | 116 × 59 × 49 | 1 | PLA | green | yes | 26 | 1.1 |
| mesa-cabeca | 104 × 138 × 36 | 1 | PETG | graphite | no | 41 | 1.6 |
| crista-cabeca | 61 × 83 × 6 | 1 | PLA | blue | no | 7 | 0.4 |
| olho | 48 × 38 × 48 | 1 | PLA | white | no | 18 | 0.8 |
| olho-esq | 48 × 38 × 48 | 1 | PLA | white | no | 18 | 0.8 |
| iris | 29 × 19 × 29 | 1 | PLA | blue | no | 5 | 0.3 |
| iris-esq | 29 × 19 × 29 | 1 | PLA | blue | no | 5 | 0.3 |
| pupila | 17 × 13 × 18 | 1 | PLA | black | no | 2 | 0.1 |
| pupila-esq | 17 × 13 × 18 | 1 | PLA | black | no | 2 | 0.1 |
| bucha-eixo (shared) | 7 × 7 × 3 | 1 | PLA | grey | no | 0 | 0.1 |
| braco-dir | 38 × 73 × 31 | 1 | PLA | green | yes | 16 | 0.7 |
| braco-esq | 38 × 73 × 31 | 1 | PLA | green | yes | 16 | 0.7 |
| chassi (shared) | 152 × 190 × 148 | 1 | PETG | graphite | no | 206 | 7.6 |
| capa-esfera (shared) | 29 × 29 × 6 | 1 | PETG | graphite | no | 3 | 0.2 |
| bandeja-uno (shared) | 61 × 90 × 16 | 1 | PETG | yellow | no | 19 | 0.8 |
| bandeja-pi (shared) | 61 × 90 × 16 | 1 | PETG | yellow | no | 16 | 0.7 |
| garfo-pescoco (shared) | 65 × 48 × 51 | 1 | PETG | graphite | no | 17 | 0.7 |
| berco-tilt (shared) | 38 × 23 × 77 | 1 | PETG | graphite | yes | 15 | 0.6 |
| teste-encaixe (shared) | 70 × 34 × 8 | 1 | PLA | grey | no | 15 | 0.6 |
| Total | 38 | 1107 | 44 |
* estimate from volume, no slicer
↔ on a phone, swipe the table sideways
| Part | Size on the bed (mm) | Qty | Material | Colour | Supports | Filament (g)* | Time (h)* |
|---|---|---|---|---|---|---|---|
| torso-frente | 156 × 226 × 96 | 1 | PLA | orange | yes | 133 | 5.0 |
| torso-costas | 156 × 226 × 74 | 1 | PLA | orange | yes | 139 | 5.3 |
| barriga | 79 × 87 × 29 | 1 | PLA | orange | yes | 26 | 1.1 |
| bandana-frente | 119 × 47 × 60 | 1 | PLA | green | yes | 9 | 0.4 |
| bandana-costas | 119 × 38 × 67 | 1 | PLA | green | yes | 10 | 0.5 |
| mao | 20 × 20 × 11 | 2 | PLA | brown | no | 5 | 0.3 |
| pino-guia (shared) | 4 × 4 × 9 | 4 | PLA | grey | no | 0 | 0.3 |
| coxa-dir | 46 × 119 × 82 | 1 | PLA | orange | yes | 37 | 1.5 |
| coxa-esq | 46 × 119 × 82 | 1 | PLA | orange | yes | 37 | 1.5 |
| aro | 40 × 40 × 3 | 2 | PLA | cyan | no | 4 | 0.3 |
| pata-dir | 44 × 37 × 25 | 1 | PLA | brown | no | 10 | 0.5 |
| pata-esq | 44 × 37 × 25 | 1 | PLA | brown | no | 10 | 0.5 |
| rabo | 84 × 72 × 50 | 1 | PLA | brown | yes | 34 | 1.4 |
| cranio | 160 × 185 × 114 | 1 | PLA | orange | yes | 179 | 6.8 |
| mandibula | 119 × 58 × 44 | 1 | PLA | orange | yes | 21 | 0.8 |
| focinho | 79 × 41 × 40 | 1 | PLA | brown | yes | 12 | 0.5 |
| mesa-cabeca | 98 × 140 × 33 | 1 | PETG | graphite | no | 40 | 1.5 |
| orelha | 28 × 28 × 15 | 2 | PLA | brown | no | 9 | 0.5 |
| topete | 16 × 26 × 6 | 1 | PLA | orange | no | 2 | 0.2 |
| olho | 42 × 29 × 42 | 1 | PLA | white | no | 13 | 0.6 |
| olho-esq | 42 × 29 × 42 | 1 | PLA | white | no | 13 | 0.6 |
| iris | 30 × 15 × 30 | 1 | PLA | brown | no | 5 | 0.2 |
| iris-esq | 30 × 15 × 30 | 1 | PLA | brown | no | 5 | 0.2 |
| pupila | 21 × 11 × 21 | 1 | PLA | black | no | 2 | 0.2 |
| pupila-esq | 21 × 11 × 21 | 1 | PLA | black | no | 2 | 0.2 |
| bucha-eixo (shared) | 7 × 7 × 3 | 1 | PLA | grey | no | 0 | 0.1 |
| chassi (shared) | 152 × 190 × 148 | 1 | PETG | graphite | no | 206 | 7.6 |
| capa-esfera (shared) | 29 × 29 × 6 | 1 | PETG | graphite | no | 3 | 0.2 |
| bandeja-uno (shared) | 61 × 90 × 16 | 1 | PETG | yellow | no | 19 | 0.8 |
| bandeja-pi (shared) | 61 × 90 × 16 | 1 | PETG | yellow | no | 16 | 0.7 |
| garfo-pescoco (shared) | 65 × 48 × 51 | 1 | PETG | graphite | no | 17 | 0.7 |
| berco-tilt (shared) | 38 × 23 × 77 | 1 | PETG | graphite | yes | 15 | 0.6 |
| teste-encaixe (shared) | 70 × 34 × 8 | 1 | PLA | grey | no | 15 | 0.6 |
| Total | 39 | 1049 | 42 |
* estimate from volume, no slicer
↔ on a phone, swipe the table sideways
| Part | Size on the bed (mm) | Qty | Material | Colour | Supports | Filament (g)* | Time (h)* |
|---|---|---|---|---|---|---|---|
| base | 150 × 144 × 66 | 1 | PETG | graphite | no | 220 | 8.1 |
| tampa-base | 150 × 144 × 18 | 1 | PETG | graphite | no | 94 | 3.5 |
| porta-traseira | 137 × 62 × 5 | 1 | PETG | graphite | no | 32 | 1.3 |
| tubo-pescoco | 36 × 36 × 28 | 1 | PETG | silver | no | 15 | 0.6 |
| engrenagem-servo | 69 × 69 × 8 | 1 | PETG | yellow | no | 23 | 0.9 |
| garfo | 133 × 92 × 24 | 1 | PETG | graphite | no | 40 | 1.6 |
| quadro-cabeca | 94 × 60 × 55 | 1 | PETG | yellow | no | 30 | 1.2 |
| cabeca-corpo | 112 × 100 × 89 | 1 | PLA | white | no | 135 | 5.1 |
| cabeca-face | 112 × 100 × 43 | 1 | PLA | black | no | 34 | 1.3 |
| espacador-pi | 6 × 6 × 5 | 4 | PLA | grey | no | 0 | 0.3 |
| teste-encaixe (shared) | 70 × 34 × 8 | 1 | PLA | grey | no | 15 | 0.6 |
| Total | 14 | 638 | 25 |
* estimate from volume, no slicer
↔ on mobile, drag the table sideways
| Item | Dinosaur | Capybara | Square robot |
|---|---|---|---|
| MG996R standard servo | 2 | 2 | 2 |
| SG90 or MG90S micro servo | 3 | 1 | — |
| Yellow 1:48 TT motor with 65 mm wheel | 2 | 2 | — |
| 16 mm steel ball | 1 | 1 | — |
| Holder for 2 18650 batteries, with batteries | 1 | 1 | 1 |
| Small rocker switch (KCD11) | 1 | 1 | 1 |
| Raspberry Pi 4 or 5 | optional | optional | 1 |
| 3.5-inch screen for Raspberry Pi, model MPI3501 (fits the board pins; an HDMI screen will not work) | — | — | 1 |
| L298N motor driver | 1 | 1 | — |
| M3 threaded inserts (5,7 mm long, for a 4,0 mm hole) | 25 | 25 | 14 |
| M3 screws, 6 to 25 mm long, M3 nuts and washers (and some M2,5) | kit | kit | kit |
| Arduino Uno with servo shield | optional | optional | optional |
| 4 adhesive rubber feet | — | — | 4 |
In phase 1, nothing is powered on: Arduino and Raspberry Pi are only used to check the fit, so they’re optional (in the square robot, the Raspberry Pi holds the screen). Screws outside the common kit: for the animals, 2 M3×12 flat-head screws and 4 M2,5×8; for the square robot, 3 M3×35, 8 M3×10 flat-head screws, and 4 M2,5×12. In M3×12, 3 is the diameter and 12 is the length, in millimeters. The full list is in section 3 of PLANO.md (in Portuguese), and the quantity for each step is in section 6.
Estimated component cost, including Arduino and shield but excluding the printer and filament: R$ 330 to 560 per animal. For the square robot, R$ 260 to 430 plus the Raspberry Pi and screen, which are required for that model (estimated additional cost of R$ 490 to 850). Prices from Brazilian shops in November 2026; estimate.
Tools: soldering iron (for the inserts), small Phillips screwdriver, 2.5 mm Allen key, calipers (to measure your components), and instant glue.
Be careful with 18650 batteries: they are lithium batteries. Use a proper holder and charger, keep the terminals from touching metal, and don't charge them unattended, especially with children nearby.
Renders generated by the project itself.




Summary of what the script prints, in Portuguese. The full text is in pecas/verificacao-saida.txt.
== dino [PASSOU] 1 contagem: 30 peças distintas, 38 no total (esperado 38); faltando 0; sobrando 0 [PASSOU] 2 malha: 30 STL fechados, 1 corpo cada [PASSOU] 3 mesa: todas cabem em 256 x 256 x 256 mm; maior dimensão 226.4 mm (torso-frente) [PASSOU] 4 parede: torso 2.36–2.41 mm; cabeça 2.36–2.42 mm; perna 2.35–2.41 mm; cauda 2.35–2.41 mm (mínimo exigido 2.0) [PASSOU] 5 interferência: 54 sólidos (37 impressos + 17 componentes), 12 poses, 0 sobreposições; 2 encaixe(s) previsto(s) fora da conta: motor-tt-dir x roda-dir (eixo do motor entra no cubo da roda); motor-tt-esq x roda-esq (eixo do motor entra no cubo da roda) [PASSOU] 6 teste negativo: 'chassi' deslocada 3 mm em X → 13 sobreposições acusadas (tem que ser > 0) [PASSOU] 7 peça solta: as 37 peças montadas encostam (≤ 1.5 mm) em outra [PASSOU] 8 equilíbrio: massa estimada 1666 g; CG neutro em x=0.1 y=-26.1 z=118.2 mm, margem 26.1 mm (tomba com 12°); pior pose 'tilt-baixo': margem 22.1 mm (11°); mínimo exigido 10 mm [PASSOU] 9 caminho: 31 passos (montagem + abertura para manutenção), cada peça entra ou sai pela direção declarada sem atravessar o que está montado == capivara [PASSOU] 1 contagem: 33 peças distintas, 39 no total (esperado 39); faltando 0; sobrando 0 [PASSOU] 2 malha: 33 STL fechados, 1 corpo cada [PASSOU] 3 mesa: todas cabem em 256 x 256 x 256 mm; maior dimensão 226.4 mm (torso-frente) [PASSOU] 4 parede: torso 2.36–2.41 mm; cabeça 2.36–2.41 mm; coxa 2.36–2.40 mm; rabo 2.36–2.41 mm (mínimo exigido 2.0) [PASSOU] 5 interferência: 53 sólidos (38 impressos + 15 componentes), 8 poses, 0 sobreposições; 2 encaixe(s) previsto(s) fora da conta: motor-tt-dir x roda-dir (eixo do motor entra no cubo da roda); motor-tt-esq x roda-esq (eixo do motor entra no cubo da roda) [PASSOU] 6 teste negativo: 'chassi' deslocada 3 mm em X → 12 sobreposições acusadas (tem que ser > 0) [PASSOU] 7 peça solta: as 38 peças montadas encostam (≤ 1.5 mm) em outra [PASSOU] 8 equilíbrio: massa estimada 1581 g; CG neutro em x=-0.0 y=-24.9 z=117.4 mm, margem 24.9 mm (tomba com 12°); pior pose 'tilt-baixo': margem 21.0 mm (10°); mínimo exigido 10 mm [PASSOU] 9 caminho: 27 passos (montagem + abertura para manutenção), cada peça entra ou sai pela direção declarada sem atravessar o que está montado == cubo [PASSOU] 1 contagem: 11 peças distintas, 14 no total (esperado 14); faltando 0; sobrando 0 [PASSOU] 2 malha: 11 STL fechados, 1 corpo cada [PASSOU] 3 mesa: todas cabem em 256 x 256 x 256 mm; maior dimensão 150.0 mm (base) [PASSOU] 4 parede: modelo sem casca orgânica (paredes são sólidos exatos ≥ 2,4 mm) [PASSOU] 5 interferência: 22 sólidos (13 impressos + 9 componentes), 9 poses, 0 sobreposições; 1 encaixe(s) previsto(s) fora da conta: engrenagem-servo x servo-pan MG996R (horn do servo fica no rebaixo da engrenagem) [PASSOU] 6 teste negativo: 'quadro-cabeca' deslocada 3 mm em X → 1 sobreposições acusadas (tem que ser > 0) [PASSOU] 7 peça solta: as 13 peças montadas encostam (≤ 1.5 mm) em outra [PASSOU] 8 equilíbrio: massa estimada 1020 g; CG neutro em x=-2.2 y=5.0 z=74.5 mm, margem 59.0 mm (tomba com 38°); pior pose 'pan+37': margem 58.8 mm (38°); mínimo exigido 10 mm [PASSOU] 9 caminho: 12 passos (montagem + abertura para manutenção), cada peça entra ou sai pela direção declarada sem atravessar o que está montado
Phase 2 (listening, speaking, seeing, walking without bumping into things, knowing where it is) has not been built. The mechanical design already has space, holes, and cable routing.
↔ on mobile, drag the table sideways
| Phase 2 component | Dinosaur and capybara | Square robot |
|---|---|---|
| Raspberry Pi and Arduino together | two trays on the rack, one above the other; ventilation slots in the back | Raspberry Pi in the head, Arduino in the base |
| Microphones | 4 holes in the chest | 4 holes at the top of the head and 4 in the base lid |
| 40 mm speaker | ring inside the belly panel; the panel slots form the grille | ring and grille at the front of the base |
| Raspberry Pi camera | posts inside the snout (dinosaur) or forehead (capybara); moves with the head | posts behind the frame, above the screen |
| Distance and drop sensors, wheel rotation meter (encoder), tilt sensor (IMU) | front window, 4 pairs of holes in the floor, 12 mm clearance above each motor, 2 holes at the top of the chassis | 2 pairs of holes in the base floor |
| Small LiDAR (a laser sensor that measures the room around it) | Doesn't fit with 360° vision: the head blocks it | Fits on the flat top of the head |
| Larger battery and recharging | 58 × 114 × 23 mm bay that opens from the rear; hole underneath for a charging connector, so you can recharge without opening it | Rear door with the switch and charging connector |
No dates promised.