ヴェズルフェルニルの研究ノート

座右の銘「ただ一人犀の角のように歩め」的な研究活動ノート

ROS MelodicのUbuntu 18.04へのインストール

前々からずっと興味を持っていたROSの研究に取り組み始めることにした。

その事始めとして、まずはUbuntuへのROS Melodic Moreniaのインストールを行った。

wiki.ros.org

上のROSの公式サイトにインストール手順が書かれており、これと同じ内容になってしまうが、本記事のあとROS関連の記事を続けて書く予定なので、自サイトの参照リンク先を作っておきたかった。それと、自分の備忘録も兼ねて、ROSのインストール手順を記事に書くておくことにする。

ROSの各バージョンはインストール対象のプラットホームOSが決まっており、ROS MelodicはUbuntu 18.04へしかインストールできない。

ROSバージョン Ubuntuのバージョン サポート期限
Melodic Morenia 18.04 2023年5月
Noetic Ninjemys 20.04 2025年5月

最初の使用対象としてなぜ古めでサポート期限切れのMelodicをわざわざ選択したかというと、MelodicからNoeticへ変わる際に、ROSの開発ツールの動作対象がPython 2から3へ変更されたらしい。この変更内容を経験しておきたかった。それと、これは自分のポリシーなのだが、新しいフレームワークやライブラリを利用するときはいつも最新版の2つくらい前のバージョンから使い始めるようにしている。これによって、それらの発展変化や背景技術への理解が深まるからだ。

現在の私の主力使用はUbuntu 20.04と22.04なので、少しMelodicを使ったあとで、NoeticとROS 2 Foxy Fitzroy以降へ移行するつもりでいる。

ROS Melodicのインストール

aptへのROSリポドトリの登録

$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

ROSリポドトリ公開鍵の取得

$ sudo apt install curl
$ curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

ROS環境一式のインストール

$ sudo apt update
$ sudo apt install ros-melodic-desktop-full

利用可能ROSパッケージ一覧の表示

$ apt search ros-melodic

ROS環境の設定

$ echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
$ echo "source /opt/ros/melodic/setup.zsh" >> ~/.zshrc
$ source ~/.zshrc

パッケージ・ビルド環境の構築

ツールのインストール

$ sudo apt install build-essential
$ sudo apt install python-rosdep python-rosinstall python-rosinstall-generator

ツール環境の初期化

$ sudo rosdep init
$ rosdep update

ワークスペース環境の構築

ツールのインストール

$ sudo apt install python-catkin-tools 

ワークスペースの作成

$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws
$ catkin init
$ catkin build

新しいワークスペースは任意の場所に任意の名前で作成して良い。

作成済みワークスペースをROS環境へ反映する

$ echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
$ echo "source ~/catkin_ws/devel/setup.bash" >> ~/.zshrc
$ source ~/.zshrc

ちなみに、私がROSを研究する目的は360度映像や自己位置推定などの動画配信環境を作りたいだけだ。UnityでROSを利用できると知ったことが、ROSに本気で取り組もうと思ったきっかけで、Unityを利用してモバイル対象動画配信を実現することがROSを使う主目的だったりする。ROSの本来の利用用途であるロボット遠隔操作には興味を持っていないので、その方面の記事を書くことはないだろう(ただし、ドローンには興味を持っているので、ドローンでのROS利用については記事を書くかもしれない)。

WebRTCやWebGLを使って動画配信環境を作る方法もあるが、これらは配信受信側がWebブラウザに限定されてしまう。アプリ上で動画配信を実現するには、UnityとROSを利用するのがいま一番手っ取り早い方法であり、実際にこの組み合わせによって実現されているスマホ用動画配信やゲームアプリがいくつか存在している。同じ目的を持っている人が多いようで、最近ROSとUnityへの関心度が上昇しているらしい。