Noetic

  1. 配置Ubuntu软件仓库

  2. 设置sources.list

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

    这里使用的为清华源,可自行替换合适的软件源。

  3. 设置密钥

    sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
    
  4. 开始安装

    sudo apt update
    sudo apt install ros-noetic-desktop-full
    
  5. 设置环境变量

    echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
    source ~/.bashrc
    
  6. 安装依赖

    sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
    
  7. 初始化 rosdep

    sudo rosdep init
    rosdep update
    

PS:在http://wiki.ros.org/cn/noetic/Installation/Ubuntu中,是没有最后两项的,但是在http://wiki.ros.org/noetic/Installation/Ubuntu中是有的,建议加上这两步。

Foxy

  1. 设置语言环境

    locale  # check for UTF-8
    
    sudo apt update && sudo apt install locales
    sudo locale-gen en_US en_US.UTF-8
    sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
    export LANG=en_US.UTF-8
    
    locale  # verify settings
    
  2. 设置软件源

    输入如下命令,下载 ROS 的 GPG Key:

    sudo apt install curl gnupg2
    sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key  -o /usr/share/keyrings/ros-archive-keyring.gpg
    

    再输入如下命令,添加软件仓库,并更新索引:

    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu focal main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
    sudo apt update
    
  3. 安装ROS2包

    sudo apt update
    sudo apt install ros-foxy-desktop
    
  4. 设置环境变量

    echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc
    source ~/.bashrc
    
  5. 安装依赖包

    sudo apt install python3-argcomplete ros-foxy-rmw* ros-foxy-ros1-bridge python3-colcon-common-extensions
    

环境变量

使用张瑞雷老师的bash脚本,开启bash时手动选择ROS版本 修改~/.bashrc如下

# ROS 1.0 Noetic or ROS 2.0 Foxy
echo ROS 1.0 or ROS 2.0? 1=Noetic 2=Foxy 
read ROS
if (($ROS==1));then
source /opt/ros/noetic/setup.bash
echo "Noetic"
elif (($ROS==2));then
source /opt/ros/foxy/setup.bash
echo "Foxy"
else
echo "Non-ROS"
fi