プラスプラス開発者ブログ

岩手県盛岡市のシステム開発会社「株式会社プラスプラス」の開発者ブログです。

ROSインストールでコマンドなるものと格闘中(頑張ってセットアップするぞ!!)

こんにちは、プラスプラスの真山です。
ROSをインストールしてみます。手順はROSのHPに載っている一般的なインストール方法です。 ターミナルを開いてコマンドをコピーペーストするだけです。簡単です。

f:id:plusplus-sawada:20180620104347j:plain
「簡単です」と言いつつも参考書見ながらコマンドを頑張っている図

NTP (Network Time Protocol) 設定

複数のコンピュータ間で通信を行う場合、NTPを利用して各コンピュータで時刻を同期する必要があります。chrony をインストールして ntpdate コマンドで ntp サーバを指定します。

$ sudo apt-get install -y chrony ntpdate
$ sudo ntpdate -q ntp.ubuntu.com


ソースリストの追加

ros-latest.list に ROS 関連サーバの URL を追加します。

$ sudo sh -c 'echo "deb https://package.ros.org/ros/ubuntu $(lsb_release-sc) main" > /etc/apt/sources.list.d/ros-latest.list'
キーを設定する

ROS 関連サーバからパッケージをダウンロードするための公開キーを追加します。以下の公開キーはサーバ更新の際に変更されるため、公式 Wikiページで最新のものを確認します。

$ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
パッケージインデックスのアップデート

Ubuntu のパッケージをアップデートしておきます。

$ sudo apt-get update && sudo apt-get upgrate -y
ROS Kinetic のインストール

デスクトップ用の ROS パッケージをインストールします。 このパッケージには、ROS本体、グラフィカルなユーティリティツール rqt 、可視化ツール RViz 、その他の関連ライブラリが含まれます。今回はkineticなので、別のバージョンを使いたい場合はros-の後にそのバージョン名を入れます。

$ sudo apt-get install ros-kinetic-desktop-full

さらに rqt に関するすべてのパッケージをインストールしておきます。

$ sudo apt-get install ros-kinetic-rqt*
rosdep の初期化

rosdep は ROS のメインコンポーネントを利用したり、プログラムをコンパイルする際、OS に依存した外部のライブラリやツールをインストールするためのツール。 ROS を利用する前には必ず一度 rosdep を初期化しておく必要があります。

$ sudo rosdep init
$ rosdep update
rosinstall のインストール

ROS の様々なパッケージをインストールする際に役に立つツールです。 頻繁に利用するので必ずインストールします。

$ sudo apt-get install python-rosinstall
環境設定の呼び出し

環境設定ファイルには、ROS_ROOT ROS_PACKAGE_PATH などの環境変数があらかじめ定義されています。以下のコマンドで読み込めます。

$ source /opt/ros/kinetic/setup.bash
作業フォルダの生成および初期化

ROS 専用ビルドシステム catkin を利用します。 そのためにあらかじめ作業フォルダ catkin_ws を作成し、初期化する必要があります。 この作業は、作業フォルダを削除して再び作成しない限り、一度だけ行えばいいです。

$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ catkin_init_workspace

フォルダ catkin_ws が作成できたらビルドを行います。

$ cd ~/catkin_ws/
$ catkin_make

ビルドが終了したら、ls コマンドで現在の作業フォルダにあるファイルを確認します。 ビルドに成功すると src フォルダの他に builddevel フォルダがそれぞれ作成されています。 このときに、catkin ビルドシステムのビルド関連ファイルは build フォルダに、実行関連ファイルは devel フォルダに、それぞれ自動生成されます。

$ ls
build
devel
src

最後に catkin ビルドシステムの環境設定ファイルを読み込んでおきます。

$ source ~/catkin_ws/devel/setup.bash
テスト

インストールできたらroscoreを起動します。

$ roscore

これでROSのインストールが完了しました。おめでとうございます!(ヤッタネ!)

ROSを快適に使う環境設定

しかしこのままでは新しいターミナルを開くたびに

$ source /opt/ros/kinetic/setup.bash
$ source ~/catkin_ws/devel/setup.bash

というコマンドを毎回実行させて環境設定ファイルを読み込まなければなりません。これはめんどくさい!(毎回ですよ!あーめんどくさい!)

なので自動的に環境設定ファイルを読み込むように設定します。エディタで~/.bashrcファイルの最後に設定を追加します。エディタは vim でも gedit でもなんでもいいです。

$ gedit ~/.bashrc

~/.bashrcファイルの中身です。最後の所に書いていきましょう。

環境設定ファイルの読み込みを自動化。
# Set ROS Kinetic
source /opt/ros/kinetic/setup.bash
source ~/catkin_ws/devel/setup.bash
ROS ネットワークの設定

ROSはインターネットを使用し、ノード情報を管理するコンピュータ(Master) や、実際にノードを実行するコンピュータ(Host)で動作しているノード間でメッセージ通信を行うため、それぞれのコンピュータのIPアドレスを設定します。Master と Host が同じコンピュータの場合はxのところにIPアドレスを、

# Set ROS Network
export ROS_HOSTNAME=xxx.xxx.xxx.xxx
export ROS_MASTER_URI=http://${ROS_HOSTNAME}:11311

別の場合はそれぞれに設定します。

# Set ROS Network
export ROS_HOSTNAME=xxx.xxx.xxx.xxx
export ROS_MASTER_URI=yyy.yyy.yyy.yyy

コンピュータが1台だけでIPアドレスを特定する必要がないときや、インターネットに接続せずアドレスが割り当てられないときは、localhostと指定します。

# Set ROS Network
export ROS_HOSTNAME=localhost
export ROS_MASTER_URI=http://localhost:11311
ショートカットコマンドの設定

次に頻繁に使うであろうコマンドのショートカットを設定します。

# Set ROS alias command
alias cw='cd ~/catkin_ws'
alias cs='cd ~/catkin_ws/src'
alias cm='cd ~/catkin_ws && catkin_make'

これがとても便利です。便利ですが私の場合設定したことを忘れて普通にコマンドを打つことがよくあります。(だめじゃん!)

ここまででROSのインストールと環境設定が完了しました。お疲れ様でした。 次回は実際にROSを起動させて動かしてみます。あのかわいいカメ達も出てきますのでお楽しみに〜!