日記 — graph-based SLAMの解説文(書きかけ)、OS不具合尻拭いスクリプト、ますとどん、今週はシェル芸勉強会

Pocket
LINEで送る

今週末のことを重要なことから。

graph-based SLAMの解説書

確率ロボティクスの日本語ドキュメント・サンプル充実プロジェクトとして、先週はコードのサンプルをjupyter notebookに書くということをやっていましたが、今週は数式で解説するための文章を書いてました。うん。10年仕事が遅い。

まだ書きかけで粗いですが、世界で一番簡単に理解できるようにするつもりです。

Raspberry Pi3にUbuntu 16.04 Serverをインストールするときの便利スクリプト

3月以来、device treeのアドレスがアレでOSをアップデートするとクラッシュするというアレな感じになっている https://wiki.ubuntu.com/ARM/RaspberryPi のラズパイ3用Ubuntu 16.04イメージですが、今度はアップデートでwlan0が見えなくなるというアレな状況になりました。いくらサポートしてないからと言ってなんなんでしょう。

ということで、これらの不具合を回避しながらカーネルをアップデートするためのシェルスクリプトをGitHubのryuichiueda/raspimouse_book_ubuntu_initに置きました。このリポジトリにある after_os_install.bashです。ここにも同じコードを貼りつけておきます。 https://wiki.ubuntu.com/ARM/RaspberryPiのイメージをmicroSDに書き込んでOSを立ち上げてsshでログインし、すぐに適用します。

#!/bin/bash
# (c) 2017 Ryuichi Ueda
# This software is released under the MIT License, see LICENSE at https://github.com/ryuichiueda/raspimouse_book_ubuntu_init.

tmp=/tmp/$$

### purge of the cloud-init ###
sudo apt -y purge cloud-init

### remove the bug on the device tree address ###
cat /boot/firmware/config.txt                                           |
sudo tee /boot/firmware/config.txt.org                                  |
sed 's/device_tree_address=0x100/device_tree_address=0x02008000/'       |
sed 's/device_tree_end=0x8000/#&/'					|
sudo tee $tmp-config 

sudo mv $tmp-config /boot/firmware/config.txt

### stop network device update ###
echo linux-firmware-raspi2 hold |
sudo dpkg --set-selections

### update ###
sudo apt update
sudo apt -y upgrade

### install WiFi tools ###
sudo apt -y install wireless-tools wpasupplicant

sudo reboot

このコードを読むと分かりますが、ファームウェアの自動アップデートを止めていますのでご注意ください。このリポジトリにある他のシェルスクリプトは、ラズパイマウス本の各パートのコードをラズパイにインストールして、各章を飛ばしてしまうためのチート的なものです。

ますとどん

遊んでます。

今のところ謎論理を展開する変なおじさんおばさんがいなくて非常に開放的です。多分、スキル的に彼らがやってくるのは当面先の話でしょう。Twitterでよく絡んでいる人たちも、束の間の自由を楽しんでいるご様子でした。自分が小難しいことをTwitterでたまに言ってしまうのは、変なおじさんおばさんを見てイライラして、そっちの側に回ってしまうという一種の集団ヒステリーなんだなーと反省しました。

 

このサービスについていろいろ評論している人がいますが、もし何かあるなら自然淘汰されるだけなので、ブックメーカーが賭けをしない限り、なんの意味もないと思います。そういう人たちは自分の仕事に集中していないだけなので、気にすることはないと思います。管理者さん頑張れ。

今週末はシェル芸勉強会

今回は募集が早すぎたような気がして、ドタキャンが多い予感がします。どうなることやら。内容は「普通のsed」にしました。普通とは。

寝る。

Pocket
LINEで送る

日記 —Kindle版ラズパイマウス本、確率ロボティクスのjupyter notebook

Pocket
LINEで送る

ここ数日の報告を2点。

Kindle版ラズパイマウス本

出ました。

 

確率ロボティクスのjupyter notebook

MCLにもgraph-based SLAMにもコメントをたくさん入れました。数式もsympyで入れようとしましたが、ごちゃごちゃしたので別紙に書きます。これも真面目にやると時間がかかるのでおおごとになってきました・・・

Pocket
LINEで送る

Jupyter notebookで確率ロボティクスのコードを書いていくプロジェクトを始めた

