【docker/ros】docker容器中安装melodic-ros-core过程总结

序言
  • 问题:基于Dockerfile制作镜像,需要基于cuda的基础镜像,同时又希望使用ros基础镜像。一个思路是通过docker history --no-trunc=true imageId > image_dockerfile分别解析两个基础镜像的制作过程再整合到同一个Dockerfile,这种方法暂未尝试;第二种方式,先基于cuda基础镜像创建镜像,再安装ros然后通过docker commit生成镜像
  • 本文记录在docker容器中安装medolic-ros-core的过程
1. 安装前准备
  • ros的安装过程总体参考了 Ubuntu18.04安装Ros,这篇文章还是比较靠谱的,不过它安装的是ros-melodic-desktop-full

  • 开始安装前先下载rosdistro,下载地址:github rosdistro,如果github打不开,从下边的地址下载,地址来源:rosdistro下载安装,解决rosdep init失败的时候要用

    链接:https://pan.baidu.com/s/1ZjMcvqOvLRa_iTdXis8ufg 
    提取码:01e2
    
  • 补充介绍ros镜像相关:可在网站docker hub: ros查找不同的ros docker镜像版本,选择tag搜索想要的ros版本,如 melodic-ros-core,简单查了下,melodic-ros-base是在core版本基础上拓展得到的,额外安装了一些基础工具和库;点开镜像我们能看到它的镜像层image layer,可看到镜像构建的过程,在容器内安装ros-core时使用了其中的一些命令

2. 容器内安装melodic-ros-core

安装步骤如下

2.1 更新镜像地址和keys

echo "deb http://packages.ros.org/ros/ubuntu bionic main" > /etc/apt/sources.list.d/ros1-latest.list
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

2.2 软件更新并安装ros-core

apt-get update && apt-get install --no-install-recommends ros-melodic-ros-core=1.4.1-0*

安装过程需要输入时区,选择6 Asia 和 70 Shanghai继续安装

2.3 设置环境变量

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc && source ~/.bashrc

2.4 安装库依赖

apt install -y python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential

2.5 rosdep初始化

rosdep init

如果报错:ERROR: cannot download default sources list from
【docker/ros】docker容器中安装melodic-ros-core过程总结_第1张图片
按照如下方式解决:

(1) 将下载好的rosdistro包放到容器内,如 /home/ 目录下,文件/文件夹拷贝命令

docker cp rosdistro containerId:/home

(2) 拷贝后文件路径为 /home/rosdistro,修改目录下rosdep/sources.list.d/20-default.list文件,替换其中的地址为本地文件地址

vim /home/rosdistro/rosdep/sources.list.d/20-default.list

修改后如下
【docker/ros】docker容器中安装melodic-ros-core过程总结_第2张图片
(3) 修改/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py文件中的DEFAULT_SOURCES_LIST_URL

vim /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py

修改后如下
【docker/ros】docker容器中安装melodic-ros-core过程总结_第3张图片

(4) 修改/usr/lib/python2.7/dist-packages/rosdep2/rep3.py文件中的REP3_TARGETS_URL

vim /usr/lib/python2.7/dist-packages/rosdep2/rep3.py

修改后如下
【docker/ros】docker容器中安装melodic-ros-core过程总结_第4张图片
(5) 修改/usr/lib/python2.7/dist-packages/rosdistro/__init__.py文件中的DEFAULT_INDEX_URL

vim /usr/lib/python2.7/dist-packages/rosdistro/__init__.py

修改后如下
【docker/ros】docker容器中安装melodic-ros-core过程总结_第5张图片
(6) 然后再执行rosdep init或sudo rosdep init

执行成功的界面如下
【docker/ros】docker容器中安装melodic-ros-core过程总结_第6张图片

2.6 rosdep更新

rosdep update

执行成功的界面如下
【docker/ros】docker容器中安装melodic-ros-core过程总结_第7张图片

2.7 清理安装残留

apt-get autoclean -y && apt-get autoremove -y && rm -rf /var/lib/apt/lists/*

至此就完成了容器内melodic-ros-core的安装,执行roscore测试一下。如果安装过程中有碰到其他问题,欢迎留言讨论

 


参考文章:

docker hub ros镜像层
ubuntu18.04安装ros
下载rosdistro
解决rosdep init参考
ros base对比ros core

created by shuaixio, 2022.06.18

你可能感兴趣的:(Docker,ros/ros2系统,ros-melodic,docker,镜像构建,ros-core安装)