官网教程网址:
https://docs.ros.org/en/humble/Installation/Alternatives/Ubuntu-Development-Setup.html
具体过程及我安装过程中遇到的一些bug及解决方法:
- 设置语言:确保支持UTF-8
在命令行中执行:
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
- 添加ros2 apt仓库
先确保 Ubuntu Universe repository(Ubuntu软件库)可用,即在命令行执行:
sudo apt install software-properties-common
sudo add-apt-repository universe
用apt添加ROS 2 GPG key,即在命令行执行:
sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
把ros2的仓库添加到sources list,即在命令行执行:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
- 下载开发包和ros工具
命令行执行:
sudo apt update && sudo apt install -y \
python3-flake8-docstrings \
python3-pip \
python3-pytest-cov \
ros-dev-tools
根据ubuntu版本下载包(应该都是22.04 LTS及以上),命令行执行:
sudo apt install -y \
python3-flake8-blind-except \
python3-flake8-builtins \
python3-flake8-class-newline \
python3-flake8-comprehensions \
python3-flake8-deprecated \
python3-flake8-import-order \
python3-flake8-quotes \
python3-pytest-repeat \
python3-pytest-rerunfailures
- 获取ros2源码
先建好工作区,并cd:
mkdir -p ~/ros2_humble/src
cd ~/ros2_humble
根据自己想要的版本下载源码,这里是下载的humble,先下载repos:
vcs import --input https://raw.githubusercontent.com/ros2/ros2/humble/ros2.repos src
- 用rosdep来下载依赖
先更新apt:
sudo apt upgrade
初始化rosdep,并更新:
sudo rosdep init
rosdep update
用rosdep下载依赖:
rosdep install --from-paths src --ignore-src -y --skip-keys "fastcdr rti-connext-dds-6.0.1 urdfdom_headers"
- 用colcon来build源码
确保在工作区:
cd ~/ros2_humble/
build:
colcon build --symlink-install
- 设置环境
# 用你自己的shell替换 ".bash"
. ~/ros2_humble/install/local_setup.bash
运行实例
. ~/ros2_humble/install/local_setup.bash
ros2 run demo_nodes_cpp talker
再开一个终端:
. ~/ros2_humble/install/local_setup.bash
ros2 run demo_nodes_py listener
遇到的bug及解决方法
- 遇到最多的问题是,挂上vpn有时也连不上需要下东西的那几个网站.
上这个网站(https://sites.ipaddress.com/raw.githubusercontent.com/)查询对应的ip地址,然后添加到hosts文件:
sudo vi /etc/hosts
有的网站关联多个ip,挨个ping试试,用能ping通的那个ip就行了。
如果发现常用网站比如baidu.com ping不通,就在resolv.conf文件中添加谷歌的DNS服务器地址
sudo vi etc/resolv.conf
-
有时能访问网站,但下不了repos:
建议通过浏览器下好repos再移到工作区。 -
colcon build出错:
可能是rosdep没下好,rosdep那一步一定要成功。
也有可能提示你文件系统只读,这是文件系统出错后的保护机制,我这里是因为盘空间用完了,清出足够的空间就能build好。 -
stderr : SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
这是由于humble里面用的python setup版本比较低,降低setup版本即可。
先检查setup tool版本(要降到58.2.0):
如果高了,终端输入:
pip install setuptools==58.2.0
- 内存爆了:
可以降低使用的cpu core数量:
colcon build --parallel-workers 1 --cmake-args -DCMAKE_CXX_FLAGS="--param ggc-min-expand=20"
如果是使用的虚拟机(我的是wsl2),可以改wsl2配置文件:
Windows + R 键,
输入 %UserProfile% 并运行进入用户文件夹,
新建文件 .wslconfig,文件内容如下:
#.wslconfig
[wsl2]
memory=54G # 限制最大使用内存,不使用64G,是为了为Windows保存一些内存,不这么卡
swap=10G # 限制最大使用虚拟内存
# 限制最大使用cpu个数,如果不设置,默认是使用全部的核心
# processors=16
- 虽然添加了ros2的仓库,但还是建议添加国内的源(网上搜Ubuntu换源),会快很多。
最后
安装过程要耐心,我用了很长时间才弄好,中途经历多次断联、崩溃、重启。。。。。
(这是最后完整的源码build成功之后的截图)