Deploy ROS binary to systems without ROS installed?

asked 2019-11-21 09:41:51 -0600

Mayu gravatar image

I have a little working publisher node that I compile with catkin_simple and I need to make a deployable package that runs in other systems without ros installed.

Right now my CMakeLists.txt looks like this:

cmake_minimum_required(VERSION 3.13.4)
set (CMAKE_CXX_STANDARD 11)
project (test)
find_package(catkin_simple REQUIRED)
catkin_simple()
cs_add_executable(${PROJECT_NAME} 
    src/main.cpp 
)
cs_install()
cs_export()

Everything works fine on my machine, a install folder gets created and I have my binary there, run it, and everything works fine. However, when I move it to another machine without ROS installed, it doesn't work, it tries to search for the core ROS libraries in /opt/ros/kinetic/lib/ (That's also the path where I have ROS installed in my development machine) and it obviously can't find them.

Is there any way to create a compiled package with all the necessary dependencies to be able to run it even if the system doesn't have ROS installed?

Thank you all in advance

edit retag flag offensive close merge delete

Comments

1

Quick suggestion: look into containers (Docker, Singularity) or technologies like snap, flatpack or appimage.

gvdhoorn gravatar imagegvdhoorn ( 2019-11-21 09:46:14 -0600 )edit

It is the name ROS, so it is more like a wohle system not just a Programm.

Because then you have to name it ROP :-) But @gvdhoorn has the right answer for your problem

duck-development gravatar imageduck-development ( 2019-11-21 10:43:08 -0600 )edit