ros2humble源码编译 ubuntu系统
ros2 humble源码编译安装过程及报错解决
文章目录
前言
内容概括:
本篇文章记录了ros2 humble 在 ubuntu20.04上源码编译过程,以及报错问题解决。
ros2humble源码安装官方文档:源码安装文档地址
根据官方文档进行安装,并解决安装过程中会遇到的问题。
系统要求:
ubuntu 22.04 / ubuntu 20.04
大约20G磁盘空间(20G可以保证编译过程中磁盘不被占满)
有科学上网工具(连接外网,建议整个过程都打开)
第一步、设置locale
确保有一个支持UTF-8的区域设置。官方文档建议设置为英文'en',一般大家正常使用的都是中文'zh',避免后续出错最好按照指令设置为英文。
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 存储库
1.首先确保Ubuntu Universe存储库是启用的
sudo apt install software-properties-common
sudo add-apt-repository universe
2.添加ros2秘钥
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
在执行 sudo apt update时如果有报错,需要手动修改(换源或者把报错的源注释掉)一下系统源 /etc/apt/sources.list。
在执行 sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg 时会报错 : curl:(35) OpenSSL SSL_connect: Connection reset by peer in connection to raw.githubusercontent:433,即使在浏览器可以打开网址,但在终端无法连接

解决办法:
①使用国内gitee地址
sudo curl -sSL https://gitee.com/JCxiaohu/rosdistro/blob/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
②直接添加公匙
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key F42ED6FBAB17C654
3.将存储库添加到源列表中。
sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list'
第三步、安装开发工具和ROS工具
1、安装普通功能包
sudo apt update && sudo apt install -y \
python3-flake8-docstrings \
python3-pip \
python3-pytest-cov \
ros-dev-tools
2、根据系统版本安装功能包
安装过程中可能会有某个功能包报错,需要单独手动安装
ubuntu 22.04:
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
ubuntu 20.04:
python3 -m pip install -U \
flake8-blind-except \
flake8-builtins \
flake8-class-newline \
flake8-comprehensions \
flake8-deprecated \
flake8-import-order \
flake8-quotes \
"pytest>=5.3" \
pytest-repeat \
pytest-rerunfailures
第四步、获取ros2源码
mkdir -p ~/ros2_humble/src
cd ~/ros2_humble
vcs import --input https://raw.githubusercontent.com/ros2/ros2/humble/ros2.repos src
在使用vsc import拉取 ros2 源码时会报错,是因为这是需要从网站上下载ros2.repos文件,即使在浏览器可以打开网址,但在终端无法连接
解决办法:需要手动下载,先在浏览器打开https://raw.githubusercontent.com/ros2/ros2/humble/ros2.repos,右键保存,注意保存的文件是 ros2.repos,拷贝到~/ros2_humble 目录下与src 同级,再执行命令:
vcs import --input ros2.repos src
如果出现以下报错则说明ros2.repos文件错误,需要重新下载:
成功拉取源码结果图:可以在~/ros2_humble/src中
第五步、使用rosdep安装依赖项
ROS 2包构建在经常更新的Ubuntu系统上,在安装新软件包之前确保您的系统是最新的。
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 init 会报错:同样是因为终端运行无法连接到国外源网站
ERROR:cannot download defult sources list from
治标又治本的解决办法:rosdep init报错解决(注意系统的默认python版本,是python2就在python2.7目录下修改,python3就在python3目录下修改)
执行 rosdep install时会有个别依赖包报错,如下:
解决办法:手动安装 sudo apt-get install < package_name >, 也可以在命令后添加 --fix-missing
安装完成如下:
第六步、在工作空间中编译源码
要求:科学上网工具,足够的运行内存(虚拟机需要设置6G以上)
cd ~/ros2_humble/
colcon build --symlink-install
执行colcon build --symlink-install就是对src中所有源码进行编译,会遇到部分功能包报错,如下:
报错一:在编译过程中需要下载内容,但终端无法连接到下载地址

报错原因:在编译过程中需要下载内容,但终端无法连接到下载地址
解决办法:首先,在浏览器打开报错网址下载文件到本地;然后,根据报错在src目录下搜索找到报错的功能包,修改cmakelists文件,把cmakelists中报错的URL 由 网址 改为所下载文件的 绝对路径,注意要在绝对路径前加file://如下图:
报错二:可能会遇到系统强制结束编译过程,因为运行内存不够用

解决办法:要有足够大的运行内存分配,至少6G以上
编译完成
ros2 humble完整版共有345个功能包需要编译,编译完成结果如下:
第七步、source环境设置、运行ros2 demo
编译完成后需要测试是否能正常使用,设置环境、测试demo
第一个终端:
. ~/ros2_humble/install/local_setup.bash
ros2 run demo_nodes_cpp talker
第二个终端:
. ~/ros2_humble/install/local_setup.bash
ros2 run demo_nodes_py listener
测试结果:

至此,ros2 humble源码编译安装就完成了。
总结
总体来说ros2 源码编译安装过程不复杂,就是对系统环境和网络有特殊要求,国外源是安装过程中最大的问题,希望大家遇到问题可以多找、多搜索、多尝试,多试几次就成功了,有没有见过的报错和问题可以交流交流。
更多推荐

所有评论(0)