Hello,
I’m new to snaps and I would like to get some experience with it. Therefore, I’m trying to turn a Raspberry Pi into a small robot using ROS2.
I created the following snap to test on my laptop first (the complete code can be found here):
name: ros2-pibot-motor-fabolhak
version: '0.1'
summary: ROS2 Motor module for my PiBot
description: |
This package provides the hardware driver to the PiBots motor.
confinement: devmode
base: core18
parts:
ros2-motor-driver:
plugin: colcon
source: .
source-branch: master
colcon-rosdistro: dashing
colcon-source-space: pibot_motor
stage-packages: [ros-dashing-ros-core,python3-numpy,libatlas3-base,libblas3]
apps:
run:
command: opt/ros/dashing/bin/ros2 run ros2_pibot_motor service
plugs:
- network
- network-bind
architectures:
- build-on: amd64
It builds successfully, I can run it and send a service request to the ROS2 node successfully. However, it displays some error messages (see below) when starting the snap. For some reason numpy is not finding the libblas.so.3, although it is installed as a stage package.
ros@vm:~/Documents/ros2_ws/src/ros2_pibot_motor$ ros2-pibot-motor-fabolhak.run
Failed to load entry point 'info':
Importing the multiarray numpy extension module failed. Most
likely you are trying to import a failed build of numpy.
If you're working with a numpy git repo, try `git clean -xdf` (removes all
files not under version control). Otherwise reinstall numpy.
Original error was: libblas.so.3: cannot open shared object file: No such file or directory
Failed to load entry point 'list':
Importing the multiarray numpy extension module failed. Most
likely you are trying to import a failed build of numpy.
If you're working with a numpy git repo, try `git clean -xdf` (removes all
files not under version control). Otherwise reinstall numpy.
Original error was: libblas.so.3: cannot open shared object file: No such file or directory
Failed to load entry point 'send_goal':
Importing the multiarray numpy extension module failed. Most
likely you are trying to import a failed build of numpy.
If you're working with a numpy git repo, try `git clean -xdf` (removes all
files not under version control). Otherwise reinstall numpy.
Original error was: libblas.so.3: cannot open shared object file: No such file or directory
Failed to load entry point 'show':
Importing the multiarray numpy extension module failed. Most
likely you are trying to import a failed build of numpy.
If you're working with a numpy git repo, try `git clean -xdf` (removes all
files not under version control). Otherwise reinstall numpy.
Original error was: libblas.so.3: cannot open shared object file: No such file or directory
Failed to load entry point 'call':
Importing the multiarray numpy extension module failed. Most
likely you are trying to import a failed build of numpy.
If you're working with a numpy git repo, try `git clean -xdf` (removes all
files not under version control). Otherwise reinstall numpy.
Original error was: libblas.so.3: cannot open shared object file: No such file or directory
Failed to load entry point 'echo':
Importing the multiarray numpy extension module failed. Most
likely you are trying to import a failed build of numpy.
If you're working with a numpy git repo, try `git clean -xdf` (removes all
files not under version control). Otherwise reinstall numpy.
Original error was: libblas.so.3: cannot open shared object file: No such file or directory
Failed to load entry point 'pub':
Importing the multiarray numpy extension module failed. Most
likely you are trying to import a failed build of numpy.
If you're working with a numpy git repo, try `git clean -xdf` (removes all
files not under version control). Otherwise reinstall numpy.
Original error was: libblas.so.3: cannot open shared object file: No such file or directory
[INFO] [motor]: Trigger Motor!
The output of snappy-debug is:
~$ sudo snappy-debug
INFO: Following '/var/log/syslog'. If have dropped messages, use:
INFO: $ sudo journalctl --output=short --follow --all | sudo snappy-debug
kernel.printk_ratelimit = 0
= AppArmor =
Time: Sep 23 13:09:44
Log: apparmor="ALLOWED" operation="open" profile="snap.ros2-pibot-motor-fabolhak.run" name="/proc/2866/mounts" pid=2866 comm="python3" requested_mask="r" denied_mask="r" fsuid=1000 ouid=1000
File: /proc/2866/mounts (read)
Suggestions:
* adjust program to not access '@{PROC}/@{pid}/mounts'
* add one of 'mount-observe, network-control' to 'plugs'