On a Raspberry Pi 4, ROS Noetic should work on both Arm32 and Arm64 versions of Ubuntu 20.04 via a sudo apt install.
Some caveats: The raspicam_node from Ubiquity robots will only work on the Arm32 version. I am sharing my notes on installing a custom image for a Ubiquity Robotics Magni, but getting Noetic up on an RPI 4 seems to be realtively straight forward. The Arm64 Ubuntu supports a desktop-full install, and can run gazebo. The Arm32 Ubuntu 20.04 does not support 'full' so gazebo won't run on this version.
My notes below:
From ubiquity image 16.04
remove ros, disable magni-base.system, comment out last three lines of .bashrc
update upgrade to 18.04 and then 20.04 best to do this while not mounted in robot, connected directly with hdmi, keyboard/mouse – wired ethernet. I’ve had lots of difficulty with the pi 4 I am using losing wireless – this might be just a flakey Pi 4.
This also may involve removal of certain packages. After getting to 20.04 I needed to reinstall lubuntu-desktop and gdm3 (lightdm and sddm seemed to break after 20.04)
ubuntu-20.04.2-preinstalled-server-armhf+raspi.img.xz
starting from 20.04 image use u-boot to add bootdelay – 2 so can boot inserted into Magni
add gpu_mem=128 start_x=1 to config.txt to enable raspicam
some of these installs might be duplicates of already installed packages
22 sudo apt install mlocate
25 sudo apt install python-setuptools python3-setuptools
28 sudo apt install unzip
34 sudo apt install make
37 sudo apt install build-essential
ROS + catkin install via typical instructions, but note ros-noetic-desktop-full does not exist for the arm32 (armhf71) architecture
46 sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo -E apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt update
sudo apt install ros-noetic-desktop
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool
(note python3-rosdep NOT python3-rosdep2 !!!!!!!!!
source ros environment
sudo apt install ros-noetic-usb-cam*
sudo apt install net-tools
sudo apt install network-manager
sudo apt install ros-noetic-rosbridge*
sudo apt install python-is-python3
sudo apt install ros-noetic-tf2*
160 sudo apt install ros-noetic-teleop-twist*
vision, navigation image
Optional, probably not needed or already part of tf2*:
sudo apt-get install ros-noetic-velocity-controllers
sudo apt install ros-noetic-diff-drive-controller
sudo apt install ros-noetic-joint-state-controller
catkin
?sudo apt install chrony
????------optional---- suggest not using raspi-config on ubuntu------????
sudo dpkg -i /tmp/raspi-config_20200601_all.deb
10 sudo raspi-config install userland
????? may not need if already installed from 16.04 image ????
sudo snap install rpi-userland –edge
copy the userland/opt/vc from snap to opt/vc
(this installs the mmal libraries)
pigpiod is needed for pi_sonar
wget https://github.com/joan2937/pigpio/ar...
unzip master.zip
cd pigpio-master/
make
sudo make install
sudo rosdep init
rosdep update
catkin
mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/
$ catkin_make
72 git clone http://github.com/ubiquityrobotics/ub...
73 git clone http://github.com/ubiquityrobotics/ma...
74 git clone http://github.com/ubiquityrobotics ... (more)
When you say 'ros not working properly', what do you mean? Can you elaborate?
Per this tutorial, you can install the server version and then install gnome-3 desktop environment for the full desktop experience.