← Back to Docs

Raspberry Pi Setup

Discover the robot’s IP, update the common_platform repo, configure host and network settings and set the ROS namespace.
1

Connect to the Raspberry Pi

Discover the robot’s IP address and connect via SSH.

Before you can run any ROS 2 commands on your robot, you need to connect to the Raspberry Pi over the network. The robot obtains an IP address via DHCP when powered on. The following commands help you discover that IP and open an SSH session as the rcr user.

bash
ip addr show
bash
ssh rcr@192.168.1.n
2

Pull the latest common_platform repository updates

Update your local clone of the common_platform repository before building or running any code.

The common_platform project is under active development. Before compiling firmware or launching nodes, you should ensure your repository is up‑to‑date. Use the following commands to stash local changes, update the Git remote and pull the latest code.

bash
cd ~/repos/common_platform
git stash
git remote set-url origin "https://github.com/RoseCityRobotics/common_platform.git"
git pull origin main
git stash apply
3

Configure Raspberry Pi host settings

Set the hostname and ensure hostname preservation on reboot.

To give each robot a unique identity on your network you should set the system hostname. These commands modify the cloud‑init configuration to prevent overwriting the hostname, set the hostname files, and apply the changes.

bash
sudo nano /etc/cloud/cloud.cfg

In the editor, find the line beginning with preserve_hostname and set it to true:

preserve_hostname: true

Save and exit (Ctrl+O, Enter, Ctrl+X).

bash
sudo nano /etc/hostname
sudo nano /etc/hosts

Replace occurrences of the old hostname with your robot’s desired name (e.g. rcr001). In /etc/hosts update the line beginning with 127.0.1.1 to reference your new hostname.

bash
sudo hostnamectl set-hostname rcr001
sudo reboot
4

Configure network settings on the Raspberry Pi

Define a static IP address and Wi‑Fi credentials using Netplan.

For reliable communication between your development computer and the robot you may want to assign a static IP address and configure Wi‑Fi credentials. The Pi uses Netplan for network management. Edit the configuration and apply it, then verify connectivity.

bash
sudo nano /etc/netplan/50-cloud-init.yaml

Adjust the file to specify your network settings. For example:

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: false
      addresses: [192.168.1.42/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8,8.8.4.4]
  wifis:
    wlan0:
      dhcp4: true
      access-points:
        "YourSSID":
          password: "YourWiFiPassword"

Save the file and exit the editor.

bash
sudo netplan apply
bash
hostname -I
hostname
ping -c 3 google.com
5

Set ROS 2 name and namespace

Configure the robot’s ROS node namespace to avoid topic collisions.

To avoid conflicts when running multiple robots on the same network, you must assign a unique name and namespace to your robot. ROS 2 uses these to prefix all topics and nodes so that multiple robots can share the same network without collisions.

bash
# edit your profile
sudo nano ~/.profile
# add or update this line (replace n with your robot number)
export ROS_NAME=rcr00n
# save the file, then reload your profile
source ~/.profile
bash
sudo nano ~/env.list
# add or update this line (replace n with your robot number)
ROS_NAMESPACE=/rcr00n

If your micro‑ROS firmware initializes the node with a namespace, you must update the source code as well. Open the RosInterface.cpp file in the firmware directory and change the third argument of rclc_node_init_default to your robot’s name:

```bash {id:”namespace:edit-firmware”, test:false}
cd ~/repos/common_platform/firmware/closed_loop/
sudo nano RosInterface.cpp


In the file, find the line that looks similar to:

```cpp
rclc_node_init_default(&node, "micro_ros_arduino_node", "", &support);

Replace the empty string with your robot name (e.g. rcr00n):

rclc_node_init_default(&node, "micro_ros_arduino_node", "rcr00n", &support);

Save the file, then recompile and flash the firmware using the Teensy flashing procedure so the change takes effect.

Subscribe to our newsletter

The latest educational robotics news and articles, sent to your inbox weekly.