Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.cyberwave.com/llms.txt

Use this file to discover all available pages before exploring further.

Goals

This guide walks you through connecting a Universal Robot UR7e industrial arm to its digital twin on Cyberwave via a Raspberry Pi running ROS 2. By the end, you will have:
  • Prepared a Raspberry Pi with the Cyberwave image
  • Connected the Raspberry Pi to the UR7e over Ethernet
  • Created a Cyberwave environment with a UR7e digital twin
  • Installed the Cyberwave edge stack and paired the robot
  • Launched the UR robot driver and MQTT bridge for real-time control

Prerequisites

  • Universal Robot UR7e arm, powered on and in Remote Control mode
  • Raspberry Pi 4 or 5 (4 GB+ RAM recommended) flashed with the Cyberwave image — see Raspberry Pi Setup
  • Ethernet cable connecting the Raspberry Pi to the UR7e

Phase 1: Prepare the Raspberry Pi

Follow the Raspberry Pi Setup guide to flash the Cyberwave image, configure Wi-Fi, and SSH into your Pi. Once you can reach the Pi at cyberwave.local, continue below.

Phase 2: Connect the Pi to the UR7e

Step 1: Verify network connectivity to the UR7e

Connect an Ethernet cable between the Raspberry Pi and the UR7e, then SSH in:
ssh pi@cyberwave.local
ping 192.168.1.102   # Replace with your UR7e's IP address
If the robot is not reachable, configure a static IP on the Ethernet interface so the Pi is on the same subnet as the UR7e:
sudo nmcli con add type ethernet ifname eth0 con-name ur7e-link \
  ipv4.addresses 192.168.1.100/24 \
  ipv4.method manual
sudo nmcli con up ur7e-link
The Wi-Fi connection to your local network remains active for internet and Cyberwave cloud access, while the Ethernet link provides a direct connection to the robot.

Phase 3: Configure the Cyberwave Environment

Step 1: Create an environment

An environment is a 3D virtual space that mirrors your real-world robot setup.
  1. Go to the Cyberwave dashboard and click New Environment.
  2. Give it a name (e.g., “UR7e Workstation”) and description.

Step 2: Add the UR7e digital twin

  1. Inside your environment, click Add from Catalog in the left panel.
  2. Search for UR7e in the catalog.
  3. Add the UR7e digital twin and position it to match your physical setup.

Phase 4: Install the Cyberwave Edge and Pair

Step 1: Install the Cyberwave CLI

SSH into the Raspberry Pi and install the CLI:
ssh pi@cyberwave.local
curl -fsSL https://cyberwave.com/install.sh | bash
For more details, see Step 5 of the Quick Start guide.

Step 2: Install the Edge Core

The Edge Core bridges the UR7e hardware and the Cyberwave cloud via MQTT.
sudo cyberwave edge install
The CLI will prompt you to log in with your Cyberwave credentials and install the edge runtime on the Raspberry Pi.

Step 3: Pair the UR7e with its digital twin

Follow the terminal prompts:
  1. Select the environment you created.
  2. Select the UR7e digital twin.
  3. The appropriate driver will be automatically installed and configured.
Your Universal Robot UR7e is now paired with its digital twin and syncing in real time.

Phase 5: Launch the Robot Driver

Before Cyberwave can send commands, the ROS 2 driver must be running on the Raspberry Pi.

Verify the ROS 2 installation

source /opt/ros/jazzy/setup.bash
ros2 --version
cd ~/workspace/ros_ur_driver
source /opt/ros/jazzy/setup.bash

rm -rf build/ install/ log/
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
source install/setup.bash
Add these lines to ~/.bashrc so the environment is sourced automatically on every login:
echo "source /opt/ros/jazzy/setup.bash" >> ~/.bashrc
echo "source ~/workspace/ros_ur_driver/install/setup.bash" >> ~/.bashrc

Start the UR robot driver

Make sure the UR7e is powered on and in Remote Control mode, then:
source /opt/ros/jazzy/setup.bash
source ~/workspace/ros_ur_driver/install/setup.bash

ros2 launch ur_robot_driver ur_control.launch.py \
    ur_type:=ur7e \
    robot_ip:=192.168.1.102 \
    use_fake_hardware:=false
Verify the connection in a second terminal:
source ~/workspace/ros_ur_driver/install/setup.bash
ros2 topic echo /joint_states
You should see real-time joint data streaming from the UR7e.

Start the MQTT bridge

The MQTT bridge connects the ROS 2 driver to Cyberwave’s MQTT broker. First, configure the broker:
nano ~/workspace/ros_ur_driver/src/mqtt_bridge/config/bridge_params.yaml
Update the broker settings to point to the Cyberwave MQTT broker:
mqtt_bridge:
  ros__parameters:
    broker:
      host: "your-mqtt-broker-hostname"
      port: 1883
      username: "your-username"
      password: "your-password"
Then launch the bridge:
ros2 launch mqtt_bridge bridge_launch.py
The UR7e is now streaming data to Cyberwave and accepting commands through MQTT.

EPick Gripper Setup (Optional)

If your UR7e is equipped with a Robotiq EPick vacuum gripper, configure it on the UR teach pendant first:
  1. Installation → URCaps → EPick on the teach pendant.
  2. Add a Modbus output register named epick_cmd at address 1000 with slave ID 9, baud rate 115200.
Then launch the gripper controllers:
source /opt/ros/jazzy/setup.bash
source ~/workspace/ros_ur_driver/install/setup.bash

ros2 launch epick_controllers epick_controller.launch.py
Test grip and release:
ros2 service call /grip_cmd std_srvs/srv/SetBool "{data: true}"    # Grip
ros2 service call /grip_cmd std_srvs/srv/SetBool "{data: false}"   # Release

Auto-Start on Boot (Optional)

To have the MQTT bridge start automatically when the Raspberry Pi boots, create a systemd service:
# /etc/systemd/system/mqtt-bridge.service
[Unit]
Description=ROS 2 MQTT Bridge
After=network.target

[Service]
Type=simple
User=pi
Environment="HOME=/home/pi"
ExecStart=/bin/bash -c "source /opt/ros/jazzy/setup.bash && source /home/pi/workspace/ros_ur_driver/install/setup.bash && ros2 launch mqtt_bridge bridge_launch.py"
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable mqtt-bridge.service
sudo systemctl start mqtt-bridge.service

Troubleshooting

Source the ROS 2 environment before running any ros2 command:
source /opt/ros/jazzy/setup.bash
source ~/workspace/ros_ur_driver/install/setup.bash
  1. Verify the Ethernet cable is connected.
  2. Check the robot’s IP matches your configuration: ping 192.168.1.102.
  3. Ensure the robot is in Remote Control mode on the teach pendant.
  4. Review the Ethernet connection: nmcli con show ur7e-link.
cd ~/workspace/ros_ur_driver
source /opt/ros/jazzy/setup.bash
rosdep install --from-paths src --ignore-src -r -y
rm -rf build/ install/ log/
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
Verify broker connectivity:
ping your-mqtt-broker-hostname
mosquitto_sub -h your-mqtt-broker-hostname -t "#" -v
Check the bridge_params.yaml for correct host, port, and credentials.