ROS Melodicをインストールします。Melodicは、ROSのバージョンを表すコードネームです。ROSのパッケージは、バージョンによって、対応するUbuntuのバージョンが決まっています。ROS Melodicは、Ubuntu 18.04 TLSに対応しています。
インストール方法は、ROS Wikiに書かれています。
・スーパーユーザになる
$ sudo su -
ログインしているユーザのパスワード
・aptリポジトリのソースリストに追加
$ sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
・aptリポジトリのキーを設定
$ apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
・aptリポジトリの更新
$ apt update
$ apt upgrade
・ROSのインストール
$ apt install ros-melodic-desktop-full
$ rosdep init
$ rosdep update
$ apt install ros-kinetic-cartographer*
$ apt install ros-melodic-teleop*
$ apt install ros-melodic-turtlebot3*
・関連パッケージのインストール
$ apt install python-rosinstall python-rosinstall-generator python-rosdep python-wstool
$ apt install build-essential ninja-build liburdfdom-tools
$ apt install libceres-dev libprotobuf-dev protobuf-compiler libprotoc-dev
・ログイン時の初期設定
.bashrcに、下記の内容を最後に追加
$ vi ~/.bashrc
--------
source /opt/ros/melodic/setup.bash
・再ログインして、環境変数を確認
$ export | grep ROS
・インストールされたROSのパッケージの一覧を確認
$ rospack list
ROSには、データを確認するための可視化ツールであるrvizと、ロボットの動作をシミュレーションするツールgazeboが用意されています。インストール後に、ツールが起動することだけ、確認しておきます。
最初に、1回だけマスター「roscore」を起動しておきます。ただ、roslaunchコマンドを使って起動する場合は、「roslaunch」が「roscore」を自動起動するため、事前に起動しておかなくても大丈夫です。
$ roscore &
次に、可視化ツールrvizを起動します。
$ rviz
起動すると、下記のような画面が表示されます。
確認したら、rvizを終了し、シミュレーションツールgazeboを起動します。
$ gazebo
起動すると、下記のような画面が表示されます。
ツールの起動が確認出来たら、インストールは完了です。
SLAMとは、Simultaneous Localization and Mappingの略で、自己位置推定を行いながら地図作成を行うことです。ここでは、SLAMパッケージとして、OpenSlamのgmappingと、GoogleのCartographerのインストールを行います。
ros-melodic-desktop-fullでインストールしても、OpenSlamのgmappingは標準でインストールされませんので、git-hubのソースからビルドします。ビルドは、開発用のワークスペースとは、別のワークスペースを使います。
$ sudo su -
$ source /opt/ros/melodic/setup.bash
$ mkdir -p /opt/ros/catkin_ws/src
$ cd /opt/ros/catkin_ws/src
$ catkin_init_workspace
$ git clone https://github.com/ros-perception/openslam_gmapping.git
$ git clone https://github.com/ros-perception/slam_gmapping.git
$ git clone https://github.com/ros-planning/navigation_msgs.git
$ git clone https://github.com/ros-planning/navigation.git
$ git clone https://github.com/ros/geometry2.git
$ cd /opt/ros/catkin_ws && catkin_make
GoogleのCartoGrapherは、git-hubのソースからビルドします。インストールまで行うため、CartGrapher専用のワークスペースを作成してビルドします。
$ mkdir -p /opt/ros/catkin_cg/src
$ cd /opt/ros/catkin_cg/src
$ catkin_init_workspace
$ git clone https://github.com/googlecartographer/cartographer.git
$ git clone https://github.com/googlecartographer/cartographer_ros.git
$ rm -rf protobuf/
$ src/cartographer/scripts/install_proto3.sh
$ rosdep install --from-paths src --ignore-src -r -y --os=ubuntu:xenial
$ catkin_make_isolated --install --use-ninja
$ logout
これでインストールは完了ですので、ログアウトして、一般ユーザでログインします。
ROSのプログラムを作成する場合には、以下のコマンドで、ビルドするためのワークスペースを作成します。
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ catkin_init_workspace
$ cd ~/catkin_ws
$ catkin_make
ROSの環境変数を設定するため、.bashrcの最後に、setupシェルを実行するように追加します。
自分で作成したパッケージは、~/catkin_ws ディレクトリでビルドし、gitからソースを取得して作成したパッケージは、/opt/ros/catkin_ws ディレクトリでビルドしています。このように、2つのワークスペースに分けて管理したいので、/opt/ros/catkin_ws の環境変数は、exportコマンドで追加しています。devel/setup.bashは、複数のワークスペースには対応していませんので、注意してください。
最後に、Turtlebot3のパッケージも利用するので、Turtlebot3の環境変数も設定しておきます。
設定が完了したらログアウトします。
$ vi ~/.bashrc
----------
source /opt/ros/melodic/setup.bash
source ~/catkin_ws/devel/setup.bash
export EXT_WS="/opt/ros/catkin_ws"
export CMAKE_PREFIX_PATH="$EXT_WS/devel:$CMAKE_PREFIX_PATH"
export LD_LIBRARY_PATH="$EXT_WS/devel/lib:$LD_LIBRARY_PATH"
export PKG_CONFIG_PATH="$EXT_WS/devel/lib/pkgconfig:$PKG_CONFIG_PATH"
export ROS_PACKAGE_PATH="$EXT_WS/src:$ROS_PACKAGE_PATH"
export ROSLISP_PACKAGE_DIRECTORIES="$EXT_WS/devel/share/common-lisp:$ROSLISP_PACKAGE_DIRECTORIES"
export TURTLEBOT3_MODEL=burger
新しく端末を開いて、cartograperが提供しているデモをダウンロードして実行してみます。
$ wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag
ダウンロードが終わったら、デモを起動します。
$ roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag
起動すると、下記のような画面で地図を作成しく様子が見れます。このデモは、bagファイルを再生しているので、実際の地図作成と同じ処理を行っていますが、操作をすることはできません。