2020年6月20日土曜日

ミニ四駆向けRFIDモジュールを探す

コースを走るミニ四駆をRFID(NFCタグ)で識別したい。って案件に向けての調査。

モジュール候補

余り手間を掛けたくないので市販モジュールを使ってやりたい。ぱっと入手性がよさそうなのは赤い色のPN532(aitendoで売ってる)のとamazonで沢山でてる青いRC522(ここが発祥?)RC522のほうが安いけど、基板設計の都合上電圧が3.3Vしか掛けられないが、PN532のモジュールのほうが5Vまで掛けられる都合上少し遠いタグでも反応する。具体的には手元の実験では3cm弱と5cmという差が見られた。

ミニ四駆は3レーンあるので、3つのモジュールを一つのマイコンに取り付けたい。候補としてはI2Cがこういう時は便利だが、PN532はチップレベルでI2Cアドレスが固定なので複数接続は不可能。RC522はチップ的には可能だが、出回っているモジュールは1番ピン(I2Cモード選択)がチップの裏で配線されているので、改造でI2Cモードにするのはかなり手間。

したがって、複数接続する場合は配線数が増えるもののSPI接続する事になる。なお価格差は300円程度なので、受信距離を重要視してPN532を選ぶか価格を重視してRC522を選ぶかといった所におちつくと思う。 

コイル検討

NFCの送受信コイルはこのモジュール上にパターンとして形成されているが、こいつだと走るミニ四駆は検知出来ない(実験済み)。 単純にコイルの上にタグがある時間が一定時間以上必要となる。モジュール上のコイルは2回巻きのコイルが2個直列に接続されている(+,GND,-に接続)。これをほどいて1回巻にしたコイルを作ってあげれば良い。

40mm角のコイルを2回巻きから1回巻にするとざっくり40x200弱mm位のコイルでちょうど良い。ちなみに、上の写真は実験した外付け基板コイル。

通過速度の検討

200mmのコイルを時速50km(確実にコースアウトするレベル爆速四駆)がはしると通過時間は約13ミリ秒。 

NFCタグは5ミリ秒での起動が規定されてるので、残り8ミリ秒がUUIDの読み取りに使える。読み取りに必要な時間は自信がないのだけれども、タグが一個しかなければ2ミリ秒程度でいけそう。 https://www.nxp.com/docs/en/data-sheet/MF0ICU1.pdf
さらに、読み取りコマンド発行のインターバルの問題がある。これはマイコン側の問題。arduinoで言えばタグ検知コマンドのloopに下手にdelay入れるとそのdelay中にミニ四駆が来ると取りこぼすので注意が必要。モニタへの文字列描画などのタイミングはちゃんと考えよう。

ちなみに二つのタグが反応するようなシーンだともっと検出時間がかかるが、そんなときはそもそも周回遅れが発生するほど遅いミニ四駆なので、読み取り時間的な余裕は相当あると考えられ、気にしない。





2020年2月22日土曜日

STEAM教育とか、芸術による社会的包摂とか、Maker活動によるイノベーションとか

同じような事を3カ所で説明してて、いい加減まとめようと思ったので・・・。

概要

・何かを作る事で、その分野の製作物に込められた思いが見えるようになるよ。
・思いが見えると、クソな製品・作品からも、込められた希望や愛が見えるというよりも触って実感できるようになるよ。
・ 触って実感できる範囲が拡がると、世界に自分の居場所がある事を思い出せるよ。

 詳細

これを書くきっかけ

