5. RT ミドルウェアを用いた移動ロボットの知覚制御

5. RT ミドルウェアを用いた移動ロボットの知覚制御
Perceptual Control of a Mobile Robot Using RT-Middleware
1. 実験の目的
ロボットは非常に複雑なシステムである。特に現在研究されているヒューマノイドロボッ
トや家庭用ロボットは、多種多様なセンサによるセンシングやその信号処理、処理結果によ
って得られる情報を用いたエンドエフェクタの制御、さらには情報の記録や学習など様々な
サブシステムが複雑に統合されている。従って、こうしたロボットの開発には、個々のサブ
システムに関する知識はもちろんのこと、それら全体をどのように統合しシステムとして組
み上げるかというインテグレーションについても熟知している必要がある。本実験では、移
動ロボットの知覚制御を題材に、センサの処理、ロボットの移動制御から RT ミドルウェアを
使った統合までを体験することで、実際のロボットシステム開発について学ぶことを目的と
する。実験は、1)RT ミドルウェアの概要学習、2)移動ロボット操作プログラムの学習、
3)音声認識や画像認識によるロボットの制御プログラムの学習、4)選択課題に関する議
論と実装、の順に行う。
2. 使用機材とソフトウェア
(1) 移動ロボット:Evolution Robotics 社製 ER1
ER1(図 1)は 2 輪差動駆動型
の移動ロボットであり、搭載した
ノートPC上でプログラミングを
行うことで、様々な動作を実行す
ることができる。図 2 に示す、付
属のロボット操作ソフト Robot
Control Center(RCC)によって
センシングやロボットの行動プロ
図 2 RCC の GUI
図 1 ER1 ロボット
グラムの作成を容易に実現できるが[1]、本実験ではロボット
を RTM に接続するために、独自の制御プログラムを作成す
る。また、図 3 のゲームコントローラを使った ER1 の操作プ
ログラムを作成する。
図 3 ゲームコントローラ
(2) RGB-D センサ:Asus Xtion Pro Live
RGB-D センサは、カラー画像と共に近赤外線を利用
した距離計測によって奥行情報を取得することのでき
るセンサである。代表的なものはマイクロソフト社の
Kinect であり、ジェスチャ認識型のゲームコントロー
ラとして普及している。本実験では、Kinect と同様の
図 4 Xtion Pro Live
技術を利用した Asus 社の Xtion(図 4)を使用する。Xtion は、小型かつ USB バスパワ
ーで動作するため、移動ロボットに搭載するのに便利である。Xtion の仕様は次の通り。
搭載センサ:RGB センサ/距離センサ/ステレオマイク、有効距離:0.8m~3.5m、画角:
水平 58°/垂直 45°、距離センサ解像度:640×480
(3) 開発環境: Visual Studio 2008(VC++)
Windows におけるプログラム統合開発環境
(IDE)であり、VC++ (C++)
、C#、VB など
の言語を使って GUI プログラムを容易に開発す
ることができる。また、統合開発環境であるため、
デバッグが容易にできる他、インテリセンス(自
動補完システム)などプログラムを開発するため
の便利なツールを利用することができる(図 5)
。
図 5 Visual Studio 2008
(4) OpenRTM-aist
OpenRTM-aist は、RT ミドルウェアの実装で
あり、ロボットシステムを開発するためのソフト
ウ ェ ア プ ラ ッ ト フ ォ ー ム で あ る [2] 。
OpenRTM-aist では、機能要素(RT コンポー ネ
ント:RTC)ごとにプログラムを作成し、RTC
をつなぎ合わせることでシステムを構築するこ
とができる。RTC は、C++、Python、Java 言語
で開発することができ、主要な OS をサポートし
ている。他のコンポーネントとデータやコマンドの
図 6 RT System Editor
やり取りをするためのポートと呼ばれる機能や、振る舞いを統一するためのアクティビ
ティと呼ばれる基本的な状態遷移および、パラメータを外部から操作可能なコンフィギ
ュレーションといった機能が備わっている。各コンポーネントを接続し、システム全体
を構築するために、RT System Editor(図 6)を利用することができる。
(5) OpenCV
OpenCV は、インテル社が開発したオープンソースの C/C++ライブラリで,コンピュ
ータビジョン(画像処理)に必要な各種機能が関数として用意されている[3]。具体的に
は、線形代数や統計処理など各種数学関数、エッジ等の特徴抽出や画像の幾何変換,フ
ィルタリング等の画像処理、物体追跡や動き推定などの動画像処理、三次元復元のため
のカメラ位置や姿勢の検出などのカメラキャリブレーション、コンピュータにパターン
を学習させるための機械学習、画像の読み込みや保存,表示,ビデオ入出力などインタ
ーフェースなどを使うことができる。これらを組み合わせることで、ロボットの視覚処
理に必要なことの多くを実現できる。
3. 実験のための理論と準備
本実験でのポイントは、以下の 3 点である。紙面の都合で、技術的な詳細については立ち
入らず、表面的な説明にとどめるが、興味のある人はインターネットや参考書などを利用し
て調べてみることを勧める。
(1) ロボットにおける知覚と行動のループ
一般的な自律ロボットは、セン
サによる知覚情報をベースに行動
を決定し、その行動がユーザを含
む環境に影響を与え、さらにその
変化した環境を知覚し行動を決定
図 7 知覚と行動のループ
する・・・といった、知覚と行動
のループ(図 7)によって成り立っている。従って、このようなロボットシステムでは、
センシング技術、センシングした信号の処理、パターン認識、認識結果に基づく行動決
定(人工知能)
、決定した行動を実際にモーターコマンドへ変換するロボティクスなど幅
広い要素技術が必要となる。
(2) 要素技術(ロボット制御、自己位置推定、地図生成、画像・音声処理/認識)
(a) ロボットの行動制御(移動)
差動駆動型移動ロボットと運動学:実験
で使用する ER1 は、2 つの車輪を独立に
回転させることで移動する差動駆動型の
移動ロボットである。図 8 は、差動駆動
型移動ロボットの運動学を表している。
これより、
図 8 差動駆動型移動ロボット
となることが分かる。ロボットの状態は、車輪間中心の位置(座標:x, y)と向き(姿勢)
で表現される。図中の K は、回転の曲率を表す。
オドメトリと自己位置推定(デットレコニング)
:スタート時の自己位置を原点とすると、
ロボットの自己位置は、運動学における速度を積分することで得ることができる。実際に
は、モータにつけられたエンコーダの値(ER1 ではステッピングモータを使用している
ため、パルス数)を用いてこれらを計算するが(オドメトリ)、車輪のすべりなど様々な
要因で誤差がのることになる。また、位置誤差が累積するため、一般にオドメトリを用い
たデットレコニングのみでは、正確な位置推定は難しい。
地図の生成と自己位置推定(SLAM):ロボットの自己位置は、環境の地図によって規定
される。しかし、環境の地図をロボット自身が作成するためには、ロボットの自己位置が
必要である。これは、鶏と卵の問題であり、SLAM(Simultaneous Localization And
Mapping)と呼ばれる[4]。この問題は、ICP(Iterative Closest Point)によるスキャン
マッチングやパーティクルフィルタを用いた手法によって解決することができる。SLAM
の技術によってロボットは、自律的に環境を動き回り、自己位置を推定しながら環境地図
を作成することができる。既に環境の地図がある場合は、モンテカルロ位置推定(MCL)
と呼ばれる確率的手法がよく用いられる。
パスプランニングとパスの追跡:パスプランニングは、現在の位置から環境地図上のある
点までの経路を計画する問題である。様々な手法が提案されているが、障害物や目標位置
のポテンシャル場として考えるポテンシャルフィールド法や、確率的な探索によってパス
を計画する RRT(Rapidly-exploring Random Tree)などが有名である。移動ロボットは、
実際に計画したパスを追跡して目標位置まで移動しなければならない。もっとも簡単な方
法は、現在位置から、パス上の最も近い(もしくは少し先の)次の点(サブゴールと呼ぶ)
を探し、その点にまっすぐ向くように回転してからその点まで直進するといった手順を繰
り返すことである。しかしこれでは、滑らかにパスを追跡することができない。サブゴー
ルまでの曲率を考えながら、前進速度と回転速度を制御する Pure Pursuit Algorithm な
どは、比較的容易に滑らかなパスの追跡を実現することができる。
(b) 画像処理/認識
画像処理:画像処理は、カメラによって取得された画像を処理するディジタル信号処理の
技術である。ノイズ除去やエッジ検出、色の補正、2 値化など多種多様な処理がある。画
像の圧縮なども画像処理の一部である。画像からの 3 次元情報(形状)の復元も画像処理
であると言えるが、コンピュータビジョンと呼ばれることが多い。人の検出や認識、追跡
などもコンピュータビジョンの範疇である。
画像認識:画像認識は、画像中に写っている物体や人などを画像処理、パターン認識の技
術を用いて検出・認識する技術である。画像中から、特徴量と呼ばれる、物体を判別する
ために必要な情報を計算し、その結果をパターン識別器で識別することで物体などを認識
する。特徴量としては、色のヒストグラムや輪郭の形状、また現在最も使われるのは、
SIFT や SURF と呼ばれる局所特徴量である。
3 次元情報:シーンの 3 次元情報を得るためには、様々な方法がある。画像を用いる場合
は、複数の画像の点対応から三角測量を行うステレオが一般的である。また、レーザーレ
ンジファインダは、照射したレーザーが反射して帰ってくるまでの時間 (Time of
Flight:TOF)を計測することで距離を計算する。近年注目されている Kinect(本実験で
は Xtion)は、近赤外線のパターンをシーンに照射し、そのパターンの歪から距離を計測
する“Light Coding”と呼ばれる技術を利用している。3 次元情報を利用した処理は、
Kinect の出現によって急速に拡大しており、ジェスチャ認識は勿論のこと、物体認識、
ロボットの障害物回避、3 次元地図の生成など様々なことがより容易に実現可能となって
いる。
(c) 音声処理/認識
音声処理:音声処理では、マイクロフォンで取得したアナログ信号(音の信号)をディジ
タル信号に変換(A/D 変換)し、ノイズや残響の除去といった前処理を行う。一般に音声
信号は、非定常な時系列信号であるため、数百ミリ秒のフレームと呼ばれる単位に分割し、
フレーム内では定常な信号であると仮定した処理を行う。周波数領域で処理を行うことが
多い。また、マイクロフォンが複数利用できる場合には、音の到来方向推定といった空間
的な情報処理を実現できる。音の到来方向に指向性を向け、その方向の音を強調すること
も可能である。こうした技術は、マイクロフォンアレーと呼ばれる。
音声認識:音声認識は、音声処理した信号に対してパターン識別を実行することで、文字
列に変換することが目的である。まず、音声処理と同様に音声の時系列信号をフレームに
分解し、フレーム毎に特徴ベクトルと呼ばれる音の周波数情報に変換する。これに対して
パターン識別を実行することで、その音が『あ』や『い』といったどの音に近いかを判断
する。パターン識別の手法としては、隠れマルコフモデル(HMM)が最もよく使われて
おり、これを音響モデルと呼ぶ。一方で、単語や文法といった言語情報(言語モデルと呼
ばれる)と統合することで、最終的に発話内容を文字として出力する。
(3) RT ミドルウェア(コンポーネント)による統合
コンポーネント指向プログラミングでは、実現したいシステムをどのようなコンポーネン
トに分割するかを考える必要がある。また、コンポーネント間でどのようなデータをやり取
りするかを検討しなければならない。さらにこれらのことは、ハードウェアの違いの吸収や、
処理・通信の負荷も考慮に入れる必要があるため、簡単な問題ではない。本実験では、必要
となる基本的なコンポーネントは既に用意してあり、それらを選択し組み合わせることで一
つのシステムを作ることを考える。したがって、必要なコンポーネントの選択と、システム
を統合するコンポーネントの作成が本実験で行うべき基本的な内容である。ただし、必要な
基本コンポーネントが存在しない場合には作成する必要があり、改良が必要な場合は改良す
る必要がある。下記に、本実験で用意している基本的なコンポーネントの例を示す。
-既存のコンポーネント群-
自己位置推定コンポーネント、SLAM コンポーネント、ロボット制御コンポーネント、
顔検出コンポーネント、物体認識コンポーネント、音声認識コンポーネント、RGB-D セ
ンサコンポーネント、ゲームコントローラコンポーネント
http://openrtm.org/openrtm/ja/searchproject/4
に多くのコンポーネントが登録されて
いる。この実験で使用するコンポーネントは、下記実験の HP を参照のこと。
http://apple.ee.uec.ac.jp/ROBOTEXP
4. 選択課題
本実験では各班で課題を設定し、一日目に学習した内容を応用して移動ロボット上で実現
する。課題の例を以下に示す。具体的な仕様は、各班で自由に考えてよい。基本的には、既
存のコンポーネントを組み合わせることで実現することとするが、最低一つのコンポーネン
トは作成(もしくは改良)すること。
課題0:『ぶつからずに動き回れ!』
RGB-D センサを用いて、障害物を回避しながら移動するシステム。この RTC システム
は、例として用意しているので、参考にしたり、改良したりすることができる。
課題1:『俺についてこい!』
ER1 が画像処理によりユーザを認識し、そのユーザについて行くシステムを構築する。
具体的にどのようにユーザを認識するかは、各自で検討する。例えば、顔を検出し、その
3 次元位置を RGB-D センサによって得ることで、その位置を追跡するようにする。ユー
ザは常に ER1 に顔を見せるようにして移動する。また、服の色を認識して追跡するなど
も考えられる。当然ロバストに追跡できる方が、優れたシステムであると言える。
課題2:『指定したものを見つけ出せ!』
ER1 が移動しながら(その場での回転でもよい)指定した物体を見つけ、その方向に
移動するシステムを構築する。物体の数や、どのような物(例えばペットボトルなど)
を使うかは各自で検討する。物体認識手法自体を検討してもよいが、既存の物体認識コ
ンポーネントを利用してもよい。認識した物体の位置は、Xtion の奥行センサから取得で
きる。物体を見つける正確さ、効率、ロバスト性など、様々な評価基準が考えられる。
課題3:『命令を聞き分けろ!』
ER1 が、Xtion に搭載されているマイクを利用して(PC のオンボードマイクでもよ
い)、ユーザの音声を認識し、その結果に応じて行動するシステムを構築する。命令の仕
方や、内容、行動の内容は自由に設定してよい。例えば、
『止まれ』や『進め』といった
簡単な操作から、ヒューマンロボットインタラクションまで様々なシステムを考えるこ
とができる。ロボットが、音声命令をどれだけ正しく解釈して行動できるかがポイント
となる。
課題4:『ジェスチャを認識せよ!』
RGB-D センサを使ったジェスチャ認識によって、ER1 が指定された命令を実行するよ
うなシステムを構築する。命令の仕方や、内容、行動の内容は自由に設定してよい。ロボ
ットが、ジェスチャ命令をどれだけ正しく認識して行動できるかがポイントとなる。
課題5:『地図を作れ!』
ER1 が自律的に部屋内を動き回って、部屋の地図を自動的に生成するシステムを構築
する。これは、ロボティクスの分野で SLAM と呼ばれる技術であるが、既存の SLAM コ
ンポーネントをベースにシステムを構築してもよいし、各自が独自に方法を考えて実装し
てもよい。地図の形態なども自由であるが、既存の SLAM コンポーネントでは占有格子
地図が使用されている。どれだけ正確な地図が作れるか及び、その地図を使って自己位置
が推定できるかどうかがポイントである。
課題6:『自由課題』
既存のコンポーネントや作成したコンポーネントを RTM 上で統合することで、面白い
移動ロボットシステムを実現する。上記選択課題の組み合わせなどでもよいし、ごみを集
める掃除ロボットのような具体的な応用を考えて実装してもよい。また、完全自律でもよ
いし、人間の操作が含まれるような強調システムでもよい。
5. 実験手順
以下に大まかな進め方を示す。詳細は、実験 HP を参照のこと。
http://apple.ee.uec.ac.jp/ROBOTEXP/detail.html
-1 日目-
(1) 実験の目的や進め方に関する簡単な説明を行う。
(2) ER1robotRTC を使って実際のロボットを動かしてみる。
(3) ゲームコントローラ(GameControllerRTC)を使ったロボット操作を通して RT ミド
ルウェアの使い方(コンポーネントの接続方法など)を学ぶ。
(4) サンプルプログラムを使ってタスクコンポーネントの作り方を学ぶ。
(5) 音声認識コンポーネントを使って音声認識を使ったタスクの実現方法を学ぶ。
(6) RGB-D センサ(Xtion)を利用した画像処理コンポーネントをベースに画像処理・認
識を体験する。
(7) 各班で次週行う選択課題を決定する。具体的な内容を図(フローチャート)
にしてみる。
-2 日目-
(1) 選択課題に関する議論:各自の検討内容を各班で議論してまとめる。
(2) 課題の実装:具体化した選択課題を実装する。
(3) 課題の評価:実装したロボットの評価を行う。
(4) レポート検討:レポートの内容について各班で議論する。
6. レポートのまとめ方
RTM を用いたコンポーネント化の利点は、作成したコンポーネントを部品として使い回す
ことである。本実験では、作成したコンポーネントを公開し、後で実験を行うグループがこ
れを部品として使うことでより高度なロボットを実現することを目指す。そのためレポート
は、各班が作成したコンポーネントを他の班が使用するために十分な説明を含む仕様書の役
割を果たすことが望まれる。また、実際にそのシステムがどの程度の性能なのかを、どのよ
うに評価すべきかを考えることは非常に重要である。つまり、目的に対して最終的にどこま
で到達できたのかということをできるだけ客観的に示すことで、作成したシステムの動作条
件や、できること/できないことを明らかにすることが必要である。こうしたことは、後にそ
のコンポーネントを使用もしくは改良する人にとっても重要な情報となる。
レポートに含むべき内容は以下の通りである。
(1) 実験の目的
(2) 作成したシステム・コンポーネントの概要(何を作ろうとしたのか?)
(3) 作成したシステム・コンポーネントの詳細
(4) システムの評価と考察
(5) まとめと残された課題
(6) 参考文献
レポートに関する詳細(提出方法などを含む)は、実験 HP を参照のこと。
http://apple.ee.uec.ac.jp/ROBOTEXP/attension.html
参考文献/情報
[1] evolution robotics, ER1 ユーザーガイド Ver.1.20, 2003
[2] OpenRTM-aist ホームページ, http://openrtm.org/
[3] OpenCV samples and documents, http://opencv.jp/
[4] セバスチャン・スラン他, 確率ロボティクス, 毎日コミュニケーションズ, 2007
[5] 実験のホームページ, http://apple.ee.uec.ac.jp/ROBOTEXP