Networking & Remote Access

Overview

Networking and remote access allow you to control, monitor, and debug Pixel Robot without directly connecting a keyboard and monitor.
This section explains how to connect the robot to a network, access it remotely, and configure ROS 2 communication across machines.

Pixel Robot supports: - WiFi and Ethernet networking - SSH-based remote access - Remote RViz visualization - Multi-machine ROS 2 setups


Network Requirements

  • Robot and control PC must be on the same network
  • Stable WiFi connection recommended for visualization and debugging

Connecting the Robot to WiFi

List available WiFi networks:

nmcli device wifi list

Connect to a WiFi network:

nmcli device wifi connect "YOUR_SSID" password "YOUR_PASSWORD"

Verify connection:

ip addr

ip

Look for a valid IP address assigned to the wireless interface.


Finding the Robot’s IP Address

On the robot, run:

hostname -I

This will display the robot’s IP address.


Finding the Robot from Another Device

If you do not know the IP address, scan the network:

sudo apt install nmap  
sudo nmap -sn 192.168.1.0/24

Look for the device corresponding to the robot.


SSH Remote Access

SSH allows you to access the robot’s terminal remotely.

Enable SSH (if not already enabled)

sudo systemctl enable ssh  
sudo systemctl start ssh

Connecting via SSH

From your laptop or desktop:

ssh <username>@<robot_ip_address>

Example:

ssh titan@192.168.1.42

Once connected, you can run ROS 2 commands as if you were physically on the robot.


Sourcing ROS 2

After logging in via SSH, ensure ROS 2 is sourced:

source /opt/ros/humble/setup.bash  
source ~/titan_ws/install/setup.bash

Remote RViz2 Usage

RViz2 can be run either: - On the robot - On a remote PC connected over the network

Running RViz2 remotely is recommended to reduce CPU load on the robot.


Running RViz2 on a Remote PC

Ensure: - ROS 2 Humble is installed on the remote PC - The same workspace (or compatible message definitions) is available

Set the same ROS 2 domain ID on both machines.


ROS 2 Networking Configuration

ROS 2 uses DDS for communication and works automatically when machines are on the same network.

ROS_DOMAIN_ID

Set the same domain ID on all machines:

export ROS_DOMAIN_ID=0

Add this to .bashrc on both robot and remote PC to persist.


Verifying ROS 2 Communication

On the remote PC:

ros2 node list  
ros2 topic list

If nodes and topics from the robot appear, communication is working correctly.


Multi-Machine ROS 2 Setup

Common setup: - Robot runs sensors, control, and navigation - Remote PC runs RViz2 and debugging tools

Ensure: - Same ROS_DOMAIN_ID - Same ROS 2 distribution - Firewall does not block DDS traffic


Firewall Considerations

If communication issues occur, check firewall settings:

sudo ufw status

If enabled, allow traffic or temporarily disable for testing:

sudo ufw disable

Ethernet Connection (Optional)

For development and testing: - Connect robot directly to a PC using Ethernet - Assign IP addresses automatically or manually - Provides lower latency and higher reliability than WiFi


Security Best Practices

  • Change default passwords
  • Disable unused services
  • Use SSH keys instead of passwords
  • Avoid running robot on public networks

Common Networking Issues

Issue Possible Cause Solution
Cannot SSH Wrong IP or SSH disabled Verify IP and SSH service
ROS topics not visible Different ROS_DOMAIN_ID Set same domain ID
High latency Weak WiFi signal Move closer or use Ethernet
RViz lag Running on robot Run RViz on remote PC

You can now fully operate and debug Pixel Robot remotely 🚀