Skip to main content

Set up the UGV Beast

1. Product Assembly

Follow the steps mentioned in this tutorial for the product assembly. This assembly tutorial mainly includes two parts. The first is a tutorial on installing Raspberry Pi 4B/5 for ACCE model products, and the second is a tutorial for installing lithium batteries. Precautions: Verify correct battery polarity before powering on to avoid hardware damage. Refer to this setup guide to learn more about the precautions.

2. First Time Setup

For first-time use of the UGV, you’ll have to configure the robot as per the instructions detailed out in this setup guide. This guide shows you how to connect in SSH to your UGV best. Here’s a quick work through of all the phases you need to perform for first-time use:
  1. First Time Power On: Insert the pre-configured TF card, connect power, and wait for the OLED screen to display the robot’s IP address. If you don’t have the card, you can download here the custom Raspian image
  2. Connect to the Robot: Join the robot’s default Wi-Fi hotspot (AccessPopup) and open the web control interface in your browser.
  3. Network Configuration: Switch the robot from its default hotspot to your local Wi-Fi network using the JupyterLab terminal.
  4. Enable SSH: Turn on the SSH service via raspi-config so you can remotely access the Raspberry Pi from your terminal or IDE.
  5. SSH into the Raspberry Pi: Once SSH is enabled, connect to the Raspberry Pi from your local terminal:
ssh ws@<UGV_IP> -p 22
Replace <UGV_IP> with your UGV Beast’s actual IP address, which is displayed on the OLED screen (the W: line). For example: ssh ws@192.168.0.144 -p 22. Credentials:
  • Username: ws
  • Password: ws
SSH Troubleshooting: In case you’re unable to enable SSH with the guide instructions, refer to this section to use an alternative way to establish a SSH connection.

3. End and Disable the Main Program

When the UGV Beast is powered on, it automatically runs the Raspberry Pi’s default main program, which occupies the serial port and camera. This prevents ROS 2 (and our custom Cyberwave stack) from accessing the hardware. Before proceeding, you need to end and disable the main program. Follow both steps from the official Waveshare preparation guide:
  1. 1.1 End the main program — Stop the currently running main program to free the serial port and camera
  2. 1.2 Disable the main program from running automatically — Prevent it from starting again on reboot
In the standard Waveshare setup, after disabling the main program you would start their Docker remote service. Skip that step. Instead, you’ll pull and run the custom Cyberwave Docker image, which replaces the default Docker container with one that includes the MQTT Bridge, Cyberwave SDK, and pre-configured ROS 2 stack.

Configure and Launch Cyberwave

Before configuring the edge, set up the digital twin on the Cyberwave platform:
  1. Log in to your Cyberwave Dashboard
  2. Create a new Environment within the project
  3. Click Add from Catalog and select UGV Beast from the Catalog
  4. The twin is added to your environment with the required capabilities pre-configured

Install the Cyberwave CLI

Now that the UGV Beast is set up and the default main program is disabled, In case you haven’t already, from your local terminal, SSH into the UGV Beast’s Raspberry Pi:
ssh ws@<UGV_IP> -p 22
Replace <UGV_IP> with your UGV Beast’s actual IP address, displayed on the OLED screen (the W: line). For example: ssh ws@192.168.0.144 -p 22. Credentials:
  • Username: ws
  • Password: ws
  • Port: 22
Once you’re in, you can install the Cyberwave CLI. Simply go:
curl -fsSL https://cyberwave.com/install.sh | bash
Once the installation is complete you can run the CLI! Set it up like this:
sudo cyberwave edge install
The CLI will request your Cyberwave login credentials and then will ask you to select the environment you created on the previous step. Once that is done, the CLI will download some stuff in the background. Depending on your connection, it may take up to 5 minutes. You can check the status by going:
cyberwave edge logs

Add the Cyberwave UGV Beast Controller

Go back to your Cyberwave environment and switch to Live Mode to view updates in real time. You should see a live video feed from the UGV! Add a UGV Beast controller policy to enable keyboard control. From here, you can:
  • Move the rover using keyboard input
  • Turn on the onboard camera
  • Record video datasets
  • Interact with the robot in real time

Miscellaneous

Establish SSH Connection

The UGV Beast has two separate SSH hosts on the same device. Both use the UGV’s IP address (displayed on the OLED screen, the W: line), but they connect to different environments on different ports:
HostUserPortPurpose
Raspberry Piws22System administration, Docker management, network config
Docker Containerroot23ROS 2, MQTT Bridge, Cyberwave configuration

Option 1: Direct SSH Commands

Connect directly using the IP from the OLED screen:
# Into the Raspberry Pi host
ssh ws@<UGV_IP> -p 22

# Into the Docker container
ssh root@<UGV_IP> -p 23
Replace <UGV_IP> with your UGV’s actual IP (e.g., 192.168.0.144). Default password for both is ws. Add the following entries to your local ~/.ssh/config file for quick, repeatable access. Replace the HostName with your UGV’s actual IP from the OLED screen:
Host ugv-ubuntu
    HostName <UGV_IP>
    User ws
    Port 22

Host ugv-ubuntu-docker
    HostName <UGV_IP>
    User root
    Port 23
Once saved, you can connect with a short alias:
# Into the Raspberry Pi host
ssh ugv-ubuntu

# Into the Docker container
ssh ugv-ubuntu-docker

Option 3: Via Your IDE (e.g., VS Code Remote SSH)

If you use VS Code or Cursor with the Remote - SSH extension:
  1. Add both ugv-ubuntu and ugv-ubuntu-docker hosts to your ~/.ssh/config (as shown above)
  2. Open the Remote Explorer panel in your IDE
  3. Select the host you want to connect to and open a remote window
This lets you edit files, run terminals, and debug directly on the Raspberry Pi or inside the Docker container from your IDE.