前々からずっと興味を持っていたROSの研究に取り組み始めることにした。
その事始めとして、まずはUbuntuへのROS Melodic Moreniaのインストールを行った。
上の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環境の設定
- bashの場合
$ echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc $ source ~/.bashrc
- zshの場合
$ 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環境へ反映する
- bashの場合
$ echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc $ source ~/.bashrc
- zshの場合
$ 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への関心度が上昇しているらしい。