私の住んでいるけいはんな地区で、アートや科学・技術で何かを作るワークショップをやって、未来に希望をもつ地域づくりをしようというプロジェクトをやろうとしています。そこに対する「何故」の説明をしていたのですが、思いのほか別の場所でも言及する事があったので、今思っている事をまとめました。
そのプロジェクトの課題はイノベーションってなかなか起こせないよねという話でした。イノベーションってなんか捉えにくいのですが、なんかワクワクする新しい事・モノぐらいなものに考えましょう。そういうワクワクを作る事に対する教育(?)としてハッカソンとか理系教育をやりますと言う話はよく聞くのですが、肌感覚として本当に製品や技術の供給不足が原因でしょうか?そんな事よりも「欲しいモノがねぇなぁ~」って言ってる消費者のほうがやばくないですか?新しい事に対する消費者不足感ってないですか?「現状でいいよ、(自分にとって)新しい事理解するの面倒だし。」って思ってる人身近にいないですか?もちろんその「現状」に満足しているなら、それはそれでいいんです。ヤバイのは「現状」を諦めてる人。生きてるの辛くないですか?

私の原体験:IVRC/ニコニコ技術部

話が飛びますが、私はモノを作る事で他人を理解する事、そしてその心地よさを感じた原体験を紹介しましょう。IVRC(学生対抗VRコンテスト)は学生が(主に)規模が大きなVR作品を作って体験させるVR学会主催のコンテストです。
(余談ですが左の黒い人が筆者で、右はスリムな稲見先生です)
このコンテストでは、各大学のサークル・研究室からチームで参加して、当時は1週間近く泊まり込んで設営作業をして、展示していました。私が参加した2001年当時は今みたいな便利なVR機材がなかったので、かなり手作り感溢れ「まともに動作したら優勝!」ぐらいの時代でした。一応はコンテストなので、建前上は他のチームはライバルです。しかし、みんな苦労して設営してるのはビシビシ伝わってくるし、自分も同じ苦労して作っているので、敵というより不思議と同業者のような仲間な感じがしてきます。これはモノを作る事に特化した話ではないとは思います。しかし、その後他のチームの作ったモノを体験する時が違うのです。配線の固定の仕方一つにしても、「あーココ設営中に断線して苦労したのでこんながっつりとめてるんやね」とか、フレームの剛性足りない中でも動くような涙ぐましい努力が伝わってきたり。部分的に諦めた機構や、それでも頑張って残した表現とかビシビシ伝わってくるのです。
アートの世界ではデッサンは描く技術の訓練じゃなくて、世界を見るための訓練であり「今まで見えてなかったモノ」に気が付くための行為だと言われる事がありますが、IVRCでの作品製作も同じ所があると思います。 (デッサンについては書籍「クリティカル・メイキング」参照)
その後社会人になっても、趣味で色々とくだらないモノを作り続けてるのですが、その中で出会ったのがニコニコ技術部というムーブメントでした。

ネタに載っけて自分の工作を披露する動画です。今でこそMaker Faireなどで単純に作りたいモノを作って、ソレを見に来るという事も有りますが、当時は技術開発系の趣味はそんなに大きな集客があるイベントになるような趣味ではありませんでした。そこに初音ミクというネタに載って工作を披露するという文脈が突然でき、ニコ動の中でもてはやされるようになりました。もちろん純粋にミクへの愛でやっていた人もいるとは思いますが、私はその中に作る事を趣味にしながら、それを旨く共有できなかった人達の寂しさの反動を感じました。
サラリーマン技術者だとよくありますよね、頑張って工夫して、新しい発見もあって色んな経験を経て作ったけど、売り文句は「他社より2割安いです!」かよっていう寂しさ。だからこそ、ニコニコ技術部の初期の動画は作る過程が大事だったし、失敗が大事だったし、コメントを見て次の作品を作っていたような気がします。(異論は認める)

作る事が与える事

