MAGIでROSを使う

ROS(Robot Operating System)は、ロボットを作る上で重要なプラットフォームです。ここでは、ROSプログラマになるのではなく、上手にこれを利用する方法について記述します。ROSは、たとえば、自律移動ロボットを作るときにとても有用です。必要なソフトウェアスタックのすべて、すなわち

  • モータドライバ
  • Lidar等のセンサドライバ
  • センサデータの変換フィルタ
  • SLAM
  • 地図管理
  • ナビゲーション
  • ロボットのシミュレーション
  • ロボットに対するコマンドの発行

等のモジュールが提供されるとともに、それらの間の連携方法が定義されています。ロボットとして動かすためには、これらを、ロボット上のCPUやPC上で分散して実行する必要があります。

ロボットの構造

これらを実装したロボットも多数販売されていますが、自分で作成することも可能です。ROSロボットは、多くの場合

  • Raspberry Pi等の組み込みCPU
  • Arduino等のソフトウェアで動くATmega等の制御CPU

の組み合わせで作られています。ROSは、Raspberry Pi上で実行することが可能ですが、通常は別のPC上のLinuxと通信で連携させながら運用します。特に、シミュレーションを行うためには、通常PCが1台必要になります。また、ソフトウェアの開発も、ROSがインストールされたPC上で行う必要があります。

制御CPUには、モータを駆動するためのモータドライバICと、車輪の回転を検知するロータリエンコーダが接続され、左右の車輪の回転のフィードバック制御を行います。組み込みCPUとは、I2Cやシリアル回線で接続され、一定時間ごとに送られるコマンドにしたがって動作するように実装されます。基盤ソフトウェアとしてArduinoを用いる場合が多いです。

組み込みCPUには、Linuxが動作していることが想定され、ROSがインストールされています。ROSのpub/sub通信によって動作するモータドライバである、base_controllerモジュールが実行されます。組み込みCPUには、これとは別に、Lidarが接続されています。通常高速のシリアル回線で接続され、Lidarの回転に合わせて周辺の障害物に対する距離情報が定期的に転送されます。これも、組み込みCPU内でROSの通信を行うモジュールによって制御されます。

ロボット上には、少なくとも以上の機構が動作している必要があります。標準実装として、Turtlebot 3が指定されており、これを購入すればすべてのソフトウェアがあらかじめ準備されています。これとは別に、たとえば、Pololu社から、ロータリエンコーダ付きのロボット筐体や、モータ制御基板が販売されており、それらを組み合わせて自作することも可能です。

全体の制御

通常、ROSのこれ以外のモジュールは、PCやサーバ上で動かします。これまでは、自分でROSをインストールして必要なソフトウェアを動かしていましたが、MAGIではすべてあらかじめ用意されています。すなわち、MAGI上では、

  • SLAM
  • Navigation
    move base
  • Rviz
    GUIからロボットの移動先等を指定
  • Gazebo
    シミュレータ
  • Rqt-graph
    ROSの通信の接続状態の可視化

等のモジュールがコンテナとして用意されており、全体が1回の操作で起動します。Gazeboによるシミュレーションでは、そのままRvizからロボットの移動先を指定してロボットを動かしてみることが可能になります。

次世代のロボット

現状では、Lidarを想定した設計になっていますが、ステレオカメラを用いても同様の動作が可能です。カメラ画像は、人工知能を用いて周囲の環境を確認し、ロボットの行動計画をたてるためにも必要なので、カメラは標準的に装備されてゆくと考えられます。したがって、カメラを用いたロボットナビゲーションの方が、全体としてのコストを低く抑えられる可能性があります。MAGI上で画像処理プログラムを実行し、ロボットを制御する方式についても検討しています。

このような試みを行うためには、ROSのモジュールと通信を行って、

  • 画像データの受信
  • 地図データの受信
  • ロボット移動命令の送信

等を実現する必要があります。ROSをインストールしたコンテナであれば、これを行うことが可能ですが、ROSの通信方式について知る必要が出てきてしまいます。そこで、pythonレベルでの簡略なAPIを実装し、ROSの詳細を隠ぺいして利用できるようにします。このAPIに関する知識があれば、画像データと人工知能技術に基づくロボットナビゲーションシステムを実現することが可能になります。