こんにちは。本日はホームカミングデイ2021です!といってもコロナのせいでオンラインでの参加となります。またこの一年間新歓や工大祭といった催しが制限されており、実際に見て・触って・動かしてもらう展示会ができませんでした。
そこで本記事ではこの一年の振り返りもかねてロボット技術研究会の活動報告&作品紹介を行いたいと思います。
オンライン制御体験会
世間が大わらわになった新学期。オフライン新歓が中止になり急遽開催したのがオンライン制御体験会。計算ソフトMATLABを使い、PID制御のような実際の制御アルゴリズムライントレースを再現しました。またラインセンサーも取り付けてセンサーフィードバックもできます。
制御が上手くいかないとこんな風に線を外れてしまいます。
しかし上手くパラメータを整えてやると…
線に沿ってきれいに動くことができました!
ただ、気づいたのは、まっすぐきれいに動く制御は画的に全く面白くないということ。
罰当たりっぽい仏具 (ゲーミングマニ車)
疫病退散を願う心優しいゲーマーによりつくられた一品。曰くマニ車とはチベット仏教で使われるマントラが刻まれた回転式仏具なんだとか。
薬師如来にマントラの1000年の歴史と、3Dプリンタで象られた1680万色のLEDがまさかの共演。キリスト教も神の一撃と矛盾しない点でビッグバン理論を受け入れているのだから、アミダ様か誰かだって、疫病退散を願うゲーマーのギンギラギンの祈りを聞き届けてくださるでしょう。
LEDライトを接続してマントラを光らせてみるとこの通り。けばけばしいほどの後光が、ありがたいマントラをリッチに照らし出す。
そして出来上がったマニ車。車とついているように、手でもってぐるぐる回転させることで、マントラを唱えるのと同じ効果があるのだとか。
ブロックと物理演算のオンラインロボコン
ずーっと続くオンライン学習のせいでそもそも滅多に家から出なかった前学期。
「ロボットはモノがないと作れないのか」
そんな常識をひっくり返したのがオンラインロボコン。
このロボコンのロボット・開発ツール・会場は全部電脳空間上。Minecraftのようにブロックをくっつけて自分だけのロボットを作製します。ブロックにも種類があり、ただの箱からモータとして回転するもの、センサとして動くものを使い分けブロック運びロボットを作製します。
機体ができたらロボコンバトル!
機体は手動機と自動機の2機を使ってフィールドに散らばるブロックを集め、高得点を得た方が勝利です。相手にぶつかって邪魔をするのもOKです!
実際の様子はこんな感じ。クワガタのような機体がブロックを挟み、自陣のゴールまで競って運びます。
そしてやっぱりロボコンはアクシデントと奇策の祭典。フレームブロックを組んで先端にアームを付けた後、フレームを外したことでまさかの「宙に浮いたアーム」が完成。色々起こるロボコン界隈といってもアームが宙に浮いたのは世界で初めてでしょう。さすがロボコン発祥の地。
最後は優勝トロフィーの手渡し。オフラインで合うことはNGなので、もちろんオンライン上で機体を使ってバーチャル手渡し。
めでたしめでたし、と思いきや最後の最後に物理エンジン氏の手荒い祝福が。トロフィーを受け取るために接近しすぎたため、なんと機体がめり込みトロフィーが彼方へと弾き飛ばされてしまいました。
さすがロ技研。最後まで手抜かりはありません。
ジュリア
残念ながらお美しい人の名前ではありません。プログラミング言語の「julia」です。コンセプトは、
僕たちが欲しい言語はこんな感じだ。まず、ゆるいライセンスをもったオープン ソース言語。 そこに、Cの速さとRubyの動的さが欲しい。 Lispのような同図像性があって真のマクロを使えるけど、Matlabのように分かりやすくて自然な数学的記述もできる言語だ。 そのうえ、Python並みに汎用プログラミングに使えて、R並みに簡単に統計分析ができて、Perl並みに文字列処理を自然にできて、Matlab並みに線形代数計算に強くて、シェル並みにうまくプログラムをつなぎ合わせることができる。 さらに、すっごい簡単に覚えられるけど、凄腕ハッカーも満足させられるものだ。 インタラクティブに使えて、かつコンパイルもできる。
ようは速くて・書きやすくて・計算も強くて・使いやすい。どうやらジュリアさん、よほどの八方美人っぷり。
試しに関数を使うならこんな感じ。
function f(x)
return x^2 + 2x + 1
end
この f(x)=x^2+2x+1 の関数を呼び出してみましょう。 x=1 とすると、
julia> f(1)
4
このように簡単に関数を書くことができます。謎めいたジュリアの魅力は我々を惹きつけてやまないようです。
苦学生より愛をこめて 光学式ロータリーエンコーダの自作
アームを指定角度だけ回したり、タイヤの回転距離を算出するために欠かせないのがロータリーエンコーダです。モータ軸と一緒に回転する円盤の回転角度を読み取ることで、正確な回転角度を得ることができます。
なかでも検出装置にレーザを使用し、回転円盤の光の遮りを検出する光学式ロータリーエンコーダは高い精度を誇ります。ただ、その問題はお値段が張ること。貧窮問答歌もかくなんの大学生には、おいそれと手が出せません。
それならと自作スリッドと秋葉原で1個数十円の赤外線センサを用いて作ってしまったのがこの一品。5枚500円+送料2000円くらいで頼める発注基板も使うと、この通り見た目は綺麗なモータハウジングができました。
いやいや肝心なのは精度です。試しに回転させてみて上下2層の出力を見てみましょう。理想的には一方が他方の 1/4 周期ずれていればよいのですが…
このように今まとめ記事書いている僕がびっくりするくらいきれいな出力信号が得られました。実際にモータで完璧な位置制御もできました。
商売しないのがもったいない!
大航海の夢とロマン 六分儀
まだ星占術が盛んだったり未知の大陸を目指していたりしたころ、星の動きを観測する装置が六分儀でした。最近だとエヴァのゲンドウの旧姓ですね。
そんな実用性もアンティークロマンもある品を自作してみました。
ここは現代ならでは、レーザーカッターによるMDF材の精密カッティングによりできた品がこちら。円弧部分には尺も刻まれています。
最近新聞で読んだのですが、アメリカ軍は近年、サイバー線でGPSが使用できなくなった場合に備えて六分儀の使い方も教えているそうです。あんまり喜ばしい復刻ではないですね。
アイマスを絶対見逃さないようにするAPI
より厳密にはニコ生の配信予定とgoogleカレンダーを同期させ、(アイマスの)番組をスケジューリングしてくれるAPIです。たぶん、この記事で最も大事な点はアイドルマスターシャイニーカラーズの宣伝でしょう。やっていない方は今すぐ始めよう!とのことです。
一応APIの方も説明しておくと、googleカレンダーは開発者向けにAPIの技術ページを公開しており、pythonでカレンダーを操作できます。
同様にニコ生から配信状況などを取得することができるので、これをgoogleカレンダーに結び付けることで、たくさんの声優さんたちの番組を忘れずスケジュールに記しておくことができます。
水中画像処理でカラフルな海を取り戻す
美しい海と言えば、沖縄やオーストラリアのような極彩色のサンゴや魚たちでしょう。しかし残念ながら水の中では光が減衰しやすいため、実際私たちが目にする海は、本来の美しい七色の光を保っていません。
青緑に沈んでしまったサンゴ礁の本来の色を再現するのがSea-thru法という水中画像処理です。例えばこの画像。画面全体が青緑がかっていて、手前のカラーチャートもくすんでいます。
しかし水と光の物理学的減衰率などを求め、逆算することにより本来の色を推定することができます。ただ、途中何万回と周囲の画素との平滑化を行うステップがあり、めちゃくちゃ時間がかかりました。オンライン授業のバックグラウンドで計算機を走らせること200時間ばかり、やっとこさ得られた画像がこちら。
ちょっと右上が水色がかっていますが、砂の灰色、サンゴの赤色が復元できています。写真から脱水したみたいで、ちょっと不思議な感じがしますね。
「水冷ファンの補強をしようと思ったのですが・・・」
タイトルからして何やら不穏ですね。昨今は家庭用ゲーミングGPUでも水冷を使う人が増えています。ただ、大型化するGPUと冷却装置のせいでPCケース筐体に収めるのに苦労することも多いようです。干渉を避けてなんとか入れたものの、上手く取り付けできず強度が不安ということも。
そんなわけで3Dプリンターで補強材を作ってみました。CADで設計して準備万端。3Dプリンタで出力します。ところが…
目を覆わんばかりの惨状が。せっかく一晩かけてプリントしたというのに、翌日見てみたらコレ。昨日の一晩は一体何のために…
「あとは機械に任せるだけ」にも落とし穴があることにご注意ください。
ラジコンカー
なぜでしょう。この「ザ・ラジコンカー」みたいな王道の作品に新鮮味を感じるのは。日頃針の振り切れたイカれた作品ばっかり見ているせいで性根がねじ曲がっていたようです。
さて、この車の特徴はなんといっても力学に裏付けられた美しい車輪の動きでしょう。旋回時に各タイヤが独立で動くことでタイヤの回転軸が一点で交わります。これにより横滑りすることなくきれいに曲がることができます。これを可能にするのが前輪のアッカーマンリンクです。
さらに旋回時には外側のタイヤは内側に比べより長い距離を回るため、内側と外側のタイヤで回転数に差をつける必要があります。これを4つの傘歯車を組み合わせたデファレンシャルギヤを用いて実現しています。
こだわり機構の4輪の滑らかな運動をご覧ください。
絶縁ICの紹介
水中ロボットにとって非常にやっかいな問題がバッテリーです。水中にはコンセントが無く、またケーブルの重みから長距離送電が難しいため一般に水中ロボットはバッテリーで動きます。しかし水中は抵抗が大きくモータを使うと大電流が流れてしまいやすく、電源回路にノイズが乗りやすい環境です。
そのためマイコン側に誤作動の原因となるノイズを乗せないようにするには、モータ用のバッテリーとマイコン用のバッテリーの2つを積むことも多いのですが、限られたスペースの機体にデカいバッテリーを2つ乗せるのは大変です。
そこで1つのバッテリーでモータ側、マイコン側両方に給電しながらマイコン側への電気的ノイズを無くす方法が絶縁素子を使うことです。図のように電源との連絡通路に絶縁素子をかませることであたかも分離するかのようにノイズを遮断できます。
絶縁と聞くとどうもおカタい語感がありますが、その実回路にもスペースにも優しい手法です。
夏川椎菜を絶対見逃さないようにするAPI
より厳密にはYoutubeのあるチャンネルの動画から、さらに特定の(夏川椎菜さんの)番組を通知してくれるAPIです。たぶん、この記事で最も大事な点は夏川椎菜さんの宣伝でしょう。ハイスクール・フリートの岬明乃とかやってるよ!
一応APIの方も説明しておくと、Youtubeは開発者向けに取得可能で、解説ページのような方法で入手可能です。ここから気になる動画のタグ(夏川椎菜さん)を検索してヒットすれば通知を送ります。
同様にgmailもAPIを利用することでスクリプトから自動送信することが可能です。先ほどの気になる動画にヒットするものがあれば、ラズベリーパイがその情報をgmailで自分宛に通知します。これで夏川椎菜さんのマルチな活躍を見逃すことはありません。
なんかこれ数個前の記事で似たようなことやりましたよね…?
ロボット剣道 ROBO-剣
祝優勝!完全自律ロボットによる面・胴・小手・突きの剣道競技「ROBO-剣」にてロ技研チームが優勝しました!その強さには素早く正確な技を可能にする秘訣がありました。
まずは機構、高速動作を可能にするため、アームには重いモータをつけていません。そのかわりモータは台座に集めケーブルで指先を動かすことで繊細かつ高速な剣技を繰り出すことができます。
敵の動きを瞬時に見極めるのが100fpsで撮影するカメラです。今回相手ロボットの部位の色が決まっていたため、まず色相の画像処理により画像中の相手の部位の位置座標を求めます。続いて得られた位置座標を3次元上の位置に変換することで立体的な位置を求めます。
得られた立体位置を基に剣の動きを制御します。今回の剣道では中断構えや面など8種の動きを行います。相手ロボットの位置をもとに今の自分の姿勢からの動きを逆運動で解き、反復計算を行うことで基本の8種の型に近づけていきます。シミュレーションは次の通りです。
これを実機で行います。しかし実機にはモータ特性やセンサなど実世界の問題があります。これも行列計算などを用いて解析します。
実際の決勝戦の様子がこちらです。華麗な剣技が決まっています!