参考官方安装指导:
https://docs.ros.org/en/humble/Installation/Alternatives/Ubuntu-Development-Setup.html
ubuntu22.04对应的ROS2版本为ROS2 humble
下面是参考官方教程的安装过程.
语言环境须支持UTF-8
, 最好是英文环境.
首先运行
locale
可查看是否支持UTF-8
, 如需要, 可使用下面的命令安装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
首先确保已添加ubuntu universe
apt-cache policy | grep universe
查看是否包括这一行:
500 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 Packages
release v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=universe,b=amd64
如果没有上面这行,则添加universe软件源:
sudo apt install software-properties-common
sudo add-apt-repository universe
下面添加ROS 2源的GPG密钥
sudo apt update && sudo apt install curl gnupg lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
下面将repo添加到源列表中:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
sudo apt update && sudo apt install -y \
build-essential \
cmake \
git \
python3-colcon-common-extensions \
python3-flake8 \
python3-flake8-blind-except \
python3-flake8-builtins \
python3-flake8-class-newline \
python3-flake8-comprehensions \
python3-flake8-deprecated \
python3-flake8-docstrings \
python3-flake8-import-order \
python3-flake8-quotes \
python3-pip \
python3-pytest \
python3-pytest-cov \
python3-pytest-repeat \
python3-pytest-rerunfailures \
python3-rosdep \
python3-setuptools \
python3-vcstool \
wget
如果这里用apt安装时提示无法连接,问题不大,换源即可.
打开系统软件"软件和更新",在"ubuntu软件"一栏找到"下载自", 下拉选择其他站点,里面有很多腾讯华为阿里之类的源,改了之后,重新输入上面的命令,大概就没问题了.
创建工作区并下载所有repo:
mkdir -p ~/ros2_humble/src
cd ~/ros2_humble
wget https://raw.githubusercontent.com/ros2/ros2/humble/ros2.repos
vcs import src < ros2.repos
这里最后一个命令可能会报错, 这是因为网络原因. 有几种解决办法:
~/ros2_humble/ros2.repos
中的网址全部改为github的镜像网站如果成功,则会显示如下
.......................................................................................................
=== src/ament/ament_cmake (git) ===
Cloning into '.'...
=== src/ament/ament_index (git) ===
Cloning into '.'...
(下面略)
输入以下命令
sudo apt upgrade
sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src -y --skip-keys "fastcdr rti-connext-dds-6.0.1 urdfdom_headers"
运行rosdep update
时,有可能又会遇到前面的网络问题,(如果你比较惨,可能到这里已经牢牢记住raw.githubusercontent.com
这个URL了)解决方法同上.
运行最后一行命令之后,会自动安装许多东西,耐心等待.
首先要确保你的环境中没有其他安装的ROS2,保证在文件~/.bashrc
中没有
source /opt/ros/${ROS_DISTRO}/setup.bash
下一步就要开始build了,输入以下命令
cd ~/ros2_humble/
colcon build --symlink-install
这个过程会非常久,可以拿起手机,耐心等(摸)待(鱼),时不时抬头看一下没报错就行.
在这个过程中仍会出现网络问题,比如我这里就遇到了
CMake Error at ext-singleproducerconsumer-stamp/download-ext-singleproducerconsumer.cmake:170 (message):
Each download failed!
error: downloading 'https://github.com/cameron314/readerwriterqueue/archive/ef7dfbf553288064347d51b8ac335f1ca489032a.zip' failed
status_code: 28
status_string: "Timeout was reached"
log:
--- LOG BEGIN ---
Trying 20.205.243.166:443...
Connection timed out after 60001 milliseconds
Closing connection 0
但是不用慌, 再试一次可能就行了, 之前build好的包不会被重新build, 所以屡败屡战就好了.
通过配置脚本来配置环境
. ~/ros2_humble/install/local_setup.bash
在一个终端运行talker
. ~/ros2_humble/install/local_setup.bash
ros2 run demo_nodes_cpp talker
在另一个终端运行listener
. ~/ros2_humble/install/local_setup.bash
ros2 run demo_nodes_py listener
将可以看到talker发送信息,listener接收信息.
如果你不希望每次打开新的终端都要输入
. ~/ros2_humble/install/local_setup.bash
那么可以在~/.bashrc
文件中添加环境变量
打开该文件并在最后添加
. ~/ros2_humble/install/local_setup.bash
保存后在终端输入
source ~/.bashrc
即可.
下一步就是学习官方提供的教程和demo了:
https://docs.ros.org/en/humble/Tutorials.html
如果你是按照上面的步骤安装,所谓的"卸载"就只需要你打开终端时不运行setup文件(如果添加了环境变量,则删掉这一行)即可.这样你的环境和没有安装ROS2 humble是没有区别的.
如果你要删除,则直接把工作区的文件夹删掉就好了
rm -rf ~/ros2_humble