Introduction: 3D-printable Arduino Pet Robot
Snoopy was designed in Fusion 360 and printed using a Voron 2.4r2 350mm and a Prusa MK3S. It has an ESP32 micro-controller, Arduino firmware, two motors with a caster, a laser scanner sensor (and in a next revision a Raspberry Pi Pico with servos). It has an old smartphone or 7" tablet as display, microphone, audio and IMU.
Once finished, it will act as a pet - play ball, hide-and-seek, chase, demand its owners' attention and greet its owners happily at the door. Utilitary functions will include patrolling the house. Here is a preview of Snoopy playing ball in a simulation.
Snoopy runs on kaia.ai software platform developed at remake.ai.
Please note:
- this project is a work-in-progress
- the project is evolving quickly and this Instructable is out-of-date. Please get the most up-to-date instructions and files here makerspet.com/blog/meet-snoopy-pet-robot-model/
If you are reasonably pleased with this design, please leave a like to help others discover this contribution!
Happy 3D printing!
Attachments
caster_wheel_half_v15_1_body1.3mf
motor_bracket_chr-gm25-bl2418_v5(mirror)_1_body1.3mf
motor_bracket_chr-gm25-bl2418_v9_1_body1.3mf
plate.3mf
front_stop.3mf
head.3mf
top_stop.3mf
latch.3mf
18650_6s_3x2_battery_holder_v11_1_body1.3mf
case.3mf
lid.3mf
spacer.3mf
bumper_bracket_cover_v17_3_body1.3mf
bumper_bracket_side_v29(mirror)_1_body1.3mf
bumper_bracket_side_v52_3_body3.3mf
bumper_mount_side_v41_3_body7.3mf
bumper_v18_1_body1.3mf
baffle.3mf
enclosure.3mf
65mm_tire_1_body1.3mf
blue_wheel_frame_1_body1.3mf
motor_adapter_4mm_id_1_body1.3mf
caster_wheel_half_v15_1_body1.stl
motor_bracket_chr-gm25-bl2418_v5(mirror)_1_body1.stl
motor_bracket_chr-gm25-bl2418_v9_1_body1.stl
plate.stl
front_stop.stl
head.stl
top_stop.stl
latch.stl
18650_6s_3x2_battery_holder_v11_1_body1.stl
case.stl
lid.stl
spacer.stl
bumper_v18_1_body1.stl
bumper_bracket_cover_v17_1_body1.stl
bumper_bracket_side_v29(mirror)_1_body1.stl
bumper_bracket_side_v52_1_body3.stl
bumper_mount_side_v41_1_body7.stl
baffle.stl
enclosure.stl
65mm_tire_1_body1.stl
blue_wheel_frame_1_body1.stl
motor_adapter_4mm_id_1_body1.stl
Supplies
You will need
- a 3D printed with a 310x310mm minimum print dimensions
- around 1Kg of PETG or PLA filament
- a soldering iron
- a 2-3 year old smartphone as display/microphone/sound/IMU
- a local Windows or Linux PC for processing
- BoM parts (up-to-date description is here)
- 1x ESP32 ESP-WROOM-32
- 1x voltage regulator 24V-to-USB module, see here
- 1x laser scanner, see here
- 2x motors, see here
- 4x resistors, see here
- 4x connectors, see here
- 2x tire and hex shaft adaptor, see here
- 1x 24V battery
- 1x breadboard
Step 1: 3D Print Parts
Download and 3D-print 3MF or STL files. See this post for most up-to-date links to files.
Step 2: Assemble the 3D Printed Parts
Assemble the 3D printed parts, motors. Use Fusion 360 design files to see how things fit together (links here).
Step 3: Assemble the Electronics
Follow the schematic (link here) to connect the electronics. Connect the two motors and the laser scanner to the ESP32. Connect the battery to the voltage regulator input and to the motors power. Connect the voltage regulator USB output to the ESP32 and the laser scanner.
Step 4: Set Up Your PC
Follow instructions here to set up your PC and install Docker.
Step 5: Upload Firmware
Download the ESP32 firmware (link in this post). Use Arduino IDE to compile and upload the firmware to your ESP32.
Step 6: Bring Up Your Robot
Step 7: Drive Robot Manually
Follow these instructions to open another shell window and connect to your running Docker image. Follow this tutorial to drive your robot around manually - but skip launching the Gazebo ROS2 simulator.
Step 8: Create a Map of Your Room
Follow this tutorial to create a map of your room - except, don't run the Gazebo simulator and drive your robot around the room manually. Once the map is created, have your robot self-drive anywhere you want.


























