F^3RC始動

 

6月16日(土)より、F^3RCに向けて本格的に会議が始まりました。

 

0616話し合い ロギ

 

今回参加するチームは、2チームです。

高校で同級生であったにもかかわらず、大学に入学した年が異なる2人が率いるAチーム(仮名)。

keitakatzの高校の先輩にして、大学の後輩のSさんが率いるBチーム(仮名)。

 

0616話し合い Aチーム ロギ

 

今年は人数が多いうえにやる気に満ち溢れており、結果に期待を持てます。

 

 

広告

確率ロボティクス、はじめました。

今週から毎週火曜日に行う予定の、『確率ロボティクス』の輪読会が始まりました。

『確率ロボティクス』(著:Sebastian Thrun,他2名)は、確率・統計を駆使して予測不可能な事象に対処するアルゴリズムを理解するための参考書です。

第1回で講師をしてくれたのは、koke688君とsyuntoku14さんの2名。

酒井

 

北村さん2

 

今回の解説箇所は第1章と第2章。ベイズ法則・ベイズ更新まで進みました。

初回からやる気のある新入生が2人も来てくれたので、KRAの未来は明るいですね。

 

説明会会場への案内

道案内0

D:ロボット技術研究会の説明会に行きたいのに、教室の場所がわからないよ~~!!

明日から説明会が始まるのに、どうしよ~!

道案内1

犬:お困りロギか?

D:あ、ロギ犬さん!!助けてください!説明会の教室に辿りつけないんです!

犬:ああ。確かに慣れるまでは、この教室番号はわかりづらいロギね。

よし。案内してやるロギ、新入生!!

DSC_0147

犬:ロボット技術研究会、略称KRAの1日目と3日目の説明会は、この建物の中で行われるロギ。

D:敷地に入ってすぐ左の建物ですね。『独立館』ですか。

あ、もしかして教室番号の『D』って…

犬:よく気づいたロギ!そう。頭に『D』がついている教室は、独立館の中にあるロギ~。

D:でも、さっき入ったら、教室番号が『DB』だったのですが…

犬:いや、よく見るロギ。

DSC_0146

D:・・・『B2』?ここ、地上ですよね?

犬:独立館が4号館とつながっているから、こうなっているロギ。

4号館の1階に独立館の1階を合わせた結果ロギね。

独立館の地下にある教室は、頭に『DB』がついているロギ。

DSC_0127

犬:これが4号館と独立館1階のフロアマップロギ。学生部が目印ロギね。

D:あ、2日目の会場である『J414』がありました!

犬:そう。頭に『J』がついている教室は、基本的に4号館にあるロギ。それよりも、上を見るロギ。

DSC_0144

D:うわぁ、けっこう高い建物なんですね。

犬:4階まであるロギ。1日目と3日目の説明会は、3階で行われるロギ。

DSC_0132

犬:これが、3階のフロアマップになるロギ。右端にある教室が、説明会の会場になるロギ。

D:右端、右端…

DSC_0133

D:あ!『D310』と『D312』ありました!!

犬:ちなみに、マップの『アトリウム』からダイブすれば学生部前まで戻れるロギ。

D:いや、階段あるんで階段使いましょうよ。

というか、ダイブする前に振り返ればエレベーターもありますし。

道案内3

犬:さて、教室番号は理解できたロギか?

D:はい、4号館と独立館だけですけど。

犬:上出来ロギ。これで、全ての説明会に顔を出せるロギね!

D:はい!!
・・・え?

犬:ところで、説明会の日程は全部覚えているロギ?

D:いや、覚えているわけないでしょう…

犬:なら、ここをクリックするロギ!!

D:ポチっとな。あ、日程がでました。

うわ、後半のコイツ、めっちゃ先輩風吹かしてる。

犬:本人の前で言っちゃダメだロギよ。豆腐メンタルが崩壊するロギ。

そんなことより、注意点が1つあるロギ。

D:なんです?

犬:『J』がつく教室は基本的に4号館にあると言ったロギが、あくまで『基本的』ロギ。

例えば、6号館の一部の教室は頭に『J』がついているロギ。他にも様々な例外があるロギ。

慣れるまでは、よく調べて行動するべきロギ。

D:何から何まで、ありがとうございます。それにしても、無駄に難しいですね。

犬:ほんとロギ!!

道案内2

マスコットキャラクター交代のお知らせ

