ROS on Pi 4 is harder than it should be

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).

1 Like

Thanks for your question. As suggested by @gavanderhoorn, we ask that you please ask questions on http://answers.ros.org following our support guidelines: Support - ROS Wiki

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.

I have validated that the installation of ros-noetic-rviz works on 20.04 arm64 if you follow our standard installation instructions: noetic/Installation/Ubuntu - ROS Wiki Here’s my installation validation console log

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.

2 Likes

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.

2 Likes

This tons of missing packages has driven me crazy… I spent days, still couldn’t get it right.

my latest problem is

pi@raspberrypi:~/catkin_ws $ rosdep install --from-paths src --ignore-src -r -y
executing command [sudo -H apt-get install -y ros-noetic-cv-bridge]
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package ros-noetic-cv-bridge
executing command [sudo -H apt-get install -y ros-noetic-sensor-msgs]
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package ros-noetic-sensor-msgs
ERROR: the following rosdeps failed to install
  apt: command [sudo -H apt-get install -y ros-noetic-cv-bridge] failed
  apt: command [sudo -H apt-get install -y ros-noetic-sensor-msgs] failed
  apt: Failed to detect successful installation of [ros-noetic-cv-bridge]
  apt: Failed to detect successful installation of [ros-noetic-sensor-msgs]

almost want to give up on this.
my problem might be related to armhf. oh God…

1 Like

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.

No one is telling you 64bit shouldn’t be used.

@tfoote seems to ask for instructions on how to reproduce your issue, as if it can’t be reproduced, no one can help you.

Me asking you what aptitude reported is also a way of getting more information about your system.

Reporting problems is +100. But without providing more information when asked, they can’t be diagnosed.

That I can agree with: "Please post this on ROS Answers instead"

/me 3200+ answers later … :man_shrugging:

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.

5 Likes

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 just checked, and Noetic Python packages for arm64 depend on libpython3.8 (>= 3.8.2), so I’m not exactly sure where yours are coming from.

As @tfoote requested: please post on ROS Answers. There’s no point in spamming 8000+ Discourse users with the progress of your diagnostic session.


Edit: focal packages depend on libpython3.8 (>= 3.8.2). buster packages depend on libpython3.7 (>= 3.7.0).

Are you sure you installed the right OS? And setup your apt sources correctly?

2 Likes

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.’

Take a deep breath, hold your nose, and jump.

downloads.ubiquityrobotics.com

2 Likes

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.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.