上のような原体験から、私は何かを作る事で、それに類似した製作物の影に潜む作者の思いだとかが、見るというよりも生々しく、むしろ触るに近い感覚で理解できると感じています。しかし、これは単にモノを見る時だけの事でしょうか?日々新しいモノをつくりその度に色んな思いを知る事になる。単に機能していただけの世界は、本当は色んな人の思いを基にして作られている。ソレを知る事は意外と重要だと思っています。
冒頭の「これを書くきっかけ」に書いたように、例え今はイマイチな世界だとしても、その思いは、そのイマイチを超えた所にある。その気になれば、そのイマイチを次は自分がもっと良いものにしていけるし、そのモノをもっと良くすれば、「思い」もさらに次にすすむ。そんな経験をしている消費者が沢山いる世界は、むしろ生産者vs消費者というキッチリ分けられた典型的な構図というよりも、共同体のメンバーのそれぞれの役回りになれるのではないでしょうか?希望的な思いに過ぎないかもしれませんが、きっとそういう世界では、ブツクサ文句いいつつも、未来は自分のものだという希望を持てるとおもうのです。
世間ではSTEAM教育を職業訓練的に捉える人も居ます。上の観点で私はそれは勿体ないと思っています。そうではなくて、新しいモノ・コトを作ろうとしている奴を心から理解し「そいつぁーロックだな、いっちょのったるか!」というワクワクを作るための教育ができると私は思っているのです。もちろん一つのモノ・コトを作っても理解できる範囲は限られています、教育されるべきは作るコトで見えるようになった体験そのもので、その後で何を見るか、それを見るために何を作るかは各個人が選んでいくコトだと思っています。

作るコトを楽しむ為に

上みたいに「世界を理解するために、作るんですよ。」って教義だけ言われて素直にやるような人はまず居ないと思うんです。人は大昔から即物的に役に立つもの、愚にもつかないもの、いろんなモノやコトをつくって生きてきました。でもその基本には「つくったったで~」というドヤリングがあると思うんです。文化庁の「芸術による社会的包摂ハンドブック」なんかでは自己効力感だとか自己肯定感だとか難しい単語で説明していますが、ぶっちゃけ日々ちょっとしたドヤリングができてる状況だと思ってもそんなに外してないきがします。作るコトでのドヤリングについては、メディアアート界隈がヒントになると思っています。メディアートの基本は「でかい、たくさん、キラキラ」です(怒られる位の異論は認める)。 個人的には「でかい」に注目していて、まずは自分の身長よりデカイものを作ると、簡単なものでもちょっとしたドヤリングに繋がるんじゃないかと思っています(私の中ですら怪しい仮説)。ということで、けいはんな方面ではそういうプロジェクトを今後やっていこうかと思っています。
私はできるだけ単純な仕組みをみつけたくて、「でかいモノ」という単純なコトをやろうとしてますが、ニコ技のムーブメントみたいに、そこの社会での文脈にあわせて丁寧に作っていくドヤリングももちろん良いと思っています。

 さらに先に

これまでの話で、「作る事」が色んな人が作ってきたこの世界を触るが如く理解・共感し、未来に希望をもつのにつながるんじゃないのか?その「作る事」の入り口としてドヤリングは大切な気がしているという話をしました。
未来に希望をもつという各個人に関する事を超えて、他の人を思うという事についてもう少し考えてみたいと思います。コレは参考情報「②芸術による社会的包摂についての解説記事」を是非読んで欲しいのですが、モノを通して思いを知るという事を沢山重ねるというのは、言い換えると「今まで見えなかったけど、行動を起こし考えてみると見えるようになる」経験を積む事だと思います。すなわち世界には見えてないだけで、考えようと思えば考える余地なんて沢山あるという事に気が付くと思います。それを「自然の摂理」について考えれば科学になりますし、「人間にとって自然(世界)の持つ意味」について考えれば芸術の一分野になります。
ともすれば「経済の発展に学問は不要、あんな娯楽は予算ゼロでいいんじゃー。」と極論を述べる人もいます。しかし、上のような経験を積んだ人なら、「本当にそれでいいの?今までの人達の努力や思いの価値はゼロなの?」という疑問をもち、ちゃんと考える事は自然にできるでしょう。考えた上で、切り捨てるのならば仕方ないのですが、考えも共感もなく捨てるのは勿体ないですよね。同じ事は「②」の文章にあるように「合理的排除」される存在についても言えるでしょう。
もちろん、全てを深く考えるほど人間の脳みそは高性能じゃないです。生きるために仕方なく、割り切りも必要です。でも色んな人が、色んな事について、ちょっとだけ深く考えコダワリを持ち、私に理解できないとしても、そんなコダワリや思いが有る事を表面的に理解してる。それを多様性のある社会というじゃないんでしょうか?