我々ロボット技術研究会のマスコットキャラクターとして親しんでいただきましたロギ犬ですが、鉛中毒により長期入院が決定したためマスコットキャラクターの座を降りることとなりました。原因は3/30(金)の夕食のネジ鍋にはんだが混入したことです。

突然のことで恐縮ですが本日よりロボット技術研究会のマスコットキャラクターはロギ犬に変わりまして「ロギギロギッギ」となります。

新マスコットキャラクター「ロギギロギッギ」

今後ともロボット技術研究会及びロギギロギッギをよろしくお願いします。

2018年度説明会案内と総合教育科目について

電子工学科への配属が決まったkeitakatzです。

慶應に進学する皆様、ご入学おめでとうございます。

4月の頭に入学式が行われた後ガイダンス期間というものが三日ほどあるのですが、様々なサークルが勧誘や説明会を行っています。我々ロボット技術研究会(通称ロ技研)も説明会を開催するのでその日程をお知らせしようと思います。

4/4(水)13:00~14:00 @D312 (独立館3階)
4/5(木)16:00~17:00 @J414(4号校舎1階)
4/6(金)14:00~15:00 @D310(独立館3階)

※独立館は4号校舎1階の連絡通路から入れます

さて、この時期にこのブログを見ているということは、ロ技研に興味がある方々なのでしょう。ならば先輩としてアドバイスをしないわけにはいきませんね。

というわけで、今回は『総合教育科目』について書いていこうと思います。

まず総合教育科目とは何かというと、簡単に言えば「自分の興味に応じて履修できる科目」の総称です。詳しいことは、ガイダンスで配布される履修案内を参照してください。

この科目群は進級条件や卒業条件に関わっているので、履修できるなら履修しておいた方が有利になるものです。ただ、1年生で履修の配分を間違えるとかなりツラいことになります。ここで僕の失敗談を書いておきましょう。

まず、理工学部での3年生への進級条件における総合教育科目の必要単位数は8単位です。しかし、3年生になると所属が日吉キャンパスから矢上キャンパスへ移行するというのに、日吉キャンパスで受けなければならない単位数は10単位なのです。混乱するかもしれませんが、要するに「3年生に上がってもいいけど、単位数が足りないなら授業のために矢上から日吉まで来なさい」ということです。もちろん、授業が終わったら次の授業を受けに矢上まで戻ります。⇒参考所要時間

この往復を自分のミスのせいで繰り返すとなると、精神の摩耗は避けられないでしょう。

2年生がどれだけ忙しくなるかわからない僕は、『2年は忙しいだろうし、1年で単位を取れるだけ取っておけば2年からの忙しさを軽減できるのでは?』と考えました。するとどうでしょう。テスト期間はまさに、地獄の様相となってしまいました。総合教育科目の成績を決めるもの(レポートやテストなど)も必修科目と同じ時期に作業します。レポートなら作成に、テストなら勉強に時間が必要です。しかし、当然のことながら必修科目の勉強は必要です。だからといって総合教育科目を疎かにすると、最悪単位を落としてしまいます(再履修の必要はありませんが、総合の成績が悪くなります)。結局、総合教育科目にも必修科目と同等の時間を使うことになりました。

さて、『失敗談』なのでオチは分かりますね?そう、必修科目の単位を落としてしまったのです。必修科目は単位を落としたら、取れるまで履修し続けなければなりません。最初の考えのように、2年生で楽することは叶いませんでした。

結論:4年かけて履修するように設定されているんだから、4年かけて履修しましょう。

自分を過信せず、慎重に行きましょう。そうすれば、キャンパスライフが楽しいものになります。

ModernなOpenGLを書きましょう

どうも、チョコです。
最近いろいろあってOpenGLについて調べた結果、その知見を共有したいと思います。

OpenGLは近年(最近とは言っていない)programmable pipeline(つまりシェーダが書ける)を導入し、v3.0以降にはfixed function(シェーダが書けない)関数をdeprecateしました。しかし、OpenGL context(初期化)を作るときにcoreじゃなくてcompatibleにすると古い関数はまだ使えます。これは落とし穴です。

なぜかというと、プラットフォーム(やハードウェア)によって動かなくなるからです。

Windows(OpenGL 4.5) ではうまく動いたり、
Android(OpenGL ES 3.0) では半分動いたり、
VM上のUbuntu(OpenGL 3.3) では全然動かなかったりします。<いまここ

