HARD2021: Gazeboシミュレータでルンバを動かそう!

Gazeboシミュレータを使い、ルンバ(Roomba)を動かします。本記事ではカナダのSimon Fraser University, Autonomy Lab.のJacob PerronさんのフォークしたiRobot社のRoomba, Create2用のROSドライバー create_autonomyを使います。gazebo用のlaunchファイルもあり、Raspberry Pi4(RPi4)でも動きます。ただし、RPi4ではソースコードを少し改変する必要があります。

なお、Simon Fraser University, Autonomy Labのgithubは、Create2やRoomba用のROS2ドライバ、Dockerファイルまであります。まさに、Create2やRoombaを使う人々にとっての神サイトです。

注意

    • 2021年3月7日現在でcreate_autonomyはROS Noeticには対応していません。この記事の方法ではビルドできません。なお、ROSとUbunutのバージョンは依存関係があるため対応づけることが推奨されています。Ubuntu20.04の場合はROS Noeticを使うことが推奨されています。
    • create_autonomyパッケージは開発が継続されており、2021年3月26日にgit cloneして試したところ開発版ではビルドエラーになりました。HARD2021スプリングワークショップでは、次のバージョンを使用します。
      • commit a522e080f267253fa2cba237ad32df5132c9aeb5
      • Author: Emiliano Borghi
      • Date: Mon Jan 25 10:08:27 2021 -0300

 

  • 参考の神サイト
  •  環境
    • Roomba 500~800シリーズ(900, e, iシリーズなどの最近の機種は対応していません)
    • 試したのはIntel Core i7 -8750とRaspberry Pi4 (RAM 8GB)
    • Ubuntu18.04 
    • ROS Melodic
  • 準備
    • $ sudo apt update
    • $ sudo apt upgrade
    • $ sudo apt install -y python-rosdep python-catkin-tools libqt4-dev
  • インストール
    • ワークスペースの生成
      • $ mkdir -p ~/catkin_ws/src
      • $ cd ~/catkin_ws
      • $ catkin build
    • ダウンロード
      • ディレクトリの作成と移動
        • mkdir -p ~/src
        • $ cd ~/src
      • libcreateのクローン(ダウンロード)
        • $ git clone https://github.com/RoboticaUtnFrba/libcreate.git
      • libcreateのバージョン(tag)を指定
        • $ cd ~/catkin_ws/src/libcreate
        • $ git checkout 2.1.0
      • create_autonomyのクローン
        • $ git clone https://github.com/RoboticaUtnFrba/create_autonomy.git
      • create_autonomyのバージョン(commit番号)を指定
        • $ cd ~/catkin_ws/src/create_autonomy
        • $ git checkout a522e080f267253fa2cba237ad32df5132c9aeb5
        • なお、create_autonomyでcommit番号を指定しているのは、ワークショップ開催日2021年3月7日に一番近いからです。tagバージョン番号2.0.0ではビルドに失敗し、ワークショップのサンプルプログラムは動きませんでした。
    • 依存関係ファイルのインストール
      • RTIMULib (IMU用のリアルタイムライブラリ)のインストール
        • $ cd ~/catkin_ws
        • $ ./src/create_autonomy/sensors/ca_imu/scripts/install_rtimulib.sh
      • 他のファイルのインストール
        • $ cd ~/catkin_ws
        • $ sudo apt install -y python3-vcstool
        • $ vcs import src < src/create_autonomy/dependencies.repos
        • $ rosdep update
        • $ rosdep install --from-paths src -yi
    • Raspberry Pi4のみの作業:Intel CPUの場合は必要ないので次のワークスペースのビルドへ進む。Raspberry Pi4というかARMのCPUでは、viso2(Visual Odometryライブラリ)関連のソースコードをそのままビルドできないので次のように改変するか~/catkin_ws/src/viso2以下のディレクトリを削除する。
        • ~/catkin_ws/src/viso2/libviso2/CMakeLists.txtの7行目を次のように変更する。
          • 変更前: SET(CMAKE_CXX_FLAGS -mfpu=neon)
          • 変更後: SET(CMAKE_CXX_FLAGS -march=armv8-a+simd)
        • ~/catkin_ws/src/viso2/libviso2/src/filter.hの25行目とmatcher.hの30行目に#if defined(__ARM_NEON__)がある。その1行上に以下の行を挿入する。
          • #define  __ARM_NEON__
    •  ワークスペースのビルド
      • $ cd ~/catkin_ws
      • Intel CPUの場合。私の環境では約3分でビルドが終了した。
        • $ catkin build -DCMAKE_BUILD_TYPE=Release
      • Raspberry Pi4の場合。私の環境では約17分かかった。
        • $ catkin build -DCMAKE_BUILD_TYPE=Release -DARM_CROSS_COMPILATION=ON
  • 設定
    • このワークショップに使う以下の設定を以下のコマンドにより、エディタgeditで.bashrcファイルを開き、末尾にコピペして保存する。
      • $ gedit  ~/.bashrc
export GAZEBO_IP=127.0.0.1
export LASER=rplidar
export NUM_ROBOTS=1
export RVIZ=true

source /opt/ros/melodic/setup.bash
source ~/catkin_ws/devel/setup.bash

  •  以下のコマンドを実行して設定を反映させる。
    • $  source ~/.bashrc
  • 実行
    • 新たに端末を開き、以下のコマンドを実行してシミュレータGazeboを起動する。一番下図のルンバをベースにしたロボットが現れる。エラーが出てGazeboが起動しなかったり、画面が真っ暗な場合は一番したのエラー処理を参照する。
      • $ roslaunch ca_gazebo create_empty_world.launch
    • 端末をもう一つ新たに開き、以下のコマンドを実行してGazebo上のルンバを遠隔制御する。
      • $ roslaunch ca_tools keyboard_teleop.launch
      • 以下の画面になる。以下のキー操作でロボットを動かすことができる。なお、マウスのカーソルがこの2番目に開いた端末上にないとロボットは動かないので注意。
        • i: 前進、u:左前進、o:右前進
        • j: 左回転、k:停止、 l:右回転
        • m:左後進、,:後進、 .:右後進
        • スペース:停止
        • w/x:並進速度増速/減速(10%)
        • e/c:角速度増速/減速(10%)

    • 無事に動いたら成功。お疲れ様!
  • エラー処理
    • rvizを起動するとsegmentation faultというエラーが出て起動しません。
      • ~/.bashrcに以下の1行を追加してください。
        • export GAZEBO_IP=127.0.0.1
    • Gazeboを起動するとsegmentation faultというエラーが出て起動しません。
      • ~/.bashrcに以下の1行を追加してください。
        • export LIBGL_ALWAYS_INDIRECT=""
    • Gazeboを起動すると以下のエラーで画面が真っ暗らなままです。
      [Err] [REST.cc:205] Error in REST request
      libcurl: (51) SSL: no alternative certificate subject name matches target host name ‘api.ignitionfuel.org’

      • ~/.ignition/fuel/config.yamlを次のように変更してください。
        • 変更前:url: https://api.ignitionfuel.org
        • 変更後:url: https://api.ignitionrobotics.org

終わり

コメント

Folding@home Kanazawa (ID 257261)

みんなのためにおうちで新型コロナウイルスを解析しよう!

タイトルとURLをコピーしました