<source : index.ros.org>

一、前言

因筆者使用 Ubuntu 18.04,並且已安裝 ROS melodic 的版本。目前 ROS 2 最新的版本為 Foxy,維護到 2023.5。Eloquent 維護到 2020.11。Dashing 維護到 2021.5。考量穩定性和維護期後,最後選擇安裝 Dashing 版本。

安裝 ROS 2 前,毋須移除 ROS 1,因 ROS 2 仍有許多套件仍需仰賴 ROS 1,並且ROS 1 和 ROS 2 可以透過 ROS bridge的套件進行溝通。

以下安裝步驟為參考官網和網路上ROS高手相關的除錯文章,整理而成。但因每個人的系統在應用時會有些許差異,若安裝上遇到問題,可參考文末所附的相關解決方式。

祝你成功完成安裝!

二、安裝步驟

步驟1. 設定 UTF-8 編碼

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

步驟2. 設定安裝來源

sudo apt update && sudo apt install curl gnupg2 lsb-release
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
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'


步驟3. 安裝ROS 2套件包

安裝資料庫後,更新你的 apt 資料庫快取
sudo apt update

安裝完整版 ,包含 ROS、RViz、demo、和教學。
sudo apt install ros-dashing-desktop

步驟4. 安裝 argcomplete 工具 (optional)

sudo apt install python3-argcomplete

步驟5. 設定環境變量

echo "source /opt/ros/dashing/setup.bash" >> ~/.bashrc
source /opt/ros/dashing/setup.bash


若出現以下的內容,是因為我們的系統已經有ROS 1了。

可以將以下內容加入 bashrc 的檔案中。

sudo gedit ~/.bashrc
echo "ros melodic(1) or ros2 dashing(2)?"
read edition
if [ "$edition" -eq "1" ];then
  source /opt/ros/melodic/setup.bash
else
  source /opt/ros/dashing/setup.bash
fi

如下圖

重新打開 terminal,就會看到以下畫面。輸入數字就會出現相對應版本。


步驟6. 安裝 RMW

預設安裝的 RMW 是 Fast RTPS,也可以用下列指令安裝 OpenSplice 或 RTI Connext
sudo apt update
sudo apt install ros-dashing-rmw-opensplice-cpp # for OpenSplice
sudo apt install ros-dashing-rmw-connext-cpp # for RTI Connext (requires license agreement)

在使用時,透過設定環境變量,即可更換
RMW_IMPLEMENTATION=rmw_opensplice_cpp
RMW_IMPLEMENTATION=rmw_connext_cpp

步驟7. 安裝相關開發工具

sudo apt update && sudo apt install -y \
  build-essential \
  cmake \
  git \
  python3-colcon-common-extensions \
  python3-pip \
  python-rosdep \
  python3-vcstool \
  wget
# install some pip packages needed for testing
python3 -m pip install -U \
  argcomplete \
  flake8 \
  flake8-blind-except \
  flake8-builtins \
  flake8-class-newline \
  flake8-comprehensions \
  flake8-deprecated \
  flake8-docstrings \
  flake8-import-order \
  flake8-quotes \
  pytest-repeat \
  pytest-rerunfailures \
  pytest \
  pytest-cov \
  pytest-runner \
  setuptools
# 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



步驟8. 安裝 ros1_bridge

由於ROS 2 的套件包還不是很全面,很多套件包仍須依賴 ROS 1,所以 ROS 1的仍需安裝 (若已安裝好,就更棒了)。安裝方法請見 輕鬆建置 ROS Melodic 開發環境的 4 個步驟

而ROS 1 和 ROS 2 間的通訊,需透過 ros-bridge ,安裝指令如下 :
sudo apt update
sudo apt install ros-dashing-ros1-bridge

到這邊,基本上就完成 ROS 2 的安裝。

最後,我們只要在為 ROS 2 創建工作空間,並進行編譯,就大功告成了。

特別要留意到,ROS 2 的編譯器為 colcon build,因此編譯的指令也改成 "colcon build" 。

mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
colcon build


編譯完的資料夾架構基本上和ROS 1 一樣,只是ROS 2 多了一個 log 資料夾,作為存放編譯過程中的日誌檔。編譯完成的可執行檔會放在 "install" 資料夾中。


三、測試

進到ROS2_ws的src中,下載官方demo
git clone https://github.com/ros2/demos.git


下載後,回到  ROS2_ws ,以colcon build指令進行編譯
cd ..
colcon build


在執行節點前,要記得更新環境變量
source install/setup.bash

啟動talker和listener節點 

ros2 run demo_nodes_cpp listener
ros2 run demo_nodes_cpp talker



和 ROS 1不同之處在於不用啟動master,這也是 ROS 2 最大的改變,真正成為去中心的分散式系統。


---
參考資料 :

#ROS2 #DashingDiademata

0 留言