ROS Workstation Setup

A ROS Workstation is a desktop or laptop computer with a full ROS (Robot Operating System) setup that connects to your robot over the network. It allows you to:

  • Monitor internal robot activity.

  • Visualize robot sensors and movement via tools like RViz.

  • Send commands and offload computational tasks.

  • Run graphical tools and perform PID tuning.

  • Use camera tools like image_view to see robot vision in real time.

Simply, it allows you to interact with your robot. Connect to it, drive it, modify its software.

Note

This is NOT about virtual simulated environments. However, powerful workstations can run simulation tools as well.


Native Linux Machine

If you’re using a native Ubuntu Linux system:

  1. Ensure you’re running a compatible Ubuntu LTS version. (Ubuntu 24.04 would be sufficient)

  2. Install Ubuntu if needed.

  3. Install ROS 2.


Virtual Machine Setup (Windows, MacOS)

If you have Windows or MacOS you should use Virtual Machine.

  1. Install VirtualBox

  2. Download an Ubuntu LTS VM (e.g., Kubuntu from OSBoxes).

  3. Unzip and import the .vdi file into VirtualBox.

  4. Configure the VM:

    • RAM: ≥ 2048 MB (recommend 4096 MB)

    • Video Memory: ≥ 64 MB (recommend 128 MB)

    • Storage: ≥ 25 GB

    • Network Adapter: Set to Bridged Adapter (essential for LAN access)

Tip

Be careful which system you’re typing commands into. You’ll have:

  • Robot OS (via SSH)

  • Workstation VM

  • Host OS (your main OS)


Install ROS 2 and Ubiquity Software

Follow ROS 2 install guide: ROS 2 Install Guide

Then add Ubiquity’s package repository to get Magni-specific tools:

# On Ubuntu + ROS system
sudo apt update
sudo apt upgrade

Enable Zeroconf Networking

Install Avahi services for local network name resolution:

sudo apt install libnss-mdns avahi-daemon avahi-utils

Now you can ping the robot:

ping ROBOTNAME.local

Environment Variables

If Zeroconf Works

Set these environment variables each session:

export ROS_MASTER_URI=http://ROBOTNAME.local:11311
export ROS_HOSTNAME=$(hostname).local

Make them persistent by adding to ~/.bashrc:

echo "export ROS_MASTER_URI=http://ROBOTNAME.local:11311" >> ~/.bashrc
echo "export ROS_HOSTNAME=$(hostname).local" >> ~/.bashrc

Note

Don’t do this if using multiple robots – set them per terminal manually.


If Zeroconf Fails

We recommend setting static IPs or using DHCP reservations.

  1. Configure system for mDNS

    Edit /etc/systemd/resolved.conf:

    MulticastDNS=yes
    

    Append to /etc/NetworkManager/conf.d/mdns.conf:

    [connection]
    connection.mdns=2
    

    Restart services:

    sudo service NetworkManager restart
    sudo service systemd-resolved restart
    
  2. Use IP Addresses

    Replace ROBOTNAME and HOSTNAME with IPs:

    export ROS_MASTER_URI=http://<robot_ip>:11311
    export ROS_IP=<workstation_ip>
    

    To make it persistent:

    echo "export ROS_MASTER_URI=http://<robot_ip>:11311" >> ~/.bashrc
    echo "export ROS_IP=<workstation_ip>" >> ~/.bashrc
    

    Note

    Again, skip this if you’re working with multiple robots.


Synchronize Time (Robot + Workstation)

Time synchronization is critical for ROS topic communication.

On your laptop (workstation):

sudo chronyc -a local stratum 10
sudo chronyc -a allow 0/0

On the Magni robot:

sudo systemctl stop magni-base
sudo chronyc -a add server <yourLaptopName> iburst
sudo chronyc -a burst 2/4
sudo systemctl start magni-base

Set your timezone:

sudo dpkg-reconfigure tzdata

Test the Connection

In the workstation terminal, type:

rostopic list

You should see a list of topics, including:

/cmd_vel

If yes, ROS is communicating with your robot.


Drive Magni from Workstation

Instead of running teleop_twist_keyboard on the robot, now run it from the workstation:

rosrun teleop_twist_keyboard teleop_twist_keyboard.py

This sends velocity commands from the workstation to the robot via ROS.


Summary Checklist

Step

Description

Ubuntu LTS setup (native or VM)

Installed correct ROS version

Installed Ubiquity Magni packages

Zeroconf or static IP setup

Environment variables configured

Time synchronization set up

Tested rostopic list

Able to teleop from workstation

You’re now ready to develop and monitor ROS-based robotics applications from your workstation!