2023年3月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

カテゴリー

ブログパーツ

無料ブログはココログ

« 2013年5月 | トップページ | 2013年7月 »

2013年6月

2013年6月23日 (日)

レーザー測域センサURG-04LXをROSで使う

ROSさんお手やわらかに:ROS奮闘編

今回からは「奮闘編」。レーザー測域センサを試してみる。
以前、運良く入手できたURG-04LXを、rvizで視覚化するチュートリアルをやってみる。

手持ちのURG-04LXは2009年9月生産のもので、インターフェイスのプロトコルはSCIP 2.0にアップグレードされている。電源5Vを給電するのは8ピンのPHコネクタから、パソコンとはUSBで接続。
Dscn2599

あとはチュートリアルにしたがって作業。

まずドライバをインストール(使っているROSはfuerte)
$ sudo apt-get install ros-fuerte-laser-drivers
【後日追加】groovyでのインストールは
$ sudo apt-get install ros-groovy-laser-drivers

次に、ポートのアクセス権をチェック。
$ ls -l /dev/ttyACM0

結果がこれだとダメ
crw-rw---- 1 root dialout 166, 0 Jun 23 18:24 /dev/ttyACM0

これを実行して
$ sudo chmod a+rw /dev/ttyACM0

こうなればOK
crw-rw-rw- 1 root dialout 166, 0 Jun 23 18:24 /dev/ttyACM0

実際のところ、アクセス権の変更はセンサを接続する度にやらなければならないようだ。USBを一度抜いてまた差し込むと crw-rw---- に戻ってしまう。
【後日追加】上記のアクセス権の設定はrootで入っていればやらなくとも動くようだ。

これを確認したら、roscoreを起動し、hokuyo_nodeを起動するわけだが、パラメータをいくつか設定する必要がある。チュートリアルにあるのは下記の二つ。
$ rosparam set hokuyo_node/calibrate_time false
$ rosparam set hokuyo_node/port /dev/ttyACM0

このままhokuyo_nodeを起動するとワーニングが出るので、下記のパラメータも設定
$ rosparam set use_rep_117 true

あとは下記でノードを起動。
$ rosrun hokuyo_node hokuyo_node

新たな端末を開き、初期化して下記コマンドでrvizを開く。
$ rosrun rviz rviz -d `rospack find hokuyo_node`/hokuyo_test.vcg

無事起動したが、グリッドもセンサの結果も表示されない。何かワーニングも出ているので、色々調べてみたが解らない。

結果、スケーリングの問題で、表示外に見たいところがあっただけだった。ワーニングは関係なかった。画面にマウスを乗せて、マウスのホイールを回し、グリッドが見えるようにスケールダウンする。チュートリアルではセンサの読み取りは緑色で表示されて居るが、僕の環境ではグリッドと同じ灰色で表示された。
rvizの画面操作は、ドラッグで旋回、シフト+ドラッグで平行移動だ。これが解らなくて苦労した。

センサを手で回してどんな風に見えるか確認する。これで動作は確認できた。

2013年6月22日 (土)

対話型知能ロボットを考える

ABCは知ってても

今回は対話ロボットについて考えてみます。今回のロボットも自律型ですから、構成は前回のものと良く似た形になります。

Photo

前回の図の「外部環境」のところに、カワイイ女の子のイラストがあります。これが「対話対象」です。ロボットはこの子と対話する訳です。

対話ロボットにも、もちろんのことミッションがあります。現在は、チケットを予約するとか道案内をするとかの情報型のミッションが多いのですが、対話で教示する作業ロボットのようなものも、これからの研究テーマになってくるものと思います。

前回同様、ロボットは相手を「観察」し、「人間の応答モデル」を使って、相手に適切な情報を「情報発信」します。このモデルは、例えば「おはようと挨拶をしたら、どのような反応が観察され、それぞれの反応はどういう意味か」のようなデータを集積したものです。これは、相手がどんなロジックで応答してくるかを記述したものといえるでしょう。もちろん、ロボットの観察の能力には制限がありますし、そもそも人間の思考ロジックの解明は出来ていない訳ですから、このモデルはかなり制約のあるものになると思います。

単純な物理現象を相手にする、作業ロボットと異なるのは、ロボットが対峙する人間もまた、ロボットの応答モデルを持っていて、これを使って反応してくるということです。
人間は「このロボットにこんなふうに話しかけたら、こういう反応をするのではないか」という予見をもってロボットに接し、ロボットが想定内の反応を示すことを期待するという傾向があるようです。そのとおりになると、コミュニケーションが成立していると感じ、トンチンカンな反応には不快感を感じます。さらに、トンチンカンな反応の比率が高いと、対話することにストレスを感じるようになります。

