【ros/ros2】ros2 humble镜像制作过程中碰到的问题记录

本文记录了在Ubuntu20.04系统中构建ROS2Humble镜像时遇到的问题,包括Dockerfile设置时区、dockerbuild失败、安装ROS包错误、编译错误、rosdep初始化失败、依赖包下载失败等,并提供了相应的解决方法,如修改Dockerfile、使用vcs导入源码、安装缺失库、设置环境变量等。
摘要由CSDN通过智能技术生成

序言

  • ubuntu20.04 ros2 humble镜像构建碰到的一些问题记录

1. 避免手动设置时区

  • 在Dockerfile开头添加

    ARG DEBIAN_FRONTEND=noninteractive
    ENV TZ=Asia/Shanghai
    

2. docker build中间某一步失败了

  • 不用删除镜像从头开始。docker的build操作默认是基于缓存的,即修改Dockerfile后,build任务会快速略过你之前成功的步骤,从你修改的那一步之后的操作,都会重新运行
  • 如果你想每一次build都不基于之前的缓存,在build 命令加上 --no-cache=true 参数
  • 构建过程中会生成中间容器,在删除镜像前需先删除容器
  • 所以最好是将多条命令拆分到独立的RUN命令; 保证每次可不用重跑上一步的RUN命令

3. sudo apt install ros-humble-desktop安装报错 E: Unable to locate package ros-humble-desktop

  • 参考 ubuntu安装ros2 humble,通过vcs下载源码安装

    vcs import --input https://raw.githubusercontent.com/ros2/ros2/humble/ros2.repos src
    
  • 下载失败的话可以先尝试如下命令,最好挂VPN下载

    wget https://raw.githubusercontent.com/ros2/ros2/humble/ros2.repos
    
  • 如果还不行,可将github替换为kgithub进行下载

    wget https://raw.githubusercontent.com/ros2/ros2/humble/ros2.repos
    vim ros2.repos后输入
    :%s/github/kgithub完成替换,再执行
    vcs import --input ros2.repos src
    

    下载可能较慢,失败了就多执行几次

  • 如果提示:command vcs not found

    sudo apt-get install python3-vcstool
    

4. 编译ros2 humnble时报错

  • cound not found TinyXML2(missing: TINYXML2_LIBRARY TINYXML2_INCLUDE_DIR)

  • 安装依赖库后解决

    sudo apt install libtinyxml2-dev
    

5. sudo rosdep init失败

  • website may be down

  • 按照这篇文章解决:docker容器中安装ros melodic

  • 如果报错:找不到python2.7目录,原因:

    对于ubuntu20或更高版本,目录在python3/dist-packages/rosdep2
    

6. 下载依赖时失败:rosdep install --from-paths src --ignore-src -y --skip-keys "fastcdr rti-connext-dds-6.0.1 urdfdom_headers"执行失败

参考文章:ros2 humble安装

  • 安装依赖1:

直接拷贝命令安装依赖包就行了

  • 安装依赖2: 用apt install安装不了的3个包

需要从Gazebosim官网下载三个.deb文件,如下,注意~bionic前面是波浪线

7. 安装软件过程中报错:E: ubable to fetch some archives, maybe run apt-get update or try with --fix-missing?

  • apt-get install your_software --fix-missing
  • 或者 换软件源,如阿里云

8. 按照nvidia官网安装cuda后报错:errors were encountered while processing

  • 而且nvcc --version也显示 command not found
  • 按照该文章 cuda镜像找不到nvcc 添加cuda环境变量后正常显示

9. cudnn安装过程中没有/usr/local/cuda/include目录

  • ‘/usr/local/cuda/include’: no such file or directory

  • 直接拷贝到cuda11.1/include目录下

  • 或者创建cuda11.1的软链接:

    sudo ln -s cuda cuda11.1
    

10. 生成镜像推送过程中报错

  • user is unauthorized to upload to

  • 报错原因:本地登录信息已经过期,需要重新登录

  • 解决方法:docker logout your_repo_site ; docker login your_repo_site

11. 使用docker commit容器镜像过大问题

  • 原因:镜像层叠多了,镜像臃肿

  • 解决方法1:进到容器将镜像打包,导出,再import导入打包容器生成新镜像

    • 进入容器,在根目录下执行
    tar --exclude=/proc --exclude=/sys --exclude=base_img.tar -cvf base_img.tar .
    
    • 退出容器,将压缩后的镜像拷贝到本地
    docker cp [容器id]:/base_img.tar ./
    
    • import为新镜像
    cat img.tar | sudo docker import - your_image:tag
    

 


【参考文章】
ubuntu安装ros2 humble
源码安装ros2 humble
could not find tinyxml2
docker commit之后镜像变大解决方法1
docker commit之后镜像变大解决方法2
docker commit之后镜像变大解决方法3

created by shuaixio, 2023.06.03

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用提到了一个错误信息,该错误是由于找不到一个未定义的符号而导致的。具体来说,出现了一个名为"_ZN18base_local_planner12CostmapModelC1ERKN10costmap_2d9Costmap2DE"的未定义符号。这个错误可能是由于编译或链接过程问题引起的。 引用和提到了两个类似的错误信息,提示"gazebo-2"和"gazebo-1"进程已经意外终止,退出码为255。这种错误通常与Gazebo仿真器有关。 针对这些错误,你可以尝试以下解决办法: 1. 检查编译或构建过程是否有任何警告或错误。确保所有依赖项都正确安装并且版本兼容。 2. 检查您是否正确设置了环境变量,尤其是ROS相关的环境变量。确保路径设置正确。 3. 如果使用的是ROS包或库,请确保它们是最新版本,并查看相关文档以了解是否有已知的问题解决方案。 4. 如果问题与Gazebo仿真器有关,您可以尝试重新安装Gazebo或更新相关的软件包。 请注意,由于未提供更多关于问题的详细信息,上述解决方案仅供参考。具体的解决方案可能会因具体情况而异。建议根据实际情况继续调查并寻找更多的解决方案。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【已解决】/opt/ros/noetic/lib/xx: symbol lookup error: undefined symbol](https://blog.csdn.net/FRIGIDWINTER/article/details/128838376)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [运行Gazebo出现cmd /opt/ros/melodic/lib/gazebo_ros/gzserver类似错误](https://blog.csdn.net/m0_51309197/article/details/122643427)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值