Pocket
LINEで送る


表題の通りの新プロジェクトを始めました。この前まではプログラミング言語兼シェルのGlueLangを作ってましたが、これは一段落がついてOSCかどこかで発表をするというフェーズに入っています。ユーザがほとんどいませんが、地道に増やして行きたいです。歳をとると(そうでなくても)、やむを得ない理由もないのに手が止まって評論家みたいになっちゃう人たちがいるのは、Facebookで地球マーク持論撒き散らし系を見てるとよく分かるかとは思いますが、自分は死ぬまでそうはならんぞと、一人、誰に頼まれているわけでもなく意気込んでいます。(なんで毒づいているんだろう?)

 

あ、安心してください。ちゃんと研究も履いてますよ!じゃなかったやってますよ!

新プロジェクトでやること

今回やることは、10年前に翻訳したこの本:

のアルゴリズムと、本に掲載されていない新しいアルゴリズムをjupyter notebookで記述することです。ご存知の方も多いはずですが、確率ロボティクス関係のコードの例は@Atsushi_twiさんがMatlabで書いていらっしゃるので、見比べて参考にしていただければと。図が似ちゃってすみません。

目的

  • 講義で使う(予定があるだけでも大学院の後期の講義、とある中部地方の大学での非常勤講師、五月のロボット学会のセミナーと色々)
  • 自分で書いたコードでないと説明が大雑把になるので自分で一通りコードを書く
  • 翻訳本に引き続き日本語のドキュメントを充実してパブリックに晒す

もちろん、最先端ではないのですが、特に日本語話者で基本的なアルゴリズムを知っている人が増えて層が厚くなれば、最先端を目指す人も増えるだろうと考えています。もちろん、自分も早く最先端に追いつきたいのですが、もうちょっと時間がかかりそうですし、教育も重要なのでバランスよく貢献したいと思ってます。

さっそく2つ作った

とりあえずMonte Carlo Localizationgraph-based SLAMを実装しました。リンク先にはコードだけでなく、図も出力されています。jupyter notebookとGitHubの機能はただただ素晴らしいですね。(PCから閲覧しないと、コードや図が見えずにJSONのデータが見えてしまうかもしれません。)

解説はコードの中に書いていく予定(少し書いてありますが、なんとなく英語で書き始めてしまったので日本語にしていきます)ですので、ここでは画像だけ貼ってお茶を濁すことにします。まだ始めて4日目なので、細かい話はご勘弁を。

Monte Carlo Localization

この図は、ロボットがランドマーク(星)の距離と見える向きを測って自己位置推定している様子です。ロボット(赤い矢印)が座標(0,0)の原点からスタートして、ぐるっと円を描いて、今は原点の下あたりにいます。

 

現在の赤い矢印の下に、青い矢印の集団がいますが、この矢印一つ一つはランドマーク観測とデッドレコニング情報から推定されたロボットの候補点(パーティクル)です。灰色の矢印は、デッドレコニングのみで推定したときのパーティクルを比較で表示したもので、青い矢印より拡散して推定がボケているのが分かります。

右下のランドマークに水色の楕円がたくさんあるのは、ロボットのランドマーク計測結果を各パーティクルの位置からプロジェクションしたもので、この楕円がランドマークの位置に近いパーティクルが、次のステップのパーティクルを生成するときに重視されます。

graph-based SLAM

確率ロボティクスになかった(GraphSLAMという似たものはある)ので、新たに説明文を作るには自分で実装するしかなく、このプロジェクトを始めたきっかけになったアルゴリズムです。GraphSLAMとはちょっと違うという認識ですが、どこが違うか(確かデッドレコニングのデータの扱いだったような)はもう一度読まないと思い出せません。解説の文章はこちらにありますが、同様の内容のものが書いたご本人によってアップされているので探してみていただければと。

graph-based SLAMはオフラインの地図生成手法で、ロボットのデッドレコニング情報とランドマーク計測の情報を集めてから、後処理でロボットがたどったパスを求め、そこからランドマークの位置を求めます。図は、上が集めた情報、下が集めた情報からSLAMでパスを求めた結果です。赤の矢印がロボットの真のパス、灰色が推定値で、上の図ではデッドレコニングで求めたパスそのままですが、下では修正されて赤の矢印に近くなっています。なお、ランドマーク計測では、ロボットからの距離と見える向きの他に、ランドマークにも向きがあって、ロボットからそれが観測できるという前提を置いています。ランドマークは互いに識別可能という前提も置いています。

 

