bebop_autonomy
bebop_autonomy copied to clipboard
CMake install rules
Added rules to copy files necessary for running the module with "make install".
I need to put the module in a Docker container and therefore determine the files that need to be copied.
Thanks for the PR. Could you please rebase your changes on top of the new changes in indigo-devel
and also make sure that all CI tests are green?
Thank you for your reply, the rebase is now ready.
@adynathos Would it be possible to modify/rebase your changes on top of the current indigo-devel
. The driver now does not build the SDK inline anymore: #75
Ok so I have updated it to remove the references to ARSDK binaries.
But when I did catkin_make install
and copied the relevant directories to a docker container, the program failed to launch, complaining that it can't load libarcontroller.so
, which is obviously false, because the parrot_arsdk package was installed with apt-get.
[ERROR] [1479314212.605687907]: Failed to load nodelet [/bebop/bebop_driver] of type [bebop_driver/BebopDriverNodelet] even after refreshing the cache: Failed to load library /opt/ros/kinetic/lib//libbebop_driver_nodelet.so. Make sure that you are calling the PLUGINLIB_EXPORT_CLASS macro in the library code, and that names are consistent between this macro and your XML. Error string: Could not load library (Poco exception = libarcontroller.so: cannot open shared object file: No such file or directory)
ros_1 | [ERROR] [1479314212.605731564]: The error before refreshing the cache was: Failed to load library /opt/ros/kinetic/lib//libbebop_driver_nodelet.so. Make sure that you are calling the PLUGINLIB_EXPORT_CLASS macro in the library code, and that names are consistent between this macro and your XML. Error string: Could not load library (Poco exception = libarcontroller.so: cannot open shared object file: No such file or directory)
ros_1 | [FATAL] [1479314212.605768290]: bebop_driver nodelet failed to load.
I solved this by symlinking all .so
from /opt/ros/kinetic/lib/parrot_arsdk
to /opt/ros/kinetic/lib
in my container. When the symlinks are in /opt/ros/kinetic/lib
it can find the libraries.
I am not experienced with ROS library discovery mechanism to know why that is.
@adynathos
Thanks for rebasing your changes and your efforts on debugging it.
The problem might be on my side since the install rules for ardronelib
(as you correctly figured out) install the shared libraries into a sub-folder of /opt/ros/kinetic/lib
. The main rationale behind that decision was not to pollute the default ROS libraries folder with custom libcurl
and liblibressl
that is compiled as part of arsdk
. I will look into this issue more this weekend.
@adynathos I think I've found a workaround for runtime discovery of parrot_arsdk
libraries:
https://github.com/AutonomyLab/bebop_autonomy/commit/aef8a5d7127a59298668343942cfbebc84ec5330
Could you please test this solution? The change is applied on top of your proposed changes in the following branch:
https://github.com/AutonomyLab/bebop_autonomy/tree/adynathos-indigo-devel
Could you also please clarify what the commit 0464832c29f8cb1ccd1c77d6863c429b8e7a71b4 does?