今日もポスターセッションは空間表現・形状表現を中心に。 というか、今のトレンドが明らかにそうで、運動学・機構・制御などの話題が極端に少なくなっている。 大抵のポスターにはCNNやAutoEncoderの絵が描いてあったりして。 問題設定に興味が合って見に行っても、ソリューションがニューラルネットだと全然分かった気になれない。
昼食の場所と一緒に食べてくれる人を探して会場内を3周くらい徘徊してたら、下田、林部くんが見つけてくれた。
プレナリーを逃してしまった。 その後のキーノートはジェミノイド、ソフィア、Amecaとネットで話題のリアルロボたちを作った方々のお話。 申し訳ないが、見た目のインパクトのわりにどれもこれも浅いなとしか思えなかったよ。 発表の仕方も茶番劇みたいだったし。 事前には、なるべく批判的にならないように聴こうと思っていたんだが(信じて!)。
夜にはバンケット替わりの立食パーティがあったが、部屋は狭いし音はうるさいし、暗い中で強めのスポットライトがぐるぐる回ってるし、全然落ち着かなかったので早めに逃げ出した。 高橋さん、多田隈先生、渡辺先生、平井先生、Galipon先生とスペインバルに。
ポスターセッションは空間表現・形状表現を中心に見て回る。 一休みする場所が少ない上に、隅の方でロボットアートみたいな奇っ怪なパフォーマンスを大音量でやっているので気が滅入ってくる。 近くで聴いている人たちはよく平気でいられるな。
Amecaの実物を見る。 顔の肌の質感がすごくリアルなロボットがすぐ近くにあって、良くできているなーとしげしげ眺めていたら、本物の人だった。
午前のキーノートも空間表現のヒントが得られるもので良かった。 さすがに疲れてたのか、午後のキーノートは寝てしまった。 内容は面白そうだったので、しまったな。 キーノート直前、平田先生が近くにいらしたのでMoonshotの苦労話を伺う。
夕飯は渡辺先生、下田、前田先生とチャイナタウンに行って食べる。
結局QRコードなしで向かったが、全く問題なく受け付けてもらった。 そして会場、分かりづら過ぎ。
ワークショップはこれに出てみた。 普段全く関わりのないコミュニティで、日本人参加も発表者を除けば恐らく自分だけという状況。 それは全然構わないのだが、途中4グループに分かれてのテーブルディスカッションが2回もあって、気が引けて逃げちゃった。
簡単なまとめ。
昼は下田と食べる。 ウェルカムレセプションは川原塚くん&高橋さんと回る。 その後大西さん、鈴村さん、廣瀬さんと会場近くのバルに飲みに行く。
リンク。 当日になっての作成で恐縮です。
外貨用小銭入れ、部屋用スリッパ、シャンプー、洗顔フォーム、垢すり、綿棒、バスタオル、
早朝出発、羽田からヒースロー直行便に乗る。
ANAを使ったのだが、今の飛行機ってエコノミー席でも電源使えるのね。 知らなかった。 赤VAIOはバッテリが心許ないので、PCは使わないつもりで持ち込み荷物を作ったのだが、そうと知っていれば…。 仕方がないので映画を5本も観てしまったよ。
ヒースローからの電車は渡辺先生、平井先生、木口先生とご一緒させて頂く。
そしてどうにか宿の部屋に入ってこれを書いている。 ウェブページが立派だったので期待してたのだが、なんだかとんでもなく小さい宿だった。 久しぶりの海外だったので、部屋用スリッパも忘れて来ちゃった。 しまったな。
ICRA registration teamからメールが来ていたので、QRコードか?と期待するも、全参加者向けのアナウンスだった。
出発前日になって慌てて参加者ガイダンスを読んでいるんだけど、QRコードってどこにあるの? Sylpheedじゃ表示されないよ…。
仕方ないのでregistration teamにメールを送った。 間に合うかな。 そして空港から宿への行き方をこれから調べる。
学校出入りの楽器屋さんが唄口の販売説明をしてくれるというので、保護者として参加。 ついでに練習風景を見学させてもらった。 音を聴くと色々言いたくなるのを堪えるのが大変だったかも。
昨晩帰りが遅かったせいか、一日中頭に霞がかかったような気分だった。 会議では的を射ない発言をしちゃったような気がする。 申し訳ない。
今朝はなぜか多めに引っかかった。
帰りの新幹線の中で なんとかできた。 周囲環境をキューブマップにするところのライブラリ化に悩む。
気付いたら出発が3日後だ。 もう何年も海外出張してないので、勘が鈍ってる。 とりあえず空港から宿への行き方確認しなきゃ。
記事。
I=diag( Ixx, Iyy, Izz )
Ixx=Iyy=ρVc (1/4r^2+1/12h^2) + ρ 2×1/2Vs (83/320r^2 + (1/2h + 3/8r)^2) = ρπr^2(8/15r^3 + 3/4r^2h + 1/3rh^2 + 1/12h^3)
Izz=ρVc 1/2r^2 + ρVs 2/5 r^2=ρπr^4(1/2h + 8/15r)
多面体近似と比較した限りでは合ってるみたい。
記事その1&その2。 ASTMが何かをまず知らなかったのだが、The American Society for Testing and Materialsのこと。
一番目の記事によれば "ASTM's new subcommittee aims to develop standards and testing procedures to effectively evaluate the performance of legged robots, whether they be bipedal or quadrupedal."だそうだが。
記事。 対応としては、無難かも知れんが正しいとは全く思えないんだよなあ。 末尾のVicente Ordóñez准教授の主張、問題にフタをするのではなく解決するべき、というのに同意。
記事。 餅は餅屋、掃除機は掃除機屋、というのが感想。
出勤の電車の中で多面体化続き。 難しくは無いが頂点インデックス対応付けが地味に面倒。 次はレンダリング。
自分自身はこれまで使いたいと思う場面が無かったので考えてなかったが、職場で干渉判定にカプセルクラスを使いたいという面々が意外に多いようなので、帰りの新幹線の中で実装を始めた。内外判定は簡単。多面体化と質量特性計算でちょっと時間食う。
続けてやってる。 関数一つでこのあたり処理できるのはなかなか便利だな。
移動中も結局鏡面反射レンダリングやってた。 本務の資料作りをしなきゃいけないのに。
テクスチャ座標系とgluLookAtの関係でちょっと悩んだが、一面ずつ対応をチェックしていってなんとか完了。 擬似鏡面反射レンダリングが出来るようになった。
これに息子と行ってきた。 ズールの名前の由来がゴーストバスターズだというのは、良いのか学会。
見どころはいくつもあるのだけど、個人的には奇跡の赤ちゃん恐竜スキピオニクスが一番印象強かった。 気管、血管、内臓まで残っていたというもの。
常設展示の方ではこういう企画展もやっていて、こちらも面白かったよ。 世界三大珍獣というのは、ある日本人が個人的な所感を言っただけだったと初めて知った。
次のようなコードは許容されるのか?という疑問が生じた。
#ifdef __cplusplus extern "C" { #endif #ifdef __cplusplus struct my_struct_t{ #else typedef struct{ #endif ... #ifdef __cplusplus int foo(){ return 0; } }; #else } my_struct_t; #endif #ifdef __cplusplus } #endif
見づらいが、要するにCならば
typedef struct{ ... } my_struct_t;
C++ならば
extern "C" { struct my_struct_t{ ... int foo(){ return 0; } }; }
と見えるようなコードにしたいわけだ。 Cの方は明らかに問題ないが、C++の方は、extern "C"しておきながら構造体がメソッドを持つC++風の書き方になっていて、これは良いのか?という疑問。
結論としては多分「良い」が答えで、理由は、extern "C"は構造体やクラスの定義には影響を及ぼさないから、らしい。 間違っていたら後日正す。
sizeofの値をprintfで表示したい場合、書式指定子は何にすれば良いのかという問題。 今まで深く考えずに%ldにしていたが、どうもunsignedみたいだし、サイズは処理系に依存するらしい。
調べたらずばり答えを書いてくれてる人発見。 C99ならば%zuを使うべきと。
問題は、自分のライブラリはANSI C互換を条件にしてしまっていることだ。 で、さらに調べたらこんなやりとりもあったりして、どうやら%luが僕にとっての答えらしい。
ちょっと遅れたけどリンク。
一週間経つの早過ぎ。 あんまり物事が前進してないなぁ…。
今西くんから大量の指摘。 勉強になる。 いつやるか?
一つ目はTesla。 上岡さんから情報。 短期間でしっかり作ってきてるな。 歩き方がH5とWabian-2Lそっくり。
Sanctuary AIという会社も突如として出てきて、謎。 足まわりの動きが見られないが、双腕搬送時の体幹の動きを見る限りでは全身協調ちゃんとしている。 どうやっているかはちょっと読み取れない。
出勤中に。 どちらも何年も前にやったことなのだが、暫くそういう真っ当な話から離れていたので勘が鈍ってる。 角軸ベクトルはθnなのかsinθnなのか、分野的にわりと曖昧なのかも知れん。
対応のために出社。
環境マッピングの勉強に入る。 キューブマップについてなんとか理解。
毎回さぼってしまっていたが、実に久しぶりに参加。 いろいろ余計な事言ってしまった気がする。 それでもしっかりまとめてくれた菅原くんの頑張りに感謝。
昨日の続き。 朝食前になんとか終わる。 RoKi-FDだけは脇坂くんの承認がいるのでプルリク投げる。
今西くんから指摘を受けて理解した。 今までZEDAで
#ifdef __BUILD_DLL #define __EXPORT declspec(dllexport) #else #define __EXPORT declspec(dllimport) #endif
みたいに定義していたが、異なるライブラリ間でこれを使いまわしたら正しく働かないということに今更ながら気づいた。 ライブラリごとに、名前を変えて同様のマクロ定義をしなければいけないということ。 帰りの新幹線の中でこの作業を始めた。
煩わしいのでmakefileの中でヘッダを自動作成するようにする。 ライブラリの名前を変数にしてあるので、それを参照すれば可能。 それにしてもそれに関連する作業が多かったので、帰宅までに終わらず。 続きは明朝。
ちょっと混乱してしまったのだが、分かりやすく整理してくれてる記事を見つけた。
買った。
RoKiをどう拡張しようかという話。 平面関節モデルを作って車輪リンクと組み合わせちゃえば良いのかなと考えてる。
GLSLの勉強続き。 マルチテクスチャ対応のため、フラグメントシェーダの中にサンプラの配列を作ろうと思った。 こんな感じ。
uniform int num_sampler; uniform sampler2D sampler[8]; uniform float mix_rate[8]; ... for(int i=0; i<8; i++ ){ diffuse = mix( diffuse, texture2D( sampler[i], gl_TexCoord[i].st ), mix_rate[i] ); ... }
ところが次のように言われる。
0:1(826): warning: sampler arrays indexed with non-constant expressions will be forbidden in GLSL 1.30 and later 0:1(838): error: unsized array index must be constant
つまり添え時は定数でなければダメだと。 そんな仕様とは…。 仕方ないのでループを全部書き下すことに。 要素8個くらいならまだ良いが、汎用性上げるのは大変だなこれ。
とりあえずGLSLでマルチテクスチャ使えるようにした。 シェーダをライブラリ化するのはどうすれば良いのかな?と考えたが、ソースを丸々マクロにしてしまえば良いと気付いた。
最近はこれを読みながら、GLSLを少しずつ勉強している。 その都合で、RoKi-GLをGLEW拡張対応した。
glew.hはgl.hをオーバーライドしてしまうのだが、どうやらそのせいでマルチテクスチャまわりの動作がデフォだとおかしくなる。 具体的にはglActiveTextureがNULLになってしまう。 解決策は、GLコンテクスト(例えばGLUTウィンドウ)を作った後にglewInit()すること。 glActiveTexture()使わないプログラムではglewInit()しなくても何も問題出ないので、これに気付くまで手間取った。
もう一つ分かったこと。 glActiveTexture()は、テクスチャ作成する際には不要で、レンダリングする時だけ必要である。 ウェブで解説している記事でもここ誤解しているものが結構あるように思うので要注意。 ただし、GLSLでシェーダプログラミングするときは考え方が全く異なり、マルチテクスチャと無関係にテクスチャユニット使って切り替える(逆にglBindTexture()は使わない)。 これは混乱の元になると思う。
再開したのは、映画「Winny」を観たと書き残したくなったから。 東出昌大さんが良い芝居している。 最後に金子さんご本人のインタビュー動画も出てくるのが感慨深い。 「こんにちはマイコン」が出てきたのは演出ならやり過ぎだと感じたが、実話だったとしたら面白い。 あと、阿蘇山大噴火氏がご本人役で出演してて驚いた。 そろそろ上映終了してしまうので、ご興味ある方はぜひお早めに。
私用赤VAIOのCPUファンの音が大きくなったので、近くのPC修理屋に出したらそこからトラブル拡大して1か月くらい触れなかった。 そのせいで中断、そのままPC復帰しても再開する気力が出ず放置状態だった、という経緯。