【发布时间】:2017-02-23 18:40:47
【问题描述】:
有没有办法在不共享源的情况下分发 ROS 包?
我只是希望用户能够在没有依赖问题的情况下运行 ROS 节点。
我知道 ROS 是一个开源项目,但我不能分享代码。
【问题讨论】:
标签: package share ros software-distribution
有没有办法在不共享源的情况下分发 ROS 包?
我只是希望用户能够在没有依赖问题的情况下运行 ROS 节点。
我知道 ROS 是一个开源项目,但我不能分享代码。
【问题讨论】:
标签: package share ros software-distribution
解决方案 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 的这一部分来完成。
【讨论】:
我无法用catkin_make install 或bloom 解决这个问题。幸运的是,我被允许共享工作空间所在的硬盘,所以我只需要从我的 .py 脚本创建 .pyc 文件并使其可执行。
【讨论】: