ITエンジニアのぼやき

都内メーカーITエンジニアが、ただただ気になったことを書いて、薄い知識で考えを共有していくだけのブログ。

研究日記(2) 研究生活スタート

(2019/5/12 published) 

どうもDT大のぎりです。

 ゴールデンウィークの実験に向けて、死ぬほど作業に追われているところですが、2つ記事を作成してから皆さんにアナウンスしたかったので、書いていきます。(2019/4/20)

今日の内容
  •       教授との面談後

  •       初動教育

  •       研究ツール

  •       実験方法

 

第1章,2節  研究スタート

 

教授との面談後

  前回の記事では研究室の雰囲気をさらっと書きました。ここからはもう少し踏み込んで研究室に入って何をしてきたのか説明していきます。DT大は第1志望の研究室配属が決定するのが大体B3の12月中旬で、多くの研究室が新学期(4月)からゼミや*輪講などが始まります。そう"多くの"研究室が新学期からなのですが、弊研究室はそうとは行かないのです。なぜならトップクラスだからです(学生は私を含めノーマルクラスの人もいる)。配属が確定した次の週に教授に呼び出され、ひとしきり説明を受けた後

ボス「...このくらいかな。なんか質問ある?」

ぎり「特にありません。」

ボス「わかった。じゃあ早速、来週来れる日来てね。」

ぎり「わかりました!(?????????)」

そう、これは12月末の話。さっそく私にコアタイムが適用されたのです。授業がある時限以外は研究室にいなくてはいけなくなったのです。正直、この時期は何もやることがなかったので、行く以外選択肢はありませんでした。

初動教育

 研究に関して全くのど素人の私は、研究室に来てねと言われたものの、何をすればいいかさっぱりわかりませんでした。しかし、弊研究室は初動教育があるのです。事前に教授から渡される冊子があって、主に研究に必要な前知識を確認するようなものでした。

 その内容は以下の通り

・数Ⅲ 積分

・機械力学

・2リンク剛体

・現代制御

Latex

Matlab

・以上の内容を全て使う総合問題

 もう一度記載するが、私の学力は前回の記事で説明した通り平凡です。機械力学やロボット力学の成績は可(D)と良(C)で、初見で解けるわけがないのです。しかもこれらの課題をたった二ヶ月程度でこなせと要求されました。幸いにも過去に受けた授業のデータがあったので、それを見ながらなんとか問題を解いていきました。

 次に現れた壁は、現代制御です。なんと、履修していなかったのです。私が所属する*先端ロボティクスコースは必修ではなかったので、取っていませんでした。しかし、弊研究室は航空機の制御がテーマ、避けては通れなかったのです。では、実際に問題を見て解こう!.....としても何一つわからない。先輩に事情を説明して見ると、一冊教科書を私に渡してきて一言。

先輩「これ一冊全部やって来て!」

ぎり「わかりました!(????????)」

 そう、もはやこれは普通なのです。この研究室は気を抜いたら置いてかれる。食らいついていかなきゃ、まずいことになる。「私は平凡なのでできません。」そんなことは許されないのです。そう私は悟りました。

 約一ヶ月半かけて、教科書のみで勉強しました。今考えてみると、学習する科目をまるまる独学で学習したのは初めてな気がします。研究する上で必要なスキルをどんどん習得していくしかないのです。特に*航空機を扱う研究は、学ばなくてはいけない分野が多いのでなおさらです。

 さて、その課題もなんとか解き終えて次の課題に進むと、Latexでその解答を書いてみようというものでした。

 Latexとはざっくり言うと、数式の入力のためのコマンドが豊富に組み込まれいる文書作成ツールです。Wordみたいなものですが、多く数式を要するような文書や論文などはLatexで書かれていることが多いです。これがまた厄介もので、簡単な数式でさえコンパイルが通らず、エラーの原因を探しまくる始末。全く使ったことがないので、使い方を一つ一つググりながら、少しずつ覚えていくしか方法はありませんでした。

 そして最後に立ちはだかったのがMatlabMatlabとは、アメリカ合衆国MathWorks社が開発している数値解析ソフトウェアであり、その中で使うプログラミング言語の名称でもあります。(wikiより)

