All we know about using Steam Deck OLED (SDO) for ROS.
OLED does not support Ubuntu, at least none of the LTS versions from 16.04 to 22.04. After unsuccessful attempts of installing Ubuntu on SDO, we resolve to relying on the original SteamOS which is a modified Arch Linux system.
- Set a root password
passwd
- Disable read only file system
steamos-readonly disable
- Configue pacman
sudo pacman-key --init
sudo pacman-key --populate archlinux
- Trust all signiture This is a dangerous move but it seems there is no other way around (I am not an expert in Linux though). Without trust all package signitures, you can't use pacman to install anything. Just be careful with what you are installing.
This can be done by setting SigLevel
to TrustAll
in /etc/pacman.conf.
sudo sed 's/SigLevel.*/SigLevel = TrustAll/g;' /etc/pacman.conf
- (optional) Install VS code
sudo pacman -Sy code
- (optional) Install Yay The latest Yay (12.3.5 at the time of writing) does not work with SteamOS. Instead, we can use 12.3.1.
git clone https://aur.archlinux.org/yay.git
cd yay
git checkout 17f4503492f5070ebcca58743144773c89099dff
git show -s --format=%s HEAD # make sure it says 12.3.1
makepkg -si
- (optional) Boot straight into desktop
/usr/bin/steamos-session-select plasma-wayland-persistent
To reverse it
/usr/bin/steamos-session-select gamescope
You have at least two options to run ROS/ROS2 on SteamOS: 1. a native installation and 2. a stack envrionment using conda. We prefer the second approach as it is safe and flexible.
Warning: your milage may vary, especially after Arch linux and/or SteamOS update.
We have successfully installed ROS2 humble using yay:
yay ros2-humble -S
We have not had success with ROS1 noetic however.
Robostack is a bundling of ROS packages for various operating system using the conda package manager. It provides an easy approach to install ROS on non-natively supported OS, including SteamOS. Currently Robostack only support ROS1 noetic and ROS2 humble. Details can be found on their website.
First we need to install miniconda
mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh
Next, you can follow the steps on Robostack/GettingStarted. For sake of completion, I have included an example of installing ROS Noetic.
- Install mamba
conda install mamba -c conda-forge
- Create and configure a ROS environment
mamba create -n noetic_env
mamba activate noetic_env
# this adds the conda-forge channel to the new created environment configuration
conda config --env --add channels conda-forge
# and the robostack channel
conda config --env --add channels robostack-staging
# remove the defaults channel just in case, this might return an error if it is not in the list which is ok
conda config --env --remove channels defaults
- Install ROS noetic
mamba install ros-noetic-desktop
- Re-activate the environment to initialise ROS.
mamba deactivate
mamba activate noetic_env
That's it.
You need to first activate the envrionment.
mamba activate noetic_env
After this, you can source your workspace, export ROS_MASTER_URI etc., and use ROS commands as if you were using Ubuntu, e.g. roscore
, roslaunch
, etc. Graphics interfaces such as rviz
and rqt
also work well.
There are a limited number of packages that can be directly installed. You can find a list of packages on their website, e.g. Available Packages/ROS1 Noetic. Note that new packages will be added over time.
To install packages:
mamba install ros-noetic-velodyne
To update:
mamba update --all
You can also use catkin_make
to build and install any unlisted packages like what you do in Ubuntu.
Foxglove Studio is a visulisation tool that can be used instead of RVIZ and with the added benefit of not requiring any ROS installation or envrionment. Unless you plan to use the software in a large team with a lot of teamwise co-operation, it is free-of-charge.
The latest Foxglove package, at the time of writing, is outdated. To install the latest version (2.0.1):
mkdir foxglove-studio-bin
cd foxglove-studio-bin
wget https://raw.githubusercontent.com/ICE9-Robotics/ROS-for-Steam-Deck-OLED/main/files/pkgbuild_foxglove -O PKGBUILD
makepkg -si
Table of contents generated with markdown-toc