ROS講座02 インストール

# 概要
ROSはUbuntu上で動くソフトです。ROSは内部でいろいろなものをインストールするのでクリーンなUbuntuの状態で始めることをお勧めします。
Ubuntuのインストールからroscoreが動く状態までを説明します。

# 対応関係
ROSのバージョンはUbuntuのバージョンとリンクして上がっていきます。大事なのはROSは対応するバージョンのUbuntu上でしか動くことが保証されていません（むしろほかのバージョンでは動かないと思ったほうが良い）。つまりROS kineticをUbuntu 18にインストールするというのはほぼ不可能です。
またUbuntuにもLTSがあるようにROSにもLTSとそうでないものがあります。基本的にLTSであるものを使えばよいです。

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

基本的には今はUbuntu20.04とNoeticを使えば良いでしょう（2022年2月現在）。

# Ubuntuのインストール
普通のIntel PCであることが前提です。
[Ubuntuのページ](http://releases.ubuntu.com/20.04/)の[ISOイメージ](ubuntu-20.04.3-desktop-amd64.iso)を使います。
これをDVDに焼いて、Ubuntuのインストールをしてください。特別な設定は必要ありません。

#ROSのインストール
結果から言うと以下のスクリプトを走らせればすべて自動でインストールします。途中で何回かパスワードを求められます。かかる時間は20分～1時間程度です。

``` shell:ros_noetic_install.sh
#!/bin/sh

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt install curl # if you haven't already installed curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

sudo apt update
sudo apt install ros-noetic-desktop-full
apt search ros-noetic

sudo apt-get install python-rosdep
sudo rosdep init
rosdep update

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

sudo apt-get -y install python-rosinstall
sudo apt-get install -y python3-catkin-tools
```

これ以下上記のスクリプトを詳しく説明します。

## リポジトリの登録
``` shell:ros_kinetic_install.shの一部
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
sudo apt-get -y update
sudo apt-get -y upgrade
```

ROSはUbuntuの標準のaptリポジトリにはないのでROSのリポジトリを登録します。1行目がリポジトリの登録、2行目が鍵の登録です。

## インストール
``` shell:ros_kinetic_install.shの一部
sudo apt-get -y install ros-kinetic-desktop-full
apt-cache search ros-kinetic
```

ここがインストールの本体です。rosのインストールには3種類のオプションがあります。今回はdesktop-fullを使用します。

| パッケージ名 | 入っているもの |
|:-:|:-:|
| ros-indigo-ros-base | 通信、ビルド等  |
| ros-indigo-desktop  | Base＋rqt,rviz,一般的なライブラリ等  |
| ros-indigo-desktop-full  | desktop＋シミュレーター等  | 

## rosdepのインストール

``` shell:ros_kinetic_install.shの一部
sudo rosdep init
rosdep update
```

## bashrcの設定
``` shell:ros_kinetic_install.shの一部
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
source /opt/ros/kinetic/setup.bash
```

これよりも上の設定でROSはPCにインストールされますが、標準ではROSのコマンドにパスは通っていません。そこで毎回ターミナルの起動時にROSコマンドへのパスを通す必要があります。~/.bashrcはターミナルの起動時に毎回実行されるスクリプトです。

## rosinstallの設定
``` shell:ros_kinetic_install.shの一部
sudo apt-get -y install python-rosinstall
```

## catkinワークスペースの設定
``` shell:ros_kinetic_install.shの一部
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin init
cd ~/catkin_ws
catkin build
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
```

ROSのプログラムはcatkinワークスペースというフォルダの中で記述してコンパイルします。名前は何でもよいのですがcatkin_wsがよく使われるのでこの名前にします。また自動ではこのcatkin_wsにはROSのパスが通っていません。`source ~/catkin_ws/devel/setup.bash`を実行することでcatkin_wsの中のROSパッケージにパスが通ります。毎回打つのは大変なのでbashrcに書いておきましょう。

ここまで来たら一度PCを再起動しましょう。

# インストールの確認
``` shell
roscore
```
このコマンドを実行して以下のように表示されれば成功です。エラー表示（赤字）が出るなど失敗する場合はターミナルの再起動、Ubuntuの再起動を試してみてください。

![basic_roscore.png](https://qiita-image-store.s3.amazonaws.com/0/254442/15d1542d-bb86-9231-dfa8-a78a8c4bb88f.png)


# パッケージの作成
``` shell:make_ros_package.sh
cd ~/catkin_ws/src
catkin_create_pkg rospackage_test roscpp rospy std_msgs tf 
```
ROSのプログラムはROSパッケージという単位で管理されます。パッケージの作成はインストールとは関係ありませんがここで説明します。パッケージは必ずcatkinワークスペースの中のsrcディレクトリの内部に置きます。
パッケージを製作するコマンドが`catkin_create_pkg`です。1つ目の引数はパッケージ名（名前は自由、上のスクリプトではbeginner_tutorials）2つ目以降は依存するパッケージです。とりあえず上の4つを入れておけば簡単なプログラムを作れます。この依存は後から追加できます。

# よく使うROSパッケージのインストール
``` shell:ros_kinetic_add_packages.sh
sudo apt-get install -y ros-kinetic-joystick-drivers
sudo apt-get install -y ros-kinetic-jsk-visualization
sudo apt-get install -y ros-kinetic-image-proc
```

よく使うものをここであらかじめインストールしておきます。
ros-[ROSのディストリビューション]-[パッケージ名(_（アンダーバー）を-（ハイフン）に変えたもの)]がaptのパッケージ名になっています。
例えば[joystick_drivers](http://wiki.ros.org/joystick_drivers?distro=lunar)をインストールしたければros-kinetic-joystick-driversという名前のaptパッケージをインストールします。

# ROS以外のツールのインストール
個人的に使うツールをインストールします。

``` shell
sudo apt-get install -y git
sudo apt-get install -y vim
```

# 参考
ROSのバージョン：http://wiki.ros.org/Distributions
ROSのインストール：http://wiki.ros.org/ja/indigo/Installation/Ubuntu

# 目次ページへのリンク
[ROS講座の目次へのリンク](https://qiita.com/srs/items/5f44440afea0eb616b4a)