f:id:k_yuukix:20190511235014p:plain

 実際、Matlabは理系の学生には欠かせないもので、特に複雑な計算を要する工学系の研究をしている多くの人が使用しています。しかし、ここで用いられる数式は基本、行列で表現するため、線形代数を、テストを乗り切るためだけに履修した私は、再び苦戦することとなりました。また、最終課題の内容は微分方程式Matlabで解くもので、変数の定義や、式の書き方、初期値の設定、解の返し方などが複雑すぎて、私にはさっぱりわかりませんでし。これに関しては、一年の授業以降プログラミングに触れたことがない私は、全く太刀打ちできなかったので、友達に教えてもらいながら解いて、「わからないけど計算できる」レベルで終わってしまいました。

 ここまでの間、先輩たちは卒論を書き上げる時期で忙しく、質問しても満足する回答はほとんど得られませんでした。なので基本は自分たちで調べて、協力しながら解くという、完全に投げやり教育のもとで学習するしかありませんでした。その結果、すぐには聞かずに自分で調べて解くという習慣がつき、研究に必要な基礎スキルは早い段階で身につきけることができました。

 初動教育が終わるといよいよGWの実験(後述)に向けて、最初の研究が始まります。といっても既存の制御器を少し書き換えたり、既存モデルのプログラムを実装するなど、ガイドラインがある中でのお手頃研究でした。しかし、簡単そうに聞こえますが、これが険しい道なりになることはまだ私は知りませんでした。

研究ツール

 現在私の研究室ではArdupilotを使用して、機体を制御しています。Ardupilotとは、Ardupilot.orgが提供するドローンSW開発者向けオープンソースコード体系です。 Ardupilot(自律航行制御プログラム)及びDronekit(アプリケーション開発用プログラム)などで構成され、SW開発者向けToolを提供しています。機体の自律飛行を制御しているものが、フライトコントローラーです。 フライトコントローラーは、各種センサーを内蔵、機体姿勢を計算、モーター回転を制御しています。現在我々はPixhawk2を使用していて、そこに*C++でプログラムを書き込み、制御を行っています(APTJ PROJECT 引用)。私は技術的な部分の詳細は現在もよくわかっていないので、概要くらいしか説明できません。笑

f:id:k_yuukix:20190511235139p:plain

  過去に先輩が書いたプログラムがベースになっているので、まずはそれを読んで理解するところから始めなくてはいけません。ソースコードを読むなんて初めてだし、何が書いてあるかわかっても計算式の意味がわかりませんでした。航空機は3次元軸で考えなくてはいけないので、計算式がさらに複雑になります。訳の分からないまま、先輩のコードを参考にし、書き足していくしかありませんでした。様々なソフトウェアならではの障壁に何度も足止めされ、プログラミングはただ書いて終わりではないことを痛感させられました。

実験方法

 私たちは*ハードも扱うので、ここからが大変なのです。コンパイルも通って、無事マイコンに自分のコードを書き込めたら、次にそのプログラムが正確に動くかを試さなくてはいけないのです。しかし、私たちが扱ってるのは無人航空機。実際に飛ばすわけにはいかないので、マイコンGPSとパソコンを持って学内を歩き、計測器からのデータを分析して、実際に制御できているのかを、計算上で確認します。その後MatlabC++で書いた計算式を書き写し、ちゃんと計算できているかを相互比較して確認します。このデータを元に先輩や教授と議論した上でGoが出れば晴れて実機実験を行えます。

  では実機実験はどこでするのでしょうか?学校ではもってのほか、関東でもなかなか飛ばせるところはありません。ドローンなら(規制が厳しくなったものの)比較的容易に実験ができるのですが、固定翼機はサイズも大きく、長距離飛ばすので、関東でもなかなか実験を行える場所はありません。なので弊研究室は毎年2回北海道まで実験をしに行くのです。これが弊研究室の目玉イベントで、実験の日が近づくと1つの卒論書き上げるくらい忙しくなります。

  今回はここまで。さて次回は、いよいよ待ちに待った北海道実験がどれだけ過酷であったかを記事にまとめていきたいと思います。

next GW北海道実験編 part1 (2019/5/18 公開)

輪講・・・学部四年の必須履修科目。内容は各研究室で違うが、多くのところが論文を要約し発表する形式を取っている。

先端ロボティクスコース・・・DT大は学科が存在しないのでコースで専門を分けている。知能機械システム学専攻では、計測・制御、先端ロボティクス、機械システムの三つで構成されている。

航空機・・・工学の最高峰は航空力学。これは間違いない。

C++・・・プログラミング言語のひとつ。利用者はそんなに多くない。と言うか少ない。

ハード・・・「ハード」とは、施設や設備、機器、道具といった形ある要素のことを指す言葉。対になるのがソフト。