Ubuntu18.04 之 Docker、ROS Melodic 完整安装步骤

2,393 阅读4分钟

0、前言

为什么我会选择在Ubuntu上使用ROS?Ubuntu已经有20.04LTS发行版了,为什么我还要使用18版本?

因为ROS的首选开发平台是Ubuntu,而且ROS的每个版本都有一个推荐运行的Ubuntu版本。

所以,本教程只适合在 Ubuntu 18.04 系统上使用!!!

目录:

graph LR
id1(添加国内镜像源) --> id2(安装 Linux4.4 内核) --> id3(安装 Docker) --> id4(安装 ROS)

一、添加国内镜像源(Ubuntu 原镜像可能安装不成功,且速度较慢)

  1. 原文件备份

    sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

  2. 编辑源列表文件

    有没有注意到bionic频繁出现,这是Ubuntu不同版本的别名,Bionio Beaver(仿生海狸)代表 Ubuntu 18.04。

    #中科大镜像
    deb http://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
    deb http://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
    deb http://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
    deb http://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
    deb http://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
    deb-src http://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
    deb-src http://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
    deb-src http://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
    deb-src http://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
    deb-src http://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
    #清华镜像
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
    

    sudo apt-get update

二、安装Linux4.4内核

为了确保工控机联网,需要安装Linux4.4内核。

  1. 进入 home 目录

    cd ~/

  2. 安装Linux4.4内核

    sudo apt-get install linux-generic-lts-xenial

三、安装Docker

  1. 卸载旧版本

    sudo apt-get remove docker docker-engine docker.io containerd runc

  2. 安装软件包以允许 apt 通过 HTTPS 使用存储库

    sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

  3. 添加 Docker 的官方 GPG 密钥

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

  4. 验证现在是否拥有带有指纹的密钥

    sudo apt-key fingerprint 0EBFCD88

    验证指纹密钥.png

  5. 设置稳定的存储库

    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

    国内使用这个网址 download.docker.com/linux/ubunt… 下载速度会非常慢,用科学上网的方式能够提高下载速度;或者参考这个网站 www.runoob.com/docker/dock… 的方法,尝试替换为阿里云镜像(文中提到的其它镜像我没有试成功)。

  6. 更新apt包索引

    sudo apt-get update

  7. 安装最新版本的 Docker Engine-Community 和 containerd

    sudo apt-get install docker-ce docker-ce-cli containerd.io

  8. 运行”hello world“

    sudo docker run hello-world

  9. 添加”docker group“

    sudo groupadd docker(可能已经存在)

  10. 将用户添加到docker,使得普通用户也能使用docker命令

    sudo gpasswd -a ${USER} docker

  11. 增加“docker.sock”文件的权限:所有人皆可读写

    sudo chmod a+rw /var/run/docker.sock

  12. 重启服务

    sudo service docker restart

    sudo /etc/init.d/docker restart

  13. 切换当前会话到新 group

    newgrp - docker

  14. 安装“Git LFS”(这个是一个git对大文件的扩展支持)

    • curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash

    • sudo apt-get install -y git-lfs

  15. 最后,终端执行 docker images 就可以看到只有一行内容的docker镜像表格,这是我们运行”hello world“时生成的镜像

四、安装ROS

  1. 设置源

    sudo sh -c ' echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

    注:

    若下载速度缓慢,推荐选择国内的镜像源

    sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'

  2. 设置密钥

    sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

    注:

    若无法连接到密钥服务器,可以尝试替换上面命令中的 hkp://keyserver.ubuntu.com:80hkp://pgp.mit.edu:80

    或者,使用 curl 命令替换 apt-key 命令(这在使用代理服务器的情况下比较有用):

    curl -sSL 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654' | sudo apt-key add -

  3. 更新软件源

    sudo apt-get update

    注:

    如果报错出现

    Get:6 http://packages.ros.org/ros/ubuntu bionic InRelease [4,669 B]      
    Err:6 http://packages.ros.org/ros/ubuntu bionic InRelease        
    The following signatures couldn't be verified because the public key is not available: NO_PUBKEY F42ED6FBAB17C654
    

    解决方法:sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F42ED6FBAB17C654(F42ED6FBAB17C654 是上面的报错内容)

  4. 安装 ROS 的 Melodic 桌面完整版

    sudo apt-get install ros-melodic-desktop-full

  5. 初始化rosdep

    sudo rosdep init

    注:

    • 如果报错出现 “sudo: rosdep: command not found”

      解决方法:sudo apt-get install python-rosdep

    • 如果报错出现 “error: cannot download default sources list from: raw.githubusercontent.com/ros/rosdist… Website may be down.”

      解决方法:

      sudo vim /etc/hosts

      添加 185.199.108.133 raw.githubusercontent.com

      (如果仍然不行,请自行查看 raw.githubusercontent.com 的 ip 地址,将 185.199.108.133 替换掉)

    rosdep update

    注:

    如果出现如下这种错误,可以忽略(我继续往下执行,仍然可以安装成功) rosdep_update.png

  6. 配置 ROS 环境

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

    • source ~/.bashrc

    注:

    1. 我看到有些文章上面 echo 的路径是 /opt/ros/kinetic/setup.bash,但是在我的系统中没有“kinetic”文件夹,setup.bash 而是在文件夹“melodic”中

    2. 如果你使用的是 zsh,那么你需要将上述命令改为 echo "source /opt/ros/melodic/setup.zsh" >> ~/.zshrc && source ~/.zshrc

  7. 安装 rosinstall 和其它构建 ROS 包的依赖项(命令行工具 rosinstall 能够轻松地从一个命令下载许多 ROS 包的源树)

    sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential

  8. 查看已安装的 ROS 软件

    apt-cache search ros-melodic

  9. 检验是否安装成功

    在第一个终端执行 roscore

    在第二个终端执行 rosrun turtlesim turtlesim_node(弹出一个小乌龟窗口)

    在第三个终端执行 rosrun rqt_graph rqt_graph(查看节点信息)

    如果希望小海龟能移动,在第四个终端执行 rosrun turtlesim turtle_teleop_key(启动 turtlesim 的键盘控制节点 turtle_teleop_key)

    注:鼠标停留在当前终端,使用键盘的方向键控制小海龟的移动

五、附录

参考资料:

www.runoob.com/docker/dock… (Docker镜像加速)

www.cxyzjd.com/article/qq_… (Ubuntu安装ROS报错 sudo: rosdep:找不到命令)

wiki.ros.org/cn/melodic/… (在 Ubuntu 中安装 ROS Melodic)

bbs.huaweicloud.com/blogs/21287… (Ubuntu安装ROS系统)

wangxin1248.github.io/linux/2019/… (Ubuntu 18.04 安装 ROS)


文章来源: 掘金技术社区

作者:吴下一隅的阿麦

@ 版权归原作者所有,如需转载,请联系作者!