第1讲 ROS2 编译与安装
文章目录
系统环境及ROS版本
系统环境:Ubuntu Linux - Focal Fossa (20.04) 64-bit
ROS2版本:Galactic
准备工作
1. 添加ROS2 apt仓库
# 安装依赖软件
sudo apt update && sudo apt install curl gnupg lsb-release
# 从github网站下载ROS apt 密钥
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
# 添加仓库到sources list中
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
2. 安装开发工具和ROS工具
# 安装Ubuntu系统依赖软件
sudo apt update && sudo apt install -y \
build-essential \
cmake \
git \
python3-colcon-common-extensions \
python3-flake8 \
python3-pip \
python3-pytest-cov \
python3-rosdep \
python3-setuptools \
python3-vcstool \
wget
# 安装Python3依赖软件
python3 -m pip install -U \
flake8-blind-except \
flake8-builtins \
flake8-class-newline \
flake8-comprehensions \
flake8-deprecated \
flake8-docstrings \
flake8-import-order \
flake8-quotes \
pytest-repeat \
pytest-rerunfailures \
pytest \
setuptools
3. 获取ROS2代码
mkdir -p ~/ros2_galactic/src
cd ~/ros2_galactic
# 下载ROS代码库文件
wget https://raw.githubusercontent.com/ros2/ros2/master/ros2.repos
# 利用VCS工具将ROS2源码下载至src文件夹下
vcs import src < ros2.repos
4. 利用rosdep安装ROS系统依赖
# 初始化,从https://raw.githubusercontent.com/ros/rosdistro/blob/master/rosdep/sources.list.d/20-default.list下载20-default.list文件至/etc/ros/rosdep/sources.list.d/文件夹下
sudo rosdep init
# 更新相关依赖
rosdep update
# 安装依赖
rosdep install --from-paths src --ignore-src --rosdistro galactic -y --skip-keys "console_bridge fastcdr fastrtps rti-connext-dds-5.3.1 urdfdom_headers"
编译及安装
cd ~/ros2_galactic/
colcon build --symlink-install
测试
1. 设置环境
# 打开终端后,为终端配置临时环境
. ~/ros2_galactic/install/local_setup.bash
# 配置永久环境
echo "source ~/ros2_galactic/install/local_setup.bash" >> ~/.bashrc
2. 测试
# 打开一个终端
. ~/ros2_galactic/install/local_setup.bash
ros2 run demo_nodes_cpp talker
# 打开另一种终端
. ~/ros2_galactic/install/local_setup.bash
ros2 run demo_nodes_py listener
问题汇总及解决方案
1. 无法访问Github网站,无法clone下载代码库
解决方案:
# 配置git设置,用镜像网址https://github.com.cnpmjs.org替换https://github.com
git config --global url."https://hub.fastgit.org".insteadOf https://github.com
备注:可以解决大部分下载问题,且不需要修改Host。
2. raw.githubusercontent.com 相关错误
解决方案:
# 下载github响应的代码库,将文件替换到相关位置
3. VCS import src 报错EEEEEE
原因:此处报错是VCS工具因Github DNS污染导致网络不稳定,无法顺利下载代码。
解决方案:参照方案1.
4. rosdep update 时 ERROR: error loading sources list:
The read operation timed out错误
原因:此处报错是VCS工具因Github DNS污染导致网络不稳定,无法顺利下载网页内容。
解决方案:
# 1.从github网站下载rosdistro库,记住文件路径
git clone https://github.com/ros/rosdistro.git
# 2.将/usr/lib/python3/dist-packages/rosdep2/rep3.py、/usr/lib/python2/dist-packages/rosdistro/__init__.py中的"https://raw.githubusercontent.com/ros/rosdistro/master"替换为"file:///home/XXX/rosdistro"
# 3.将/etc/ros/rosdep/sources.list.d/20-default.list文件中的"https://raw.githubusercontent.com/ros/rosdistro/master"同样替换为"file:///home/XXX/rosdistro"
# 执行rosdep update
rosdep update
备注:其他的方案如更改/etc/hosts中的IP地址、增加网络响应延时时间、更换手机热点等看运气,建议不要尝试了。
参考资料
ROS2 Galactic wiki Documentation