なんでこんなつらい目に合ってるのでしょう?

答え:公式レファレンス(man pageなど)が古い(場合によっては間違っている)からです!!
(K〇大学のS〇工学科でも一番古いやり方を教えていることを最近分かったんですよね)

そもそも同じことをするにはいろんなやり方があり、どっちも(場合によって)動くのでこれといった答えはないが、やっぱり古いAPIは使いたくないですね。

そこで、新しい書き方についてちょっとだけ紹介したいと思います。

Programmable Pipelineでは、xxBeginやxxEndが使われないのが特徴です。また、データ集(頂点など)はバッファ(Array)で渡し(つまりあらかじめGPUに保存させる)、シェーディングは全部シェーダでやります(glShadeXXはダメ)。

従来のやり方を見てみましょう。

一番古い(のに未だによく見かける)書き方はこれでしょう。

glBegin(GL_LINES);
glVertex3f(...);
glVertex3f(...);
glEnd();

読んでるだけで目が痒くなりますね。

では、ちょっと新しい書き方だとどうなるのでしょう。

vec3 vertices[2];
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, &vertices[0]);
glDrawArrays(GL_LINES, 0, 2); //あるいはglDrawElements
glDisableClientState(GL_VERTEX_ARRAY);

バッファを使いましたね。ちょっときれいになりましたね。先週まではこれで書いていましたね(反省中)。

しかし、これでも動かないときもあって、なぜかというとこれも古い書き方だからです*!
*ソース

では、Modernな書き方*は何でしょう?

vec3 vertices[2];
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, &vertices[0]);
glDrawArrays(GL_LINES, 0, 2);
glDisableVertexAttribArray(0);

参考

*スペースがないので、実際に使ったコードはここを参照してください。

何が違ったというと、古いOpenGLでは頂点や法線などのバッファー位置が固定されていて、glVertexPointerなどで渡さないといけなく(VERTEX_POINTERやらCOLOR_POINTERやらで固定され)、自由度が減っています*。逆に、glVertexAttribPointerは、シェーダ内のパラメータ(uniform in vec3 position)などにデータを渡すので、関数が一般化されて自由度が上がります。
*ソース

さらに、頂点データは全部あらかじめGPUに保存させることになりますし、シェーダを使わない選択肢はありません(考えてみれば理解できます)。ある意味めんどくさいところもありますが、すごく一般化されたAPIになりますね。そして、初期化(vaoのセットアップ)は1回だけなので、繰り返し使うときのコードを短縮できますね。

OpenGLの仕様が変わるのそろそろ10年経ちますし、みなさんもModernなGPUを最大限に生かして、ModernなOpenGLを書きましょう!

では。

 

後書き
仕様を探るときにはいつも公式レファレンスを読んでいましたが、読みやすくて使用例が載っていてdeprecateされたものもはっきり書いてあるコミュニティ制レファレンスを今度読んでみましょう。

後後書き
古いものを読んでしまう可能性があるので公式しか読んでいないのに、公式自体が古いというのはちょっと刺さりますね。

後後後書き
glutを使っているとcontextがしょうがなく古くて(freeglutならglutInitContextVersionで)、glfwを使っているときにglfwWindowHintでcontextを指定できます。

後後後後書き
ここの教えている書き方はModernなのでいいです。

後後後後後書き
僕もこれが一番新しい書き方かの自信はそこまでないので、OpenGLに詳しい方がいらっしゃったら教えていただけるとありがたいです。

NHK学生ロボコン、1次ビデオ審査通過!!!

お久しぶりです。前代表三鍵です。

 

12月の記事でNHK学生ロボコンへの出場を目指して活動していることをご報告しましたが、この度、慶應義塾大学ロボット技術研究会は無事1次ビデオ審査を通過いたしました!!!

全てが順調に予定通り進んでいるわけではありませんが、サークルメンバーたちは皆、日々誠心誠意活動しています。これからも応援いただけたらと思っています。

またロボコン活動にあたり、

 

ミスミグループ本社様

ROHM様

マブチモーター様

(順不同)

からご支援していただいています。慢性的に資金不足に苛まれている弊団体の現状において、このような企業様からご支援いただけることに大変感謝しております。あらためてお礼申し上げます。

 

 

現在は2次ビデオ審査に向けて鋭意活動中です。また報告することができ次第ブログでお知らせします。

それでは!!