如何在不共享源的情况下分发ROS包

时间:2016-10-14 10:49:07

标签: package share ros software-distribution

有没有办法在不共享源的情况下分发ROS包?

我只是希望用户能够在没有依赖性问题的情况下运行ROS节点。

我知道ROS是一个开源项目,但我不允许共享代码。

2 个答案:

答案 0 :(得分:10)

解决方案1:

在您的软件包CMakelists.txt中,添加安装指令。它是这样的:

install( TARGETS
    #list of nodes
    DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

install(TARGETS
    #list of shared libraries
    ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
    LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
)

install(FILES 
  #list of necessary files (xml...)
  DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
)

install(DIRECTORY 
  include/${PROJECT_NAME}/
  DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
  PATTERN ".svn" EXCLUDE
  PATTERN ".git" EXCLUDE
)

使用

 $ catkin_make 
 $ catkin_make install

您可以创建执行所需的二进制文件而无需共享代码。除了catkin工作区中的常用/install/devel之外,这还会创建另一个文件夹/build

注意:您可以使用以下命令指定安装文件夹:

 $ catkin_make -DCMAKE_INSTALL_PREFIX=path/to/folder install

在调用catkin_make时,只需确保the binaries need to be compiled for the correct architecture that the other computer has以及工作区中没有的任何依赖项,在使用之前还需要由其他部分安装。

现在您已拥有/install文件夹,只需zip&发送它。

现在,关键部分是将install / setup.bash添加到另一台机器.bashrc,否则ROS将找不到分布式pacakges。

$ echo "source ~/catkin_ws/install/setup.bash" >> ~/.bashrc

有关详细信息,请参阅here

解决方案2:

你可以生成一个deb-src,然后你可以编译它并分发.deb文件,在另一台机器上,你可以用dpkg -i安装它。这可以通过遵循the pre-release tutorial的这一部分来完成。

答案 1 :(得分:0)

我无法用catkin_make install或绽放来解决这个问题。幸运的是,我被允许共享工作空间所在的硬盘,因此我只需要从.py脚本创建.pyc文件并使其可执行。