My Companion
Robot Rover
Project Home

CLICK images for details | browser browser back button to return

Background

Rover

The goal. To build a better friend-like companion robot than what is currently available, by leveraging the full ChatGPT 5 features like internet access, memory, voice chat, real-time video feed, etc. Note that other robot companies will not touch all or most of these important features for their more general users that do not expect to pay a monthly service fee.

The impetus. I have had no aspirations of ever building my own robot, and have been perfectly content collecting robots that entertain and engage me in ways I had always hoped they would. But 4 events changed this dynamic:

  1. Since the release of the ChatGPT Voice Mode API in 2024, almost every new robot pivoted its design to try to be a companion robot by using the new API. Not only were there great new robots like Baby Alpha and LOOI, but some older robots like Loona added among the best implementations of the API in its unmatched firmware releases.
  2. LOOI's design was particularly interesting, because it removed perhaps the highest cost of a companion robot (i.e., the brain and animated face) by leveraging a very powerful computer and screen that users already own (i.e., their smarphone), and just creating a basic robot body to embody the power of ChatGPT's companion features.
  3. While at the same time, the ChatGPT iOS app itself kept improving. And with the advent of ChatGPT 5, it finally had the core features needed to be a great companion by adding support for a real-time video feed and internet access to its already world-class realistic Voice Mode and memory access.
  4. However, despite continued enhancements (many requested by me), these companion robots fell short of the great potential of the ChatGPT iOS app, since they knew their users would not pay for a monthly service fee, and thus they used the most economical version of the API, so that the monthly transactions costs did not offset the robot price by very much.

The epiphany. So after waiting over a year for a companion robot that would never happen, my frustration lead me to ask ChatGPT in Summer 2025 how feasible it was for me to create my own companion robot that would leverage the full ChatGPT with Voice Mode and Real-Time Video Feed API, using the design principle demonstrated by LOOI - perhaps in a one-year phased timeline. To my surprise, ChatGPT said it was a great idea that I was totally capable of implementing.


Design Choices

Design Choices

The premise. To build the most advanced consumer companion robot available in 2025/2026 by leveraging existing technologies. This starts with my own iOS app on my own everyday powerful iPhone that uses all its sensors (mic, speakers, camera, LiDAR, computer vision, 3D environment mapping, etc.) and the full capabilities of ChatGPT to create an engaging companion with an expressive face, an emotive head/neck, and a reasonably fast body that freely explores with autonomy. There are no machined or 3D-printed parts (except for the shell to cover the hardware), but instead only off-the-shelf components that require basic assembling with no soldering.

Since this was the area I was least interested in, I totally relied on ChatGPT to choose the right hardware that met the project requirements. And as usual, we made compromises, some bad decisions, and lots of pivoting along the way.

The body parts. While the value of the robot is in its personality, there is some complexity to its basic body.


Phased Plan

Plan

Building blocks. To be able to experience some real results as soon as possible, I laid out a phased plan:


Assembly & Wiring

Hardware

Off-the-shelf and no-soldering. The point of this project was not to build sophisticated companion hardware, but instead to leverage the most sophisticated companion software, ChatGPT iOS app in Voice Mode with Real-time Video Feed, and provide a decent physical embodiment to seal the perception of life.

Note to pay particular attention to Raspberry Pi wiring, considering our first 2-day phase took 20 days and many headaches due to our wiring of the jumpers to the wrong pins on the Pi board. I did not realize this until I almost gave up on the project, but had one last epiphany of checking Sphero SDK diagrams instead of relying on no diagrams (and just relying on ChatGPT direction).

  1. Flash the SD card with Raspberry Pi Imager app, then insert in Pi
    • Device: Raspberry Pi 3
    • OS: Use custom
      • Download the last Bullseye build (dated 2023-05-03) from: https://downloads.raspberrypi.com/
        raspios_lite_armhf/images/
      • Filename: 2023-05-03-raspios-bullseye-armhf-lite.img.xz
    • Hostname: roverpi.local
    • Username: pi
    • Wireless LAN: (local Wi-Fi credentials)
    • Locale Settings: America/Chicago, us
    • Enable SSH: ON
  2. Secure Raspberry Pi in its “case”
  3. Connect all key parts: Pi, RVR+, and PCA9685
    1. ground
      • Connect 10cm female-to-male black jumper from RVR+ GND pin to breadboard ground rail
      • Connect 10cm female-to-male black jumper from Pi GND pin (pin 6) to breadboard ground rail
      • Connect 10cm female-to-male black jumper from PCA9685 GND pin to breadboard ground rail
    2. power
      • Connect 9.5" USB-A to micro-USB cable from RVR+ USB port to Pi USB power port
      • Connect 10cm female-to-female red jumper from RVR+ UART +5V pin to PCA9685 V+ pin
      • Connect 10cm female-to-female red jumper from Pi 3.3V pin (pin 1) to PCA9685 VCC pin
    3. data
      • Connect 10cm female-to-female yellow jumper from RVR+ UART RX pin to Pi TX pin (pin 8)
      • Connect 10cm female-to-female orange jumper from RVR+ UART TX pin to Pi RX pin (pin 10)
      • Connect 10cm female-to-female jumper from Pi SDA1 pin (pin 3) to PCA9685 SDA pin
      • Connect 10cm female-to-female jumper from Pi SCL1 pin (pin 5) to PCA9685 SCL pin
    4. control w/power
      • Connect cable for top HS-5085MG servo to PCA9685 Slot 1
      • Connect cable for bottom HS-5085MG servo to PCA9685 Slot 2
  4. Provide Pi power, wait for initial boot, and ssh in
    1. Connect USB-A from computer or dongle to Pi micro-USB port, temporarily replacing USB cable from RVR+
    2. Wait a minute or two, and check if can access with ssh pi@rover.local to confirm boot is complete
    3. If ssh connects:
      • Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
      • Note that you may have to first clear info if re-flashed multiple times: ssh-keygen -R roverpi.local
      • Force a clean boot via ssh: sudo reboot
  5. Copy all our scripts (including install scripts) onto Pi from a separate Terminal window
    • scp -r /Dropbox/Code/rover_utilities/* pi@roverpi.local:~/robot/
  6. Run install scripts on Pi in Terminal ssh window:
    1. sudo ~/robot/install/step_1_prep_os.sh
      • Ensure to respond to any shell prompts:
        1. The serial login shell is disabled (“No” to the prompt)
        2. The serial interface is enabled (“Yes” to the prompt)
    2. (reboots)
    3. ssh pi@rover.local
    4. sudo ~/robot/install/step_2_install_sphero_sdk.sh
    5. Disconnect Pi USB power from computer or dongle, and connect to RVR+ USB port
    6. python3 ~/robot/install/step_3_quick_drive.py
    7. sudo ~/robot/install/step_4_prep_auto_start.sh

Project Guidelines

Guidelines

Always be mindful. Over-arching concepts to try to stick to:


Timeline & Milestones

Milestones

No rush. In retirement, set loose goals:


Branding

Rover app icon

Vibrant and friendly. This is the project mantra.