これに関して、もう一つ重要なことがあります。図を見ると、「観察」と「情報発信」の矢印が、人間側で太くなっています。これは、人間のその能力がロボットに比べて高いことを示しています。例えば、人間はロボットの姿形から相手の機能を推し量ることが出来ます。この図のような人間型ロボットなら、人間のように応答することを期待し、イヌ型のロボットなら、イヌのような応答を期待します。また、対話プロセスでも、テキスト情報のみに頼るのではなく、声の調子やテンポ、あるいは表情なども相手の発信ステータスとして活用するのは、誰しも心当たりのあることだと思います。

現在のところ、発表されているさまざまな対話ロボットを見ても、対話相手の「観察」能力は十分では無いように思います。まして、僕のようなアマチュアが製作するロボットではなおさらです。そのような制限のもと、対話ロボットが成功するかどうかは、このような人間側の特性を、理解し、上手に利用することが重要なのかもしれません。ロボット製作者はまさに「相手の立場に立って」ロボットをデザインする必要がある訳です。


2013年6月 6日 (木)

知能ロボットを考える

ABCは知ってても

何かを始める前に、「知能ロボット」についておさらいしておきましょう。知能ロボットだけではイメージがはっきりしないので、ここでは自律的に何らかの作業をする「自律作業ロボット」について考えてみます。

シェーキーの製作を通して、自律作業ロボットについて色々検討した事柄を、キーワードの相関図としてまとめたのがこれです。
1

左上の女の子がロボットのユーザーで、ロボットに「ミッション」を与えます。「ミッション」とはロボットが行う作業で、平文による音声指令のような高度なものから生のプログラムまで、様々な形で与えられます。「ミッション」の内容も、ロボットの性能によって、”ネコを探して連れてくる”といった難しいものから、”x=100,y=200の位置まで移動する”という単純なものまで、こちらも様々なものが考えられます。

右下が「ロボット」(これはアルデバランのNAO)です。ロボットは、この図のような生活空間とか、あるいは未知の惑星のどこかとかの「外部環境」の中に居て、「外部環境」を「操作」することが出来ます。
この「操作」というのは、外部環境の別の場所に移動したり、他の物体を移動させたりすることで、「外部環境」の状態を変えることを意味します。

同時にロボットは、センサで環境の状態を「観察」します。例えばシェーキーでは、ロボットの周囲を見渡せる測距センサで、周囲の物体までの距離を計測しています。これなどはかなり単純な例で、観察というより測定というべきでしょうが、実際のロボットでは、複数のセンサの読み出し値から総合的に環境の情報を引き出したりするコトも多いので、ここではあえて「観察」という言葉を使っています。

さて、いよいよ「人工知能」の周りを見ていきましょう。
人工知能は、簡単に言えば、ミッションを実行するためのコンピュータプログラムと考えることが出来ます。これはどのような作り方をしてもよい訳ですが、多くの人工知能に共通する仕様があります。それは「環境モデル」を利用するということです。

「環境モデル」とは、ロボットの周囲の環境の「観察」結果を、人工知能が利用可能な形に数値化したものです。シェーキーのマップは、極めて単純な環境モデルです。シェーキーはこのマップを元に移動計画を立てています。
このように環境モデルとは、現実世界を抽象化、記号化し、プログラムで扱いやすくしたものです。環境モデルの構築方法には、宇宙ロボットのように、ロボットが一から環境モデルを構築する場合と、あらかじめ用意されたモデルを、ロボットが手直しして使用する場合があるようです。

環境モデルと関連したキーワードとして、ロボットの「知識」があります。これは人工知能が環境モデルを評価するために必要です。例えば、マップから最短の移動パスを見つけるには、どこが通れてどこが通れないのかという判断をする必要があります。この判断のベースになるのが「知識」です。
「知識」というと、問題解決の情報を集めたデータベースみたいなものを思い浮かべますが、もっと素朴な知識も必要とされます。例えばシェーキーの知能は「障害物のあるところは通れない」という知識をベースにしていますが、これは、プログラムを作る際に、アルゴリズムの形で、プログラムに埋め込まれてしまっています。
先の例はあまりに素朴なので、プログラムに埋め込む形で実装することができました。しかし、実際の環境はそれほど単純ではなく、ドアのような「通れる障害物」だってある訳で、数多くの知識を持つ必要があります。そうなるとプログラムに埋め込むのはかなり困難で、何らかの形で、人工知能本体とは切り離す仕組みが必要になるのではないでしょうか。

ざっとですが、知能ロボットについて考えてみました。次回はこれをもとに、人間と対話する知能ロボットについて考えてみます。

« 2013年5月 | トップページ | 2013年7月 »