如何在不保留源码的情况下运行ROS节点,缩减Docker镜像体积
问题解决步骤
- 修正构建流程,不要混用
catkin config和catkin_make,前者属于catkin_tools工具的命令,后者是ROS原生构建命令,混用会导致安装配置不生效。二选一执行正确的构建流程即可:
方案1:使用原生catkin_make构建安装版本
方案2:使用catkin_tools构建安装版本cd /home/ubuntu/catkin_ws rm -rf build devel install # 清理之前的错误构建产物 catkin_make -DCMAKE_INSTALL_PREFIX=./install catkin_make installcd /home/ubuntu/catkin_ws rm -rf build devel install catkin config --install catkin build - 验证包安装完整性,检查
install/lib/oxford_gps_eth/目录下是否存在gps_node可执行文件,如果不存在说明该包的CMakeLists.txt未配置安装规则,需要手动补充:
打开oxford_gps_eth包的CMakeLists.txt,添加如下规则后重新执行构建命令即可:install(TARGETS gps_node RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} ) install(DIRECTORY launch/ DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/launch ) - 启动节点前必须source安装目录的环境脚本,替换原来source devel空间的操作:
此时执行source /home/ubuntu/catkin_ws/install/setup.bashecho $ROS_PACKAGE_PATH可看到路径列表中包含/home/ubuntu/catkin_ws/install/share,不存在原src目录路径。 - 验证启动正常后,可直接删除src、build、devel三个目录,仅保留install目录即可,后续使用前只要source install目录下的setup.bash就能正常启动所有节点。
内容的提问来源于stack exchange,提问作者Zekarias Taye Hirpo
相关产品推荐
相关产品推荐

