日記 —自己位置推定の実機実装

Pocket
LINEで送る

必要に迫られ、およそ10年数ぶりに実機用のパーティクルフィルタのコードを書いています。売るものではないので公開してますが、ロボットの場合、ハードウェアが違うとコードがそのまま使えないのであまり反響はありません・・・が、ロボットは日経Linuxの連載で使っているRaspberry Pi Mouseで市販品なので、ちゃんとお化粧して教科書書いて小銭を稼ぐ使ってもらうのが目標です。

リポジトリを見ても、「ああC++だなあ(逃げよう)」ということくらいしか分からんのでここに何やってるか書いておくと、次の写真のような環境で、ロボットに地図をもたせて、地図のどこにロボットがいるのか自分で把握させるコードを書いています。センサ情報はロボット前面の四つの赤外線センサから得られます。また、ロボットがどれだけ動いたかはモータへの指令から求めることができますが、壁に接触しながら動くと訳の分からん挙動を示すので大変です。

スクリーンショット 2015-08-09 20.14.35

ロボットは次のような地図を持っています。ロードした地図をテキストで描画する確認用プログラムの出力を示します。シェル芸でしょうか。いいえ、C++です。

uedambp:map ueda$ ./main ./map | head -n 15
+---+---+---+---+
|       |       |   
+   +   +   +   +
|       |       |   
+   +   +   +   +
|       |       |   
+---+   +---+---+
|   |           |   
+---+---+---+---+

この出力をFacebookに貼りつけたら「Rogueみたい」というコメントを書き込むおじさまがたがたくさん釣れたんですが、さあなんのことやら。

今日と明日はロボットのいる大学に行けないのでロボットへの行動指令とセンサの値のログを採取して開発中ですが、とりあえずそれっぽいものができましのでgifアニメをはりつけます。

animation

作っているコードはパーティクルフィルタというものです。地図の上にロボットの分身(ブツブツ)をばら撒いて、行動とセンサの履歴が説明できない分身を殺しまくって、説明できるやつを増やしてロボットの実際の位置に分身の位置を寄せていきます。

上の実行例は実際のロボットの位置を書き込んでないのですが、最終的にはロボットの最後の位置近くにブツブツが固まりました。

まだなんのことかサッパリ分からんと思いますが、続きは某所での講義で。分かってる人には「壁にぶつかったあとのパーティクルの挙動のモデル化が難しかったけど適当な方法でもうまくいった」とお伝えします。

寝る。

Pocket
LINEで送る

イベント案内(過去・当日含む)

Pocket
LINEで送る

なんかバタバタしておりますが、いろいろやっておりますのでまとめておきます。

RoboCup JapanOpen 2014

自律ロボットでサッカーをやる大会の実行委員をゴールデンウィークにやってきました。私の出身母体と言っていい大会です。ロボカップには種々のリーグがありますが、私がオーガナイズしたのは標準ロボットリーグです。

今回の標準ロボットリーグは日本から2チーム、台湾から2チーム参加して、愛知県立大学が優勝しました。今年はどのチームもロボットが動いており、だんだんサッカーっぽくなってきました。一方私は準備+4日間緊張しっぱなしで動かなくなりましたとさ。全体の運営をされていた両O先生も大変そうでした。

続きを読む イベント案内(過去・当日含む)

Pocket
LINEで送る

この前の発表資料(自律分散システムシンポジウム)

Pocket
LINEで送る

学会での発表はほぼ6年ぶりでした。こういう直接は何の役にも立たんことを大真面目に考えたのも6年ぶり。理論の空白地帯に踏み込んで行くのが私の仕事なので、10年後はサラリーマンに戻るのを覚悟しつつ、自分の気づいていることをひたすら紙に落とし続けて行かねばなりません。

この発表は要は何かというと、例えば人間が真っ暗な家の中で何処かに行こうとすると、壁伝いになんとか行けてしまうわけですが、そのような「場所がわからんならわからんなりに動いてゴールまで行く」というのを確率モデルで再現できないかというのが動機になってます。

ロボットは「あるゴール地点まで行け」と指令を受けているのに、今現在、自分のいる地点を知る目印が不十分で、自分の位置を一点に定めることができないという状況です。

細かいことは抜きに結論だけ言うと、ロボットがゴール地点を効率よく探し出してゴール地点に向かう行動決定のモデルを作ることができました。

スライドにはgifアニメが二つありますが、slideshareでは動かないので下に貼り付けます。(動いてなくてもクリックすると動きます。)

97211-animation

点ランドマークが一つしか無いためロボットの位置が常に不定(ドーナッツ状の領域のどこかにいるということしか分からない状態)のままロボットは行動決定しますが、円状に分布したパーティクルを消し込むようにロボットが動くことで、ロボットはゴールを探し当てます。

今後なんですが、違う環境で同じように位置が不定になる状況を作り、ロボットのゴール探し行動を作ろうと考えてますが、他の仕事に追い回されて・・・

おしまい。

出典:

上田隆一:
“タスクの到達度予測による信念状態の評価,”
第26回自律分散システムシンポジウム, pp. 2A1-1, 2014.

Pocket
LINEで送る