社会的包摂は、一人でやればマッチョな頭脳が必要になっちゃいますが、自分が何かしらの思いをもつ事で、他の人が思いを持つ事を許容できる。それだけの事なら凡人でもなんとかできそうな気がします。もちろん、思いを持てば喧嘩は絶えないでしょう、でも「思い」の違いにすぎないという共通理解があれば、安易にあいつは人間じゃない殺してしまえ。という凶暴な結論に安易に繋がる事は無いでしょう。殺してしまえは極端ですが、安易に~~は不要って、ソレをやってる人に向かって言う人は現実にはちょいちょい聞きますよね。 (ま、本当に本人も不要だと思ってるけど、止める理由がないからやってるだけの時もありますが(笑))
 

参考情報 

①私が考えるきっかけになった記事 → https://news.yahoo.co.jp/byline/yuasamakoto/20180220-00081241/  
②芸術による社会的包摂についての解説記事→https://chez-nous.typepad.jp/tanukinohirune/2018/11/15.html
③そもそも芸術教育/研究と社会の発展についての関係について→クリティカルメイキング https://www.amazon.co.jp/dp/B078XD355G
④文化庁・九大によるハンドブック→http://www.sal.design.kyushu-u.ac.jp/pdf/2018_handbook_Bunkacho_SAL.pdfクリティカルメイキングは読むには重いので、一言でいうと「芸術の訓練は、手技のためではなく、発見のためにある。(生物学におけるスケッチと同じ)」②,③を読む限り、科学と(現代)芸術には枠組みの違いはあるものの、やるべき事の違いは無いと言える。で、なんで「作る」事で達成しようとするかについて。
再掲① ①がそうやっているからという単純な理由
⑤Maker Faireの意義→ https://docs.google.com/presentation/d/1u0nDHkeSttP1lgHbqyM-x_XHzW5NKHUP1t2qEdqi9gE/edit?usp=sharing
  私のMaker観:(上のp10)  (補足:「人間として正しい」と社会的包摂は目的と手段だと思っています)
  元ネタのBlog:https://makezine.jp/blog/2016/06/maker-faire-celebrates-maker-community.html上の説明だと、アイディアがあってから行動があったような説明ですが、私の実感は逆
楽しさの理由を探したら、「人間として正しい」なのでは?と考えるようになった
⑥VR学会主催学生VRコンテスト→http://ivrc.net/
 やってみればわかるんですが、作る事で、相手を理解できるようになる楽しいコンテストです
⑦そのIVRCを下敷きにした、NT京都 → https://ascii.jp/elem/000/000/877/877203/
⑧NT**の元になったニコニコ技術部→https://media.dmm-make.com/item/2261/ http://www.fumi2kick.com/rrtalk/archives/1007企業むけにキャッチーだなとおもった資料
⑨キャッチーに企業視点役立ちそうな本→アート・イン・ビジネス https://www.amazon.co.jp/dp/4641165580/
⑩現代アートの役割の一つが、現在進行形で変容する社会に視点を与える事だ→https://www.amazon.co.jp/dp/4802510195

2019年12月8日日曜日

自然と自然に フ自然な話の電飾トンネル

