jetson nanoにROS2をインストールする

2019年7月17日

初めに

こんにちは、お前の記事は需要が低いといわれているBeingです。
そのうち使いそうなのでROS2をインストールしてみることにしました。
(Jetsonnano購入記事はvoidにリダイレクトされた、いいね?)
というか友人がROS2をjetson nanoにインストールしようとして失敗まくっていたので覚書程度に。

前提条件

jetsonnanoの初期設定は終わっていて、update,upgradeはできているものとします。(英語環境)
sshのためにいちいちipアドレス調べるのめんどくさいのでavahi-daemonを導入済み。
(というかjetson "nano"なのにnano入ってないのね、入れときます。)

入れてみる(参考文献はここ

実際に入れていきますが、自分のROS2の知識が浅いので間違ってるかもしれません。(ROS1ならある程度分かるのに…)

言語設定

utf-8じゃないと動かないようですね。

$ sudo locale-gen en_US en_US.UTF-8
Generating locales (this might take a while)...
  en_US.ISO-8859-1... done
  en_US.UTF-8... done
Generation complete.

次にこれ

sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8

リポジトリの追加

リポジトリを追加します。いつもの奴ですね。

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はGUIの有無を選択できます。当然ながらGUI無しのほうが軽量です。

desktop(GUI込み)のコマンド

sudo apt install ros-dashing-desktop
------ 省略 ------
Need to get 193 MB of archives.
After this operation, 1,256 MB of additional disk space will be used.

さすがに大きい。いい産業用microSD買っといてよかった。

Base(no-GUI版)はこっち

sudo apt install ros-dashing-ros-base

このjetsonは画像認識に使うと思うのでとりあえずDesktop版を入れました。

argcomplete(補完機能)のインストール(オプション)

sudo apt install python3-argcomplete

ROS2のコマンドライン上での補完機能を使いたいときはこれをインストールします。
(pythonってことはコマンドラインツールもpython製になったのか?)

PATHを通す

例のごとくPATHを通します。

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

ROS1のパッケージを使う

うちにあった某研究室では互換性の問題でいまだにindigo(!?)を使ってましたが互換性というのは大切です。これを使えばある程度のROS1(Kinetic or melodic)パッケージがつかえる、らしい?

sudo apt update
sudo apt install ros-dashing-ros1-bridge

何も考えずにインストールしようとしたら弾かれました。
melodicのパッケージ群が必要なようで…

おわりに

結構さらっとインストールできました。
日本語で軽くググっても出てこなかったので書いてみたわけですが、需要なさそうだなとは思ってます。

追記

通信周りについて

ROS2ではデフォルトのDDSにFastRTPSが採用されています。(DDSは分散型のネットワーク通信ミドルウェアでリアルタイムに通信できるよう)
これはApache2ライセンスで提供され軽量なためマシンパワーの低いマシンもネットワークに参加させることができます。
分散型であることと組み合わせてかなり便利そう。