###### tags: `ROS2 Dashing` `Linux` `Jetson Nano` # ROS2のインストール ## 環境 - Ubuntu 18.04 LTS - NVIDIA Jetson Nano Developper Kit - ROS2 Dashing Diademata ## 参考 - 書籍「ROS2ではじめよう 次世代ロボットプログラミング」 - ROS2公式サイト [Installing ROS2 via Debian Packages](https://index.ros.org/doc/ros2/Installation/Dashing/Linux-Install-Debians/) ## 手順 ### ロケールのセットアップ OSの文字コードをUTF-8に設定しておく. Jetson Nanoでは英語環境なので英語のロケールにする. ```console $ 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 ``` ### APTソースリストの設定 APTパッケージのダウンロード先をソースリストに追加する. 書籍と公式サイトで鍵の入手先が異なっており,どちらがよいのかは不明. - 書籍版 ```console $ sudo apt update $ sudo apt install curl gnupg2 lsb-release $ curl http://repo.ros2.org/repos.key | sudo apt-key add - $ sudo sh -c 'echo "deb [arch=amd64,arm64] http://packages.ros.org/ros2/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list' $ sudo apt update ``` - 公式サイト版 ```console $ 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=amd64,arm64] http://packages.ros.org/ros2/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list' $ sudo apt update ``` ### ROS2パッケージのインストール ROS2パッケージをインストールする.フルインストールする場合は結構時間がかかる. ```console $ sudo apt install ros-dashing-desktop $ sudo apt install python3-colcon-common-extensions python-rosdep python3-argcomplete $ sudo rosdep init $ rosdep update ``` ### 環境設定 セットアップスクリプトを起動してROS2関連の環境変数を読み込む. ```console $ source /opt/ros/dashing/setup.bash ``` ROS2は環境変数を読み込まなければ使えないため,ROS2関連のコマンドを使うにはターミナルを開くたびに環境変数を読み込まなければならない.`~/.bashrc`(ターミナル起動時に読み込まれるファイル)にセットアップスクリプトを追記しておくと便利である. ```console $ echo "source /opt/ros/dashing/setup.bash" >> ~/.bashrc ``` :::warning 但し,2019年11月08日現在,ROS2の環境変数の読み込み動作は滅茶苦茶遅いので,`~/.bashrc`にセットアップスクリプトを書いてしまうと,ターミナルが開くのが滅茶苦茶遅くなってしまう.なので,環境変数の読み込みコマンドにエイリアスを設定して,手動で読み込む方が精神衛生上良い気がする. ::: ### 動作確認 ROS2をフルインストールした場合,デモプログラムも一緒にインストールされる.これを起動して動作確認を行うことが出来る. デモプログラムの内の1つ,`talker`と`listener`を起動する.ターミナルを2つ開き,それぞれのターミナルで以下のコマンドを実行する. ```console $ ros2 run demo_nodes_cpp talker [INFO] [talker]: Publishing: 'Hello World: 1' [INFO] [talker]: Publishing: 'Hello World: 2' [INFO] [talker]: Publishing: 'Hello World: 3' [INFO] [talker]: Publishing: 'Hello World: 4' ``` ```console $ ros2 run demo_nodes_cpp listener [INFO] [listener]: I heard: [Hello World: 1] [INFO] [listener]: I heard: [Hello World: 2] [INFO] [listener]: I heard: [Hello World: 3] [INFO] [listener]: I heard: [Hello World: 4] ``` ノードが起動して,`Hello world`的な文字列が表示されたら正常に動作している. ### ワークスペースの作成 ROS2ではROS1と違い,複数のワークスペースを持つことが出来る.`src`という名前の子ディレクトリを持つディレクトリで`colcon build`コマンドを実行したらそこはもうワークスペースである. ここでは例として,ホームディレクトリ直下に`~/ros2_ws`という名前のワークスペースを作ることを考える. ```console $ cd $ mkdir -p ~/ros2_ws/src $ cd ~/ros2_ws $ colcon build $ . ~/ros2_ws/install/setup.bash ```