【问题标题】:How to distribute a ROS package without sharing the sources如何在不共享源的情况下分发 ROS 包
【发布时间】:2017-02-23 18:40:47
【问题描述】:

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

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

我知道 ROS 是一个开源项目,但我不能分享代码。

【问题讨论】:

    标签: package share ros software-distribution


    【解决方案1】:

    解决方案 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 工作区中创建除了通常的 /devel/build 之外的另一个文件夹 /install

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

     $ catkin_make -DCMAKE_INSTALL_PREFIX=path/to/folder install
    

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

    现在您已经有了/install 文件夹,只需压缩并发送它。

    现在,最重要的部分是将 install/setup.bash 添加到您的另一台机器.bashrc,否则 ROS 将找不到分布式包。

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

    更多信息请参见here

    解决方案 2:

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

    【讨论】:

    • 这样进入会不会和其他机器上已经设置的环境冲突?
    • 好吧,我认为只有在另一台机器上已经存在同一个包的情况下...
    • 如何在另一台机器上运行节点?没有包含节点的包,所以我不能使用 rosrun。它们都在安装文件夹中(抱歉回复晚了,现在才回来)
    • 我更新了答案!我认为这一步是理所当然的......干杯
    • 这个答案正是我想要的!谢谢你。看起来没有什么 CMake 不能做的:)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-25
      • 2020-01-05
      • 1970-01-01
      • 1970-01-01
      • 2011-04-10
      • 1970-01-01
      • 1970-01-01
      • 2023-01-30
      相关资源
      最近更新 更多