Loading...
墨滴

lyf

2021/04/14  阅读:112  主题:雁栖湖

ubuntu 18.04编译ros2 foxy

ros2 foxy 版本默认需要ubuntu 20.04支持,因此在 18.04 上无法直接通过 apt 安装,需要从源码去编译。

1. 安装依赖

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
sudo apt update && sudo apt install -y \
  build-essential \
  cmake \
  git \
  libbullet-dev \
  python3-colcon-common-extensions \
  python3-flake8 \
  python3-pip \
  python3-pytest-cov \
  python3-setuptools \
  python3-vcstool \
  wget

注意,python3-rosdep在 18.04 上利用 apt 无法安装,可以利用 pip 装,因此这里将其取消,


lyf@lyf:~/ros2_foxy$ sudo apt install -y python3-rosdep
[sudo] password for lyf:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 python3-rosdep : Depends: python3-catkin-pkg but it is not going to be installed
                  Depends: python3-rosdistro but it is not going to be installed
                  Depends: python3-rospkg but it is not going to be installed
                  Depends: python3-rosdep-modules (>= 0.20.0) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

python pip 修改为国内源,

mkdir -p ~/.pip

在文件中输出阿里的 pip 源,

[global]
index-url=http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
# install some pip packages needed for testing
python3 -m pip install -U \
  rosdep \
  argcomplete \
  flake8-blind-except \
  flake8-builtins \
  flake8-class-newline \
  flake8-comprehensions \
  flake8-deprecated \
  flake8-docstrings \
  flake8-import-order \
  flake8-quotes \
  pytest-repeat \
  pytest-rerunfailures \
  pytest
# install Fast-RTPS dependencies
sudo apt install --no-install-recommends -y \
  libasio-dev \
  libtinyxml2-dev
# install Cyclone DDS dependencies
sudo apt install --no-install-recommends -y \
  libcunit1-dev

2. 下载源码

国内下载git代码是比较慢的,

mkdir -p ~/ros2_foxy/src
cd ~/ros2_foxy
wget https://raw.githubusercontent.com/ros2/ros2/foxy/ros2.repos
vcs import src < ros2.repos

利用 rosdep 安装一些源码中依赖的包,

sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro foxy -y --skip-keys "console_bridge fastcdr fastrtps rti-connext-dds-5.3.1 urdfdom_headers"

3. 编译源码

cd ~/ros2_foxy/
colcon build --symlink-install

在编译的过程中发现rviz_ogre_vendor这个包编译极慢,查看 cmake 发现需要先去下载源码,

find_package(Patch REQUIRED)
  include(ExternalProject)
  ExternalProject_Add(ogre-v1.12.1
    URL https://github.com/OGRECave/ogre/archive/v1.12.1.zip
    URL_MD5 cdbea4006d223c173e0a93864111b936
    TIMEOUT 1200
...

整个源码 128M,所以是比较耗时的。

rviz_orge
rviz_orge

4. 运行例子

c++的 talker,

. ~/ros2_foxy/install/local_setup.bash
ros2 run demo_nodes_cpp talker

python 的 listener,

. ~/ros2_foxy/install/local_setup.bash
ros2 run demo_nodes_py listener

如果之前装过 ros 1.0 的版本,建议不要把setup.bash放在.bashrc文件中,执行 ros1/ros2 相关命令时手动 source 即可。

lyf

2021/04/14  阅读:112  主题:雁栖湖

作者介绍

lyf

自动驾驶系统、算法