2019/12/1-8と電飾を山城森林公園に展示してきました。(https://hikarito.akirayou.net/)その時の作ってる時に思っていた事のメモです。 (そういや写真あまりとれてない・・・取ってた人いたら下さい)

この作品を作るきっかけは木津川アートで奥中さんの作品のところで電飾やってたのを知っていた比田さんが声をかけてくれたのは始まりで、このイベントは冬の山城森林公園を楽しんで欲しいという主旨でやってるんだけれども、今回の展示全体のテーマは「自然・不自然」とか言うけど「自然」ってなんやねん。そんな話のきっかけになると良いよねという事で、「自然と自然にフ自然な話」というテーマになっています。

私のテーマはその中でも、コミュニケーションやコミュニティの「自然」ってなに?て所からスタートしています。これはフライヤーにも「スマホでのコミュニケーションは不自然?」と書いてある通り、近年のSNSだとかについて心配する声などに対する疑問からきています。(別にそこに対する答えをババババンと出したい訳ではないです)

電飾はうっすら光ってる線の上を、色の付いた強い光が通るように点滅しており、通信であったり対話であったり、そういったコミュニケーションを示しています。電飾大きく、上・中・下に別れており、下は葛のツルに電飾が絡みついた有機的で複雑なネットワーク、すなわち古来からある、隣近所や集落などのコミュニケーションを示してます。それぞれの光の動きはツルで作られた集落に閉じこもっています。中段は通信網です、集落をとびこえ遠く集落に繋がったり、後で述べる上段にも繋がっています。集落から上に伸びた光の動きは、蛍光ロープで張られた規則的なグリッド上をながれていきます。ちなみに施工中は「この一番長い移動の幹線は太平洋横断海底ケーブルやな」とか思いながら施工していました。上段にあるのはネットなどに見られるコミュニティを創造しながら作りました。正十二面体の中に直線的に電飾が張り巡らされています。本来は中段につくられた通信網そのものと大差ないはずですが、実際には下段の集落同様、コミュニティ(12面体)内での通信に閉じています。このインターネットの「どこにでもつながるのに」、他のコミュニティとは中々繋がらないという現象は近年肌身で感じる方も多いでしょう。

こうやって俯瞰してみると、中段で理想的なフラットにどこまでも繋がるハードを整備しながら、コミュニティに閉じる様子は滑稽なようにもみえるし、隠れた合理性や本能があるかのようにも見ます。展示中は、下段だけがコミュニケーションを活発に行ったり、中段を通して、上段だけが活発にコミュニケーションを行ったりします。中段が静かで、下だけ、もしくは上だけが活発に動いて居るときは、視覚的には一つの光うごめく何かの物体に見えて、コミュニティが孤立(独立)したコミュニケーションを持つ事が解りやすいかと思います。逆に中段も一緒にうごくと(現実の世界では中段[=通信網]が止まる事は無い)色々な動きが見えるがために、実はコミュニティが孤立している事に気が付きにくくなります。

そういった、私が肌身で感じているコミュニケーション感をできるだけ電飾に詰め込んだ作品になります。

ちなみにテクニカルな部分では、電飾トンネルに1/5ほど歩みをすすめると、光に包まれた感がでるように作ってあります。 コミュニケーションを示す光の流れが周辺視野部を刺激して、気持ちがいいです。ジャスト私の趣味で、深い意味はないのですが、周辺視野に光の流れをぶちこんで、軽いベクションを作るのはきもちいいです。

最後に、この電飾トンネルの出口にはダミースマホの画面があります。これは、フライヤーを見てる人なら「スマホでのコミュニケーションは不自然?」って書いてあるのをヒントにして、コミュニケーションに関する作品なんやな。って気が付いてもらえるかも?という甘い期待もあったのですが、もう一つ、作っているうちに気が付いて入れた思いつきがあります。

スマホの画面って暗いと、鏡になるんですよね。上で、述べたように上段のネット上のコミュニティも、下段の集落コミュニティも一緒だし、そこを隔てる境界(=インターフェイス)はスマホである。つまり鏡の中と外の世界って程度のものなのかもしれない。

鏡という意味で、このトンネルみてみて下さい、両サイドに木がつけてあります。(当初はツルで作ろうとおもったんですが、後に木にしてます)。鳥居の語源は元々鳥がとまる、とまり木だとかいう説があたっりします。つまりこの装置は参道で、ご神体の鏡がスマホ。古代人が鏡を畏れ、信仰の対象にした本当の理由はわかりません。しかし私はその一つの理由に、自分の事を別の角度で映し出すからこそ畏れたのではと思う部分もあります。そういう意味では、SNSだとかの問題にしがちな近年のコミュニケーションに関する問題も、実はスマホという鏡を通して、別のコミュニティに射影して見えてるだけにすぎないのかもしれない。そんなシンプルな鏡の反射になってるからこそ、逆に恐れを抱いたり、否定したくなるのかもしれないなと思う時も有ります。

そんな事を思いながら作っていました。
でも、自分で作品を体験してみた素直な感想は「うひょ!やっぱ、周辺視野刺激するのは気持ち良いな〜〜ちゃんとトンネルに入って立ち止まらないと損だでよ〜。」でした。




ちなみに、これ以外に私が関わっていたのは、「光るドリンク」「階段のところとかにおいてあったキューブ状のLEDキャンドル」「12面体3つの電飾(平日はかぶって遊べた)」でした。

2019年10月31日木曜日

カルマンフィルタ積むまでもない時のローパスフィルタ

最近HX711をつんだ重量計を買ってM5stackでつかっていたのですよ。
アマゾンとか売ってる安いやつね。Arduinoライブラリでは引数に(10)とか入れて10回積算値を入れてたりするのだけれども、それだと応答性が悪い。応答性は計り取り(製薬やお料理)に重要で、速度が求められる。ということで、普通はこの積算回数と応答性のトレードオフになるんだけど、少しだけ賢い方法を紹介。

具体的な処理は以下の通り

  float w=ここで重量だとかを入力;
  static float oldV=0;  //平均値となる出力を入れる変数
  const float minRate=0.01; //重さの変動がないときはIIR係数0.01にする
               (小さい程積算回数が増えたのと等価になる)
  const float maxRate=0.999;//重さの変動が大きい時はIIR係数を1未満で大きな数にする(あまり弄る必要はなし)
  const float  threshWeight=5; //この変動量ぐらいが「大きい」「小さい」の閾値
  //////////実質的な処理は以下2行/////////////
  float rate = minRate+  min( fabs(w-oldV)/threshWeight ,1.0f)*(maxRate-minRate);
  oldV=w*rate+oldV*(1-rate);


重量計だとかは雑に考えると角がかけた階段状に出力値が変化すると考えられる、
そんなときはカルマンフィルタが王道だけど、とりあえずやっつけで実装したいときは上の実装で十分な応答性と精度が得られる。

rateがカルマンゲインに相当してるんだけど、この解説サイトの説明で言えば「予測不確かさ」と「観測不確かさ」がこの系には存在して、そのうち「予測」不確かさの割合をrateに入れるのが良いとされています。

過去の平均値と現在の入力値の差が予測不確かさに比例すると考えると上のの(w-oldV)は予測不確かさに比例した何かです。本来予測不確かさに対してカルマンゲインは定数である観測不確かさaをつかって、rate=x/(a+x)のような形になるんですが、上ではy=ax+bの形に近似してる事になります。

ここで、真面目に観測誤差とは何かとか考えてもいいんだけど、ぶっちゃけ必要な精度にあわせてminRateを小さくしていって、あとは変動が「大きい」時に高速化するためにthreshWeightを調整すると考えて勘で調整しても十分気持ちよく動いてくれる。



2019年10月4日金曜日

中華デジタルタイマーリレーの設定方法

先日買った、中華デジタルリレー設定方法の日本語訳が解りにくかったので、翻訳。

https://ja.aliexpress.com/item/33014830389.html?spm=a2g0s.9042311.0.0.463e4c4dOuik6D

モード設定をしてしまえば、電源復帰後そのモードで動きます。

トリガー入力はフォトカプラで絶縁されてるので、Gnd_tとSignalにそれなりの電圧をいれないとトリガー入力されません。3~24V とかいてありますが、5Vぐらいはいるっぽい。


SETを長押しして、設定モードに入る。UP/Downでモード切り替えができます。
モード切替後、SETを押してON/OFF(LED上ではCL/OPで表示)の時間を設定します。(SET=決定キー)
秒数入力モードの時以外に、再びSET長押しで、設定モードからぬけて通常動作します


モード一覧
P1.1: トリガーの立ち上がり/立ち下がりエッジ両方で[On時間]だけリレーをOn
P1.2:ONトリガになるたびに「On時間」だけ、リレーをON。トリガーONのままでも指定時間になったらOFFになる、立ち上がりトリガーが途中で立ったら指定秒数を再びセットする。(連打すればずっとON)
P1.3: トリガがONになるたびに「On時間」だけ、リレーをON 。P1.2と違いもう一回立ち上がりエッジがくると、中断してOFFになる
P1.4:トリガは無視、電源ON後一定時間のみONになる。 (車載装置などの遅延電源ON回路用途)
P2.1:立ち上がりエッジの後[Off時間]まってから[On時間]の間だけ、リレーOn。カウント中の入力は無視。(トリガーHiのままだと、Offのまま。一度LowにしてからHiにしないとカウントしない)
P2.2: P2.1と同じだけど、トリガーが入力されるたび秒数リセット
P3.1:トリガーでOn/OffループをLoop回まわす。 も一回トリガー入力があると、Loopを中断
P3.2:トリガーなしでOn/OffループをLoop回す(電源いれたら自動点滅する時に便利)
P-4: トリガーHiの間はリレーOn,トリガーLowになっても、[On時間]の間はOnを保持


時間入力モード:
設定で、OnやOff表示の後に自動で時間入力モードになる。stopボタンで小数点位置を決定できる。0.1秒単位と1秒単位がある。小数点が三つ表示されるのは「分」入力モード。


Stopモード:
Stopを一回おすと、タイマーは動くけど、リレーは動かさないコールドRUNモードになる。もう一回おすと復帰する

Stop長押しで、C-p,O-dモードが切り替えできるC-pは5分後にLED消灯, O-dモードは常にLED表示ON   (使うのか?この機能?)

2019年3月31日日曜日

robot_localization全然わからん。

robot_localizationを使って、roombaのwheel odometryと、realsense T265(VSLAMカメラ)によるVisual odometryを統合しようとしたら見事にハマったのでメモ。

http://docs.ros.org/melodic/api/robot_localization/html/index.html


T265のカメラがはき出すodometry座標系を利用して、その上にmapを置く構成の絶対座標を使っています。T265はroombaの端っこに載っているので、camera_pose_frameの下にbase_linkがずれた位置に存在しているというstatic TFを書いています。

後述のにように、このズレがたぶん色々な元凶な気ももします。
ということでTFとか楽勝なツヨツヨな方にチェックしていただければなぁ~。

暗黙のbase_link(本命)

Odometryのchild_frame情報をここで捨てている。
すなわち、Odometryのchild_framが暗黙のうちにbase_linkであることを仮定しているが、
VSLAMカメラは機体の端っこについているのでその分ずれる。
一応、座標変換ノードを入れれば対処可能?
https://github.com/cra-ros-pkg/robot_localization/blob/melodic-devel/src/ros_filter.cpp#L1690-L1701


差分とったら、元がなんであれframe_idはbase_linkだよね??(ついで)

differentialモードの時の話。
https://github.com/cra-ros-pkg/robot_localization/blob/melodic-devel/src/ros_filter.cpp#L2763

child_fram==base_linkだとして話すると、前回のodometoryPoseからの差分( poseTmp.setData(prevMeasurement.inverseTimes(poseTmp)) )の
frame_idはbase_linkだよね。そして、「twistPtr->header.frame_id = baseLinkFrameId_;」という風にたしかにbase_linkを設定している。
しかし、なぜか追加の回転「poseTmp.mult(targetFrameTrans, poseTmp)」をかけている
このへんが謎。

2019年2月21日木曜日

続ROS#と戦ってみた

とりあえずの戦況報告。
前回、BSON化してLaserScanを送るという所までできました。
その後、細々とした修正をに加え、PointCloudを扱うコードを追加したりしてました。

とりあえずの移動ロボット可視化には十分つかえそうな感じです。
もし要望があるようならば、そのうち解説をかこうかなと思っています。