Hi,
So I ran into this problem …
Pi4 + Ubuntu 18.04 (32-bit) + Melodic installs just fine, but I2C buses 3,4,5,6 cannot be created, they don’t work.
Pi4 + Ubuntu 20.04 (64-bit) + I2C buses 3,4,5,6 work just fine, but ROS Noetic doesn’t install on it via the official instructions.
$ sudo apt install ros-noetic-desktop
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
ros-noetic-desktop : Depends: ros-noetic-common-tutorials but it is not going to be installed
Depends: ros-noetic-geometry-tutorials but it is not going to be installed
Depends: ros-noetic-joint-state-publisher-gui but it is not going to be installed
Depends: ros-noetic-robot but it is not going to be installed
Depends: ros-noetic-ros-tutorials but it is not going to be installed
Depends: ros-noetic-urdf-tutorial but it is not going to be installed
Depends: ros-noetic-visualization-tutorials but it is not going to be installed
Depends: ros-noetic-viz but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
$ sudo apt install ros-noetic-rviz
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
ros-noetic-rviz : Depends: libassimp4 but it is not installable
Depends: libpocofoundation60 but it is not installable
Depends: libpython3.7 (>= 3.7.0) but it is not installable
Depends: ros-noetic-image-transport but it is not going to be installed
Depends: ros-noetic-interactive-markers but it is not going to be installed
Depends: ros-noetic-laser-geometry but it is not going to be installed
Depends: ros-noetic-pluginlib but it is not going to be installed
Depends: ros-noetic-resource-retriever but it is not going to be installed
Depends: ros-noetic-rosbag but it is not going to be installed
Depends: ros-noetic-roslib but it is not going to be installed
Depends: ros-noetic-rospy but it is not going to be installed
Depends: ros-noetic-tf2-geometry-msgs but it is not going to be installed
Depends: ros-noetic-tf2-ros but it is not going to be installed
Depends: ros-noetic-urdf but it is not going to be installed
For some reason the system (default Ubuntu 20.04 mind you) has decided in its veto powers that this stuff is just “not going to be installed”.
Unfortunately most robots need I2C clock stretching, so it’s not good that today one has to choose between ROS or clock stretching but not both.
The only solution I could find was to use 20.04, get my I2C buses 3,4,5,6 which support clock stretching, and then compile ROS Noetic from sources using these instructions. It took about 4 hours.
Is there any way we can please make the default ROS Noetic deb install instructions work on Pi 4 Ubuntu 20.04, both 32- and 64-bit? Sorry for the bluntness but I’m just wondering if we can simplify this – I feel like the instructions on the official ROS page should work and they don’t … this can be a major headache for newcomers to the industry who aren’t used dealing with compiling things from scratch and resolving all the dependencies for it. Especially considering Pi is probably hands-down the most popular experimentation platform for mobile robots today.
So what does aptitude say is blocking installation?
We’ve seen this question come up on ROS Answers a few times now, and in most cases it was a dependency which was already present at a newer version than the ROS packages required (either from a PPA, a backports repository or simply due to update cadence differences between ROS and Ubuntu).
ROS Discourse is for news and general interest discussions. ROS Answers provides a Q&A site which can be filtered by tags to make sure the relevant people can find and/or answer the question, and not overload everyone with hundreds of posts.
To help you when you ask your question on answers.ros.org I have a few tips to include in your question.
As mentioned by @gavanderhoorn it is likely a conflict or issue with another package that you have already installed or partially installed on your system. You will want to dig into the apt errors to find out what the actual issue is under the hood. Aptitude gives a better debug info. And you can also turn on better debugging with the option –o Debug::pkgProblemresolver=yes
Please make sure to include these debugging outputs and the full instructions for how you’ve setup your system such that it might be reproduced. And also make sure that you have universe and multiverse enabled too as that can cause missing dependencies too (from 1.1 in the instructions). Different images come with different options enabled by default, mine didn’t need it because it was already enabled.
Noetic can be installed via apt on both ARM32 and ARM64 versions of Ubuntu 20.04 for the Pi 4 or 3 with the following limitations:
On ARM32, only ros-noetic-desktop is available via apt. Also it is possible to run the Ubiquity Robotics raspicam_node on this version, if the V4L2 drivers are installed. These typically go into /opt/vlc
On the ARM64 version, while desktop-full can be installed, I have not attempted to build or use Gazebo on this platform, and I don’t know if it is possible.
Both ARM32 and ARM64 can support a desktop, I have used Lubuntu along with the gdm3 manager.
Agreed, honestly, I don’t think this problem should be ignored and sent to answers.ros.org (which honestly nobody reads) and this isn’t really a request for help, as I have my system working fully by compiling ROS.
However fact of the matter is (a) I tried the instructions on a vanilla freshly installed 20.04 64-bit system, had multiverse and universe both enabled, so something is obvisouly different from @Alan’s configuration and if it’s a 32/64-bit issue I don’t think “don’t use 64-bit” should be the right answer either, since 64-bit is, well, you know, better.
I’m merely calling for more attention to be placed on what is probably the most popular single board computer on the planet, especially for robots, and I’d really like to hope that we as a community can get together and figure out how to make sure it’s a painless experience on that platform.
As a relative NOOB to ROS/ROS2, my experience with getting intelligent responses on answers.ros.org has been extremely positive.
In June, I started my “learn ROS2” with ROS2 Foxy on Ubuntu 20.04 64-bit server on Raspberry Pi 3B+ on GoPiGo3 journey by building ROS2bot “Dave” and migrating the examples from the ROS1 book “Hands On ROS For Robotics Programming”, B. Japon, to ROS2.
Every step so far has been an uncharted challenge with much more learned than the intended syllabus of the book. Yes, it has perhaps been “harder than it should be”, but then again perhaps it has been “hard, as it really is.” I spent fifty years programming everything from discrete component controllers to internationally distributed hot-standby room size systems. All I ever heard was “It shouldn’t be hard to do x”, (“One SMOP” - small matter of programming).
There is a follower path, a leader path, and an explorer path. When us Raspberry Pi folk start asking why is this so hard, the leaders might ask “why aren’t you following the tier 1 path?”, or the tier 2 at least. ROS might have been around long enough for some to think of it as mature, but computer hardware, operating systems, and ROS are changing at a phenomenal pace.
We just need patience, and keep sharing our challenges and solutions.
Hi, okay, misunderstood, thanks! Here’s the output from aptitude, although it might be influenced by me manually compiling ROS.
$ sudo aptitude install ros-noetic-desktop
The following NEW packages will be installed:
libboost-program-options1.67.0{a} libboost-python1.67.0{a} ros-noetic-actionlib{a} ros-noetic-actionlib-msgs{a} ros-noetic-actionlib-tutorials{a}
ros-noetic-angles{a} ros-noetic-bond{a} ros-noetic-bond-core{a} ros-noetic-bondcpp{a} ros-noetic-bondpy{a} ros-noetic-catkin{a}
ros-noetic-class-loader{ab} ros-noetic-cmake-modules{a} ros-noetic-common-msgs{a} ros-noetic-common-tutorials{a} ros-noetic-control-msgs{a}
ros-noetic-cv-bridge{ab} ros-noetic-desktop ros-noetic-diagnostic-aggregator{ab} ros-noetic-diagnostic-analysis{a}
ros-noetic-diagnostic-common-diagnostics{a} ros-noetic-diagnostic-msgs{a} ros-noetic-diagnostic-updater{a} ros-noetic-diagnostics{a}
ros-noetic-dynamic-reconfigure{a} ros-noetic-eigen-conversions{a} ros-noetic-executive-smach{a} ros-noetic-filters{ab} ros-noetic-gencpp{a}
ros-noetic-geneus{a} ros-noetic-genlisp{a} ros-noetic-genmsg{a} ros-noetic-gennodejs{a} ros-noetic-genpy{a} ros-noetic-geometry{a}
ros-noetic-geometry-msgs{a} ros-noetic-geometry-tutorials{a} ros-noetic-gl-dependency{a} ros-noetic-image-transport{ab}
ros-noetic-interactive-marker-tutorials{a} ros-noetic-interactive-markers{a} ros-noetic-joint-state-publisher{a}
ros-noetic-joint-state-publisher-gui{a} ros-noetic-kdl-conversions{a} ros-noetic-kdl-parser{ab} ros-noetic-laser-geometry{a}
ros-noetic-librviz-tutorial{ab} ros-noetic-map-msgs{a} ros-noetic-media-export{a} ros-noetic-message-filters{a} ros-noetic-message-generation{a}
ros-noetic-message-runtime{a} ros-noetic-mk{a} ros-noetic-nav-msgs{a} ros-noetic-nodelet{ab} ros-noetic-nodelet-core{a}
ros-noetic-nodelet-topic-tools{a} ros-noetic-nodelet-tutorial-math{ab} ros-noetic-pluginlib{a} ros-noetic-pluginlib-tutorials{ab}
ros-noetic-python-qt-binding{a} ros-noetic-qt-dotgraph{a} ros-noetic-qt-gui{a} ros-noetic-qt-gui-cpp{ab} ros-noetic-qt-gui-py-common{a}
ros-noetic-qwt-dependency{a} ros-noetic-resource-retriever{ab} ros-noetic-robot{a} ros-noetic-robot-state-publisher{ab} ros-noetic-ros{a}
ros-noetic-ros-base{a} ros-noetic-ros-comm{a} ros-noetic-ros-core{a} ros-noetic-ros-environment{a} ros-noetic-ros-tutorials{a} ros-noetic-rosbag{ab}
ros-noetic-rosbag-migration-rule{a} ros-noetic-rosbag-storage{ab} ros-noetic-rosbash{a} ros-noetic-rosboost-cfg{a} ros-noetic-rosbuild{a}
ros-noetic-rosclean{a} ros-noetic-rosconsole{a} ros-noetic-rosconsole-bridge{a} ros-noetic-roscpp{a} ros-noetic-roscpp-core{a}
ros-noetic-roscpp-tutorials{a} ros-noetic-roscreate{a} ros-noetic-rosgraph{a} ros-noetic-rosgraph-msgs{a} ros-noetic-roslang{a} ros-noetic-roslaunch{a}
ros-noetic-roslib{ab} ros-noetic-roslint{a} ros-noetic-roslisp{a} ros-noetic-roslz4{ab} ros-noetic-rosmake{a} ros-noetic-rosmaster{a}
ros-noetic-rosmsg{a} ros-noetic-rosnode{a} ros-noetic-rosout{a} ros-noetic-rospack{ab} ros-noetic-rosparam{a} ros-noetic-rospy{a}
ros-noetic-rospy-tutorials{a} ros-noetic-rosservice{a} ros-noetic-rostest{a} ros-noetic-rostopic{a} ros-noetic-rosunit{a} ros-noetic-roswtf{a}
ros-noetic-rqt-action{a} ros-noetic-rqt-bag{a} ros-noetic-rqt-bag-plugins{a} ros-noetic-rqt-common-plugins{a} ros-noetic-rqt-console{a}
ros-noetic-rqt-dep{a} ros-noetic-rqt-graph{a} ros-noetic-rqt-gui{a} ros-noetic-rqt-gui-cpp{ab} ros-noetic-rqt-gui-py{a} ros-noetic-rqt-image-view{ab}
ros-noetic-rqt-launch{a} ros-noetic-rqt-logger-level{a} ros-noetic-rqt-moveit{a} ros-noetic-rqt-msg{a} ros-noetic-rqt-nav-view{a}
ros-noetic-rqt-plot{a} ros-noetic-rqt-pose-view{a} ros-noetic-rqt-publisher{a} ros-noetic-rqt-py-common{a} ros-noetic-rqt-py-console{a}
ros-noetic-rqt-reconfigure{a} ros-noetic-rqt-robot-dashboard{a} ros-noetic-rqt-robot-monitor{a} ros-noetic-rqt-robot-plugins{a}
ros-noetic-rqt-robot-steering{a} ros-noetic-rqt-runtime-monitor{a} ros-noetic-rqt-rviz{ab} ros-noetic-rqt-service-caller{a} ros-noetic-rqt-shell{a}
ros-noetic-rqt-srv{a} ros-noetic-rqt-tf-tree{a} ros-noetic-rqt-top{a} ros-noetic-rqt-topic{a} ros-noetic-rqt-web{a} ros-noetic-rviz{ab}
ros-noetic-rviz-plugin-tutorials{ab} ros-noetic-rviz-python-tutorial{a} ros-noetic-self-test{a} ros-noetic-sensor-msgs{a} ros-noetic-shape-msgs{a}
ros-noetic-smach{a} ros-noetic-smach-msgs{a} ros-noetic-smach-ros{a} ros-noetic-smclib{a} ros-noetic-std-msgs{a} ros-noetic-std-srvs{a}
ros-noetic-stereo-msgs{a} ros-noetic-tf{a} ros-noetic-tf-conversions{a} ros-noetic-tf2{a} ros-noetic-tf2-geometry-msgs{a} ros-noetic-tf2-kdl{a}
ros-noetic-tf2-msgs{a} ros-noetic-tf2-py{ab} ros-noetic-tf2-ros{a} ros-noetic-topic-tools{a} ros-noetic-trajectory-msgs{a}
ros-noetic-turtle-actionlib{a} ros-noetic-turtle-tf{a} ros-noetic-turtle-tf2{a} ros-noetic-turtlesim{ab} ros-noetic-urdf{ab}
ros-noetic-urdf-parser-plugin{a} ros-noetic-urdf-tutorial{a} ros-noetic-visualization-marker-tutorials{a} ros-noetic-visualization-msgs{a}
ros-noetic-visualization-tutorials{a} ros-noetic-viz{a} ros-noetic-webkit-dependency{a} ros-noetic-xacro{a}
The following packages will be REMOVED:
python-catkin-pkg-modules{u} python-pyparsing{u} python-rosdistro-modules{u} python-rospkg-modules{u}
0 packages upgraded, 181 newly installed, 4 to remove and 79 not upgraded.
Need to get 14.0 MB of archives. After unpacking 76.9 MB will be used.
The following packages have unmet dependencies:
ros-noetic-nodelet : Depends: libpocofoundation60 which is a virtual package and is not provided by any available package
Depends: libpython3.7 (>= 3.7.0) which is a virtual package and is not provided by any available package
ros-noetic-qt-gui-cpp : Depends: libpocofoundation60 which is a virtual package and is not provided by any available package
Depends: libpython3.7 (>= 3.7.0) which is a virtual package and is not provided by any available package
ros-noetic-rviz : Depends: libassimp4 which is a virtual package and is not provided by any available package
Depends: libpocofoundation60 which is a virtual package and is not provided by any available package
Depends: libpython3.7 (>= 3.7.0) which is a virtual package and is not provided by any available package
ros-noetic-rosbag : Depends: libpocofoundation60 which is a virtual package and is not provided by any available package
Depends: libpython3.7 (>= 3.7.0) which is a virtual package and is not provided by any available package
ros-noetic-urdf : Depends: libpocofoundation60 which is a virtual package and is not provided by any available package
Depends: libpython3.7 (>= 3.7.0) which is a virtual package and is not provided by any available package
ros-noetic-tf2-py : Depends: libpython3.7 (>= 3.7.0) which is a virtual package and is not provided by any available package
ros-noetic-cv-bridge : Depends: libopencv-core3.2 which is a virtual package and is not provided by any available package
Depends: libopencv-imgcodecs3.2 which is a virtual package and is not provided by any available package
Depends: libopencv-imgproc3.2 which is a virtual package and is not provided by any available package
Depends: libpython3.7 (>= 3.7.0) which is a virtual package and is not provided by any available package
ros-noetic-roslib : Depends: libpython3.7 (>= 3.7.0) which is a virtual package and is not provided by any available package
ros-noetic-roslz4 : Depends: libpython3.7 (>= 3.7.0) which is a virtual package and is not provided by any available package
ros-noetic-rosbag-storage : Depends: libpocofoundation60 which is a virtual package and is not provided by any available package
Depends: libpython3.7 (>= 3.7.0) which is a virtual package and is not provided by any available package
ros-noetic-rospack : Depends: libpython3.7 (>= 3.7.0) which is a virtual package and is not provided by any available package
ros-noetic-filters : Depends: libpocofoundation60 which is a virtual package and is not provided by any available package
Depends: libpython3.7 (>= 3.7.0) which is a virtual package and is not provided by any available package
ros-noetic-rviz-plugin-tutorials : Depends: libpocofoundation60 which is a virtual package and is not provided by any available package
Depends: libpython3.7 (>= 3.7.0) which is a virtual package and is not provided by any available package
ros-noetic-rqt-rviz : Depends: libpocofoundation60 which is a virtual package and is not provided by any available package
Depends: libpython3.7 (>= 3.7.0) which is a virtual package and is not provided by any available package
ros-noetic-pluginlib-tutorials : Depends: libpocofoundation60 which is a virtual package and is not provided by any available package
Depends: libpython3.7 (>= 3.7.0) which is a virtual package and is not provided by any available package
ros-noetic-image-transport : Depends: libpocofoundation60 which is a virtual package and is not provided by any available package
Depends: libpython3.7 (>= 3.7.0) which is a virtual package and is not provided by any available package
ros-noetic-rqt-gui-cpp : Depends: libpocofoundation60 which is a virtual package and is not provided by any available package
Depends: libpython3.7 (>= 3.7.0) which is a virtual package and is not provided by any available package
ros-noetic-rqt-image-view : Depends: libopencv-core3.2 which is a virtual package and is not provided by any available package
Depends: libopencv-imgcodecs3.2 which is a virtual package and is not provided by any available package
Depends: libopencv-imgproc3.2 which is a virtual package and is not provided by any available package
Depends: libpocofoundation60 which is a virtual package and is not provided by any available package
Depends: libpython3.7 (>= 3.7.0) which is a virtual package and is not provided by any available package
ros-noetic-kdl-parser : Depends: libpocofoundation60 which is a virtual package and is not provided by any available package
Depends: libpython3.7 (>= 3.7.0) which is a virtual package and is not provided by any available package
ros-noetic-librviz-tutorial : Depends: libpocofoundation60 which is a virtual package and is not provided by any available package
Depends: libpython3.7 (>= 3.7.0) which is a virtual package and is not provided by any available package
ros-noetic-class-loader : Depends: libpocofoundation60 which is a virtual package and is not provided by any available package
ros-noetic-resource-retriever : Depends: libpython3.7 (>= 3.7.0) which is a virtual package and is not provided by any available package
ros-noetic-diagnostic-aggregator : Depends: libpocofoundation60 which is a virtual package and is not provided by any available package
Depends: libpython3.7 (>= 3.7.0) which is a virtual package and is not provided by any available package
ros-noetic-nodelet-tutorial-math : Depends: libpocofoundation60 which is a virtual package and is not provided by any available package
Depends: libpython3.7 (>= 3.7.0) which is a virtual package and is not provided by any available package
ros-noetic-robot-state-publisher : Depends: libpocofoundation60 which is a virtual package and is not provided by any available package
Depends: libpython3.7 (>= 3.7.0) which is a virtual package and is not provided by any available package
ros-noetic-turtlesim : Depends: libpython3.7 (>= 3.7.0) which is a virtual package and is not provided by any available package
The following actions will resolve these dependencies:
Keep the following packages at their current version:
1) ros-noetic-actionlib [Not Installed]
2) ros-noetic-actionlib-tutorials [Not Installed]
3) ros-noetic-bond-core [Not Installed]
4) ros-noetic-bondpy [Not Installed]
5) ros-noetic-class-loader [Not Installed]
6) ros-noetic-common-tutorials [Not Installed]
7) ros-noetic-cv-bridge [Not Installed]
8) ros-noetic-desktop [Not Installed]
9) ros-noetic-diagnostic-aggregator [Not Installed]
10) ros-noetic-diagnostic-analysis [Not Installed]
11) ros-noetic-diagnostic-common-diagnostics [Not Installed]
12) ros-noetic-diagnostics [Not Installed]
13) ros-noetic-dynamic-reconfigure [Not Installed]
14) ros-noetic-executive-smach [Not Installed]
15) ros-noetic-filters [Not Installed]
16) ros-noetic-geometry [Not Installed]
17) ros-noetic-geometry-tutorials [Not Installed]
18) ros-noetic-image-transport [Not Installed]
19) ros-noetic-interactive-marker-tutorials [Not Installed]
20) ros-noetic-interactive-markers [Not Installed]
21) ros-noetic-joint-state-publisher [Not Installed]
22) ros-noetic-joint-state-publisher-gui [Not Installed]
23) ros-noetic-kdl-parser [Not Installed]
24) ros-noetic-laser-geometry [Not Installed]
25) ros-noetic-librviz-tutorial [Not Installed]
26) ros-noetic-mk [Not Installed]
27) ros-noetic-nodelet [Not Installed]
28) ros-noetic-nodelet-core [Not Installed]
29) ros-noetic-nodelet-topic-tools [Not Installed]
30) ros-noetic-nodelet-tutorial-math [Not Installed]
31) ros-noetic-pluginlib [Not Installed]
32) ros-noetic-pluginlib-tutorials [Not Installed]
33) ros-noetic-qt-gui-cpp [Not Installed]
34) ros-noetic-resource-retriever [Not Installed]
35) ros-noetic-robot [Not Installed]
36) ros-noetic-robot-state-publisher [Not Installed]
37) ros-noetic-ros [Not Installed]
38) ros-noetic-ros-base [Not Installed]
39) ros-noetic-ros-comm [Not Installed]
40) ros-noetic-ros-core [Not Installed]
41) ros-noetic-ros-tutorials [Not Installed]
42) ros-noetic-rosbag [Not Installed]
43) ros-noetic-rosbag-storage [Not Installed]
44) ros-noetic-rosbash [Not Installed]
45) ros-noetic-roscreate [Not Installed]
46) ros-noetic-roslaunch [Not Installed]
47) ros-noetic-roslib [Not Installed]
48) ros-noetic-roslisp [Not Installed]
49) ros-noetic-roslz4 [Not Installed]
50) ros-noetic-rosmsg [Not Installed]
51) ros-noetic-rosnode [Not Installed]
52) ros-noetic-rospack [Not Installed]
53) ros-noetic-rospy [Not Installed]
54) ros-noetic-rospy-tutorials [Not Installed]
55) ros-noetic-rosservice [Not Installed]
56) ros-noetic-rostest [Not Installed]
57) ros-noetic-rostopic [Not Installed]
58) ros-noetic-rosunit [Not Installed]
59) ros-noetic-roswtf [Not Installed]
60) ros-noetic-rqt-action [Not Installed]
61) ros-noetic-rqt-bag [Not Installed]
62) ros-noetic-rqt-bag-plugins [Not Installed]
63) ros-noetic-rqt-common-plugins [Not Installed]
64) ros-noetic-rqt-console [Not Installed]
65) ros-noetic-rqt-dep [Not Installed]
66) ros-noetic-rqt-graph [Not Installed]
67) ros-noetic-rqt-gui [Not Installed]
68) ros-noetic-rqt-gui-cpp [Not Installed]
69) ros-noetic-rqt-gui-py [Not Installed]
70) ros-noetic-rqt-image-view [Not Installed]
71) ros-noetic-rqt-launch [Not Installed]
72) ros-noetic-rqt-logger-level [Not Installed]
73) ros-noetic-rqt-moveit [Not Installed]
74) ros-noetic-rqt-msg [Not Installed]
75) ros-noetic-rqt-nav-view [Not Installed]
76) ros-noetic-rqt-plot [Not Installed]
77) ros-noetic-rqt-pose-view [Not Installed]
78) ros-noetic-rqt-publisher [Not Installed]
79) ros-noetic-rqt-py-common [Not Installed]
80) ros-noetic-rqt-py-console [Not Installed]
81) ros-noetic-rqt-reconfigure [Not Installed]
82) ros-noetic-rqt-robot-dashboard [Not Installed]
83) ros-noetic-rqt-robot-monitor [Not Installed]
84) ros-noetic-rqt-robot-plugins [Not Installed]
85) ros-noetic-rqt-robot-steering [Not Installed]
86) ros-noetic-rqt-runtime-monitor [Not Installed]
87) ros-noetic-rqt-rviz [Not Installed]
88) ros-noetic-rqt-service-caller [Not Installed]
89) ros-noetic-rqt-shell [Not Installed]
90) ros-noetic-rqt-srv [Not Installed]
91) ros-noetic-rqt-tf-tree [Not Installed]
92) ros-noetic-rqt-top [Not Installed]
93) ros-noetic-rqt-topic [Not Installed]
94) ros-noetic-rqt-web [Not Installed]
95) ros-noetic-rviz [Not Installed]
96) ros-noetic-rviz-plugin-tutorials [Not Installed]
97) ros-noetic-rviz-python-tutorial [Not Installed]
98) ros-noetic-smach-ros [Not Installed]
99) ros-noetic-tf [Not Installed]
100) ros-noetic-tf-conversions [Not Installed]
101) ros-noetic-tf2-geometry-msgs [Not Installed]
102) ros-noetic-tf2-kdl [Not Installed]
103) ros-noetic-tf2-py [Not Installed]
104) ros-noetic-tf2-ros [Not Installed]
105) ros-noetic-turtle-actionlib [Not Installed]
106) ros-noetic-turtle-tf [Not Installed]
107) ros-noetic-turtle-tf2 [Not Installed]
108) ros-noetic-turtlesim [Not Installed]
109) ros-noetic-urdf [Not Installed]
110) ros-noetic-urdf-tutorial [Not Installed]
111) ros-noetic-visualization-tutorials [Not Installed]
112) ros-noetic-viz [Not Installed]
113) ros-noetic-xacro [Not Installed]
Accept this solution? [Y/n/q/?]
Additionally it seems it depends on libpython3.7 which doesn’t exist in 20.04
$ sudo apt install libpython3.7
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package libpython3.7 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'libpython3.7' has no installation candidate
$ sudo apt install libpython3.7-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package libpython3.7-dev
E: Couldn't find any package by glob 'libpython3.7-dev'
However libpython3.8 exists:
$ sudo apt install libpython3.8
Reading package lists... Done
Building dependency tree
Reading state information... Done
libpython3.8 is already the newest version (3.8.10-0ubuntu1~20.04).
libpython3.8 set to manually installed.
Maybe the ros dependency should accept either libpython>=3.7 instead of libpython==3.7?
I totally agree that running Noetic on a Pi is hard, my focus has been running on a headless version on a mobile robot, and doing development on a more powerful workstation. I hear your pain, getting Noetic working on robots with a Pi 4 took several months and was often a game of pin the tail on the missing dependencies. This also involved resolving Python2, Python3 issues, which mostly consisted of putting print ().
FYI, Ubiquity Robotics is about to release an image for Pi 4, this will be ubuntu ARM32 20.04 Noetic with support for the Pi camera.
I will say that the ARM64 Ubuntu plus Noetic seemed to work well, except for Pi cam support. I’ve always maintained that ROS does not have a learning curve, It has a learning ‘cliff.’
Very thankful to Ubiquity for helping with ROS on SBC. After many unsuccessful attempts this was the only life saver on Pi 3B+. Planning to get Pi-4 and really happy to see these guys are still providing support. May need to buy their basic kit as a token of thanks.