有没有办法在不共享源的情况下分发ROS包?
我只是希望用户能够在没有依赖性问题的情况下运行ROS节点。
我知道ROS是一个开源项目,但我不允许共享代码。
答案 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文件并使其可执行。