水色の楕円は二箇所から同じランドマークを観測したときに、一つの位置からもう一方の位置がどこに推定されて、その信頼性(共分散行列)がどのように広がっているかを示しています。要はこれらの楕円を推定されるパス上に寄せていくことで推定を進めていくのがこのアルゴリズムです。ピンク色の線は推定位置から見えたランドマークの位置を指しており、これも推定が進むと正解の位置に揃ってきます。

 

なお、センサの精度を上げてやるともっとドンピシャで合ってかっこ良いのですが、さすがに都合が良すぎるのでちょっと下げてやってます。

 

とりあえず5月の講演に向けてちまちま作っていく所存。

Pocket
LINEで送る

確率ロボティクスの電子版も充実しているようです

Pocket
LINEで送る

最近は自身での告知のためにほとんどネット廃人と化している上田です。

昨日、シェルプログラミング実用テクニックの正式の発売日でした。Twitter見ていると手元に届いた人が多く見られ、書いた本人としては緊張で下痢するの一言です。心臓に毛を生やしたいものです。

ところで、4月に復刊していただいた確率ロボティクスですが、こちらしばらくはマイナビさんのページにしかなかったのですが、ここにきてKindle版の発売が始まり、達人出版会さんでも取り扱いが始まりました。

何卒よろしくお願いいたします。

ついでにジュンク堂池袋店で、店頭売りする確率ロボティクスのためにPOPを4月に書いてきたので、実物を見たければぜひ池袋まで・・・。

Pocket
LINEで送る

日記(確率ロボティクス復刊等)

Pocket
LINEで送る

確率ロボティクスの発送が始まったはず

本日は確率ロボティクス復刊の日、正確には最初に予約した人に発送される日でした。

 

【先行予約】確率ロボティクス | マイナビブックス 【先行予約】確率ロボティクス | マイナビブックス 

若気の至りをほじくり返されるような気分になっておりますが、有難いことです。あと、長く手に入らない状態にして大変申し訳なく。経緯は先日書いた通りです。

今は「ここの翻訳変じゃね?」と簡単にネット上で言える世の中なので、次の修正の機会を見越してダメ出ししていただければ幸いです。

同僚募集

それから大学が助教の公募をしているのを見つけ、どんな人が同室になるか妄想が膨らんでおります。検索して探してみてくださいませ。

他、とくにネット上に上げる話でもない話

仕事としては来週始まる講義のふたコマ分の資料を作ってました。講義用のサーバを立てました。

午後は書きかけの投稿論文の実験。昨日まで某雑誌の記事が難航しておりあまり寝てないのですが今日は珍しく1日眠くならずに持ちました。

ちょっと困っているのがxargsの-Pが思ったように動いてくれんという問題で、xargs -P 10とやっても100%がんばるプロセスが11個と、1個余計に立ち上がってしまいます。論文なので正確に10プロセスでやりたいんですが・・・。困った。

 寝る。

Pocket
LINEで送る

確率ロボティクス復刊。ドサクサに紛れて昔話2(値段について)

Pocket
LINEで送る

昨日から始めた昔話(昨日のポエム)ですが、数年後、確か27歳くらいのときの話から。なぜ8000円(当時)になったかという話(は少しでほとんどポエムなのかエッセイなのかという文章ですが・・・)。

続きを読む 確率ロボティクス復刊。ドサクサに紛れて昔話2(値段について)

Pocket
LINEで送る

確率ロボティクス復刊。ドサクサに紛れて昔話

Pocket
LINEで送る

長らく休刊状態で懺悔状態だった確率ロボティクスがとうとう復活しました。ご関係者の方、大変ありがとうございました。

事前には知ってました。が、呑んでる最中に公式アナウンスが来たのでビックリしてビールを鼻から噴射しました。

続きを読む 確率ロボティクス復刊。ドサクサに紛れて昔話

Pocket
LINEで送る

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

Pocket
LINEで送る

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

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

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

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

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

97211-animation

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

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

おしまい。

出典:

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

Pocket
LINEで送る