Installation Guide

This guide walks through how to deploy the PuppyPi Cloud Robotics application on your own PuppyPi Pro Ultimate robot.

Hardware Requirements

To successfully deploy the application, you will need:

  • A PuppyPi Pro Ultimate robot running on a Raspberry Pi 5

  • The Raspberry Pi extension board (included with the Pro Ultimate version)

  • A local machine or terminal capable of SSH access to the PuppyPi - We used VNC Viewer, but any SSH-compatible tool (e.g., terminal, PuTTY) will work

Software Requirements

The deployment process is automated via a setup script. The software dependencies and resources include:

  • Git (for cloning the project repository)

  • Zsh (used for running the installation script)

  • Internet access (for downloading dependencies and connecting to cloud services)

Installation Steps

  1. Access the PuppyPi

    SSH into your PuppyPi. If using VNC Viewer, ensure the PuppyPi is powered on and on the same network.

  2. Setup

Navigate to HiWonder-toolbox, open wifi_conf.py, change WIFI_MODE to 2, change WIFI_STA_SSID to the name of the network (if in Dr. Chris Crawford’s lab, this would be HTIL Router), change wifi_sta_password to the network password, then save the file.

Type in terminal

sudo systemctl restart wifi.service
cd /home/pi/
git init
git remote add origin https://github.com/CS-495-Cloud-Robotics-Team/PuppyPi
git fetch origin main
git reset --hard origin/main
nano .env

Edit in the .env file:

  • PICO_ACCESS_KEY = enter Picovoice access key here

  • AWS_API_KEY = enter AWS api key here

  • WIFI_STA_SSID = enter network name here

  • WIFI_STA_USERNAME = enter username here, if Enterprise

  • WIFI_STA_PASSWORD = enter network password here

cd /home/puppypi/
sudo cp git_sync.service/etc/systemd/system/
sudo systemctl enable git_sync.service
cd /home/pi/controller/
chmod +x setup_dependencies.zsh
./setup_dependencies.zsh

Run in terminal:

python3 controller.py

This will run the controller program so everything should work.

In order to make the controller script run on startup:

cd /home/pi/controller/
sudo cp controller_startup.service
/etc/systemd/system/
sudo systemctl enable controller_startup.service
sudo reboot raspberrypi
  1. Provide Credentials When Prompted

    The script will prompt for the following:

    • Wi-Fi credentials (choose one): - WPA2 Personal: SSID and password - WPA Enterprise (without CA certificate): SSID, username, and password

    • API Key for Dr. Chris Crawford’s AWS-based API

    • API Key for Picovoice (used for wake word detection)

    Once the setup is complete, the script will: - Clone the GitHub repository into /home/pi - Install required system and Python packages - Configure services for cloud connectivity - Enable automatic startup for voice command listening

External Resources

The application relies on the following external services:

  • GitHub (Free): Hosts the source code and deployment scripts

  • AWS Lambda + API Gateway: - Used for cloud-based voice command processing - Default configuration uses Dr. Crawford’s API - Accepts .wav file input sent from the PuppyPi

  • Picovoice (Free/Paid Tiers): Handles wake word detection

    If you do not have access to Dr. Crawford’s API key, you can set up your own endpoint by:

    • Creating an API Gateway linked to an AWS Lambda function

    • Using the Lambda logic in the lambda/function directory of the repository

    • Creating a Lambda layer using the openai-aws-lambda-layer-3.9.zip file in the lambda directory

    • This setup enables the use of the OpenAI Python library within your Lambda function

Next Steps

Once the installation is complete, refer to the Features section to explore the available voice-controlled capabilities of the PuppyPi.