对在Ubuntu20.04上安装ROS2-foxy的过程以及该过程中出现的问题和找到的相应解决方法做了一个详细的记录,本文中设计的命令基本都可以在ROS的官网中找到。
一、设置编码
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-foxy安装好像要求在美式英语的ubuntu系统上进行,所以先输入以上命令将系统的语言改为要求的语言。
二、设置软件源
sudo apt update && sudo apt install curl gnupg2 lsb-release
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] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
第二条命令运行时会报错出现无法连接的问题,需要在github 的网址前加入一个代理地址https://ghproxy.com/,即输入命令 sudo curl -sSL https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
三、下载并解压ROS2-foxy安装包(linux-focal-amd64)
下载安装包的网址为:https://github.com/ros2/ros2/releases
mkdir -p ~/ros2_foxy
cd ~/ros2_foxy
tar xf ~/Downloads/ros2-package-linux-x86_64.tar.bz2
四、安装并初始化rosdep
sudo apt update
sudo apt install -y python3-rosdep
sudo rosdep init
rosdep update
注意:rosdep init时仍会发生超时并报错的问题,解决方案与安装ROS1时略有不同
rosdep init超时的解决方案:
1、sudo gedit /usr/lib/python3/dist-packages/rosdep2/sources_list.py
将url="https://ghproxy.com/"+url 添加到311行,即download_rosdep_data()函数中try:的后面
2、sudo gedit /usr/lib/python3/dist-packages/rosdistro/__init__.py
更改DEFAULT_INDEX_URL参数如下
DEFAULT_INDEX_URL = 'https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml'
3、将“https://ghproxy.com/” 添加到“raw.githubusercontent.com”网址前
sudo gedit /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py(36行)
sudo gedit /usr/lib/python3/dist-packages/rosdep2/sources_list.py(72行)
sudo gedit /usr/lib/python3/dist-packages/rosdep2/rep3.py(39行)
sudo gedit /usr/lib/python3/dist-packages/rosdistro/manifest_provider/github.py(68行 119行)
4、sudo gedit /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py
将gbpdistro_url = "https://ghproxy.com/" + gbpdistro_url 添加到第204行
更改完上述文件后,再次输入命令sudo rosdep init
如系统中安装过其他版本的ROS,会出现报错ERROR: default sources list file already exists 只需sudo rm 提示出现的文件后,重新sudo rosdep init即可
五、安装缺失的依赖项
rosdep install --from-paths ~/ros2_foxy/foxy/share(自己的安装路径) --ignore-src -y --skip-keys "cyclonedds fastcdr fastrtps rti-connext-dds-5.3.1 urdfdom_headers"
六、安装python3的库文件
sudo apt install -y libpython3-dev python3-pip
pip3 install -U argcomplete
七、设置环境变量
. ~/ros2_foxy/foxy/setup.bash(视自己的安装路径而定)
执行该命令可能会出现有关RTI CONNEXT的warning,原因为执行ROS2的bash文件时会默认调用rti-connext-dds的某个模块。但使用ROS2时,若不涉及rti-connext-dds的应用,该warning不会对后续操作产生影响。可以忽视该warning,也可以通过安装rti-connext-dds来避免它的出现。安装地址: https://docs.ros.org/en/foxy/Installation/DDS-Implementations.html
至此,已经可以运行ROS2的相关实例
除上述安装内容之外,要更好的使用ROS2,还要后续的几个小步骤
安装编辑工具colcon
sudo apt-get install python3-colcon-common-extensions
编辑bashrc
echo "source ~/ros2_foxy/foxy/setup.bash" >> ~/.bashrc
echo "source /usr/share/colcon_cd/function/colcon_cd.sh" >> ~/.bashrc
echo "export _colcon_cd_root=~/ros2_foxy/foxy" >> ~/.bashrc
上述命令均视自己的安装路径而定
配置完成后的检查
printenv | grep -i ROS
该命令可以获取ROS安装的具体位置信息
上述过程完成后,ROS2-foxy便安装完成了