Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Setcap/soem with rtt_ros2 #36

Open
gborghesan opened this issue Apr 29, 2021 · 0 comments
Open

Setcap/soem with rtt_ros2 #36

gborghesan opened this issue Apr 29, 2021 · 0 comments

Comments

@gborghesan
Copy link
Contributor

Dear all,
I was working to compile the soem master
I found that once you grant permissions to the deployer executable to use the raw packages (running the setcap.sh) i have problems if finding shared libraries.
to describe the issue, I will note down the steps.

first I grant the permissions to the deployer

sudo setcap cap_net_raw+ep `which deployer-$OROCOS_TARGET`

Then, I try in the deployer shell the following commands.

Deployer [S]> import("rtt_ros2")
 = true                

Deployer [S]> import("rtt_ros2_node")
17.346 [ ERROR  ][ComponentLoader::import(path_list)] could not load library '/home/gborghesan/orocos/foxy/lib/orocos/gnulinux/rtt_ros2_node/plugins/librtt_ros2_node_service-gnulinux.so': liblibstatistics_collector.so: cannot open shared object file: No such file or directory
17.347 [ ERROR  ][ComponentLoader::import(path_list)] Some found plugins could not be loaded !
17.348 [ ERROR  ][Logger] Exception raised while executing an operation : Some found plugins could not be loaded !
17.348 [ ERROR  ][Logger] in Deployer: unhandled exception in sent operation.
The command 'import("rtt_ros2_node")' caused a std::exception: 'Unable to complete the operation call. The called operation has thrown an exception' and could not be completed.
Deployer [X]> 

The file liblibstatistics_collector.so is in /opt/ros/foxy/lib.
A similar issue I got also with ROS1 integration, and i solved adding the path of ros shared libraries to ldconfig. using the same approach, I execute the following

cd /etc/ld.so.conf.d/
sudo touch ros2.conf
sudo sh -c 'echo "/opt/ros/foxy/lib/" > ros2.conf'
sudo ldconfig

Again in the deployer: using the same commands as before, I get

Deployer [S]> import("rtt_ros2")
 = true                

Deployer [S]> import("rtt_ros2_node")
7.054 [ ERROR  ][ComponentLoader::import(path_list)] failed to initialize rcl init options: failed to find shared library of rmw implementation. Searched rmw_fastrtps_cpp, at /tmp/binarydeb/ros-foxy-rmw-implementation-1.0.1/src/functions.cpp:54, at /tmp/binarydeb/ros-foxy-rcl-1.1.10/src/rcl/init_options.c:61
7.054 [ ERROR  ][Logger] Exception raised while executing an operation : Some found plugins could not be loaded !
7.054 [ ERROR  ][Logger] in Deployer: unhandled exception in sent operation.
The command 'import("rtt_ros2_node")' caused a std::exception: 'Unable to complete the operation call. The called operation has thrown an exception' and could not be completed.
Deployer [X]> 

The file librmw_fastrtps_cpp.so is in the same path. but it cannot be found.
The workaround (I think that it works, but not really tested) is to launch as sudo

sudo su
source /home/gborghesan/.bashrc
deployer

Do you have any insight on this?
I think this is related with
ros2/rcpputils#40

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant