川のブログ

川の適当気ままなブログです。 

第13回飛行ロボットコンテスト参加記

こんにちはかわです。

「2017一人でアドベントカレンダーbyかわ」 一日目の記事です。

忙しく、まとめきれていなかったのでまとめたいと思います。

自分はちなみにチーム「SN-pi」の画像処理担当でした。

飛行ロボコンとは

多分この記事を見ている人の中には飛行ロボコンについて知らない人がいるかもしれないので紹介しときます。

全日本学生室内飛行ロボットコンテスト

一応このサイトを見れば分かります。

一言で言うと自分たちで自作したラジコン飛行機、ドローン等を

与えられたミッションをより多くこなして点を競うコンテストです。

このコンテストでは4部門あり、

一般部門

自動操縦部門

マルチコプター部門

ユニークデザイン部門

があります。

多分口で説明するよりも見たほうがはやいので載せます。

今年の動画です。

参加するきっかけ

そもそもなぜ自分がこの大会に参加したのかというと、

自分の学校に鳥部という部活があってたまたま遊びに行くことがあったんです。

そのときに、

「今年飛行ロボコンの自動操縦部門に出ようと思っていて、そこで画像処理しなきゃいけなくて・・・」

ということばにのせられてノリで参加することになりました。

本音を言うと

当時プログラミングラボ部をやめて帰宅部になっていました

やめた理由としては自分の技術力の低さと部活に甘えてたからです。

またそのときは長期インターンシップという名のプログラミングのバイトをしていて、

技術力をもっと高めていきたいと思ったからですね。

また、以前画像処理をしたことがあったんですけど、

もっと知識、技術を高めたいと思っていたので参加することを決めました。

参加を決めてから7月まで

参加を決めたのはいいものの 、

市販のラジコン飛行機ですら操作したことなかったので

まずはラジコン飛行機を知ることからはじめました

動画を見たり、飛行機の製作現場に通ったり、

実際に練習機を飛ばしたりしました。

飛ばすのって難しいですね(笑)

話が前後するんですが、

チームメンバーは、

部長のS

一年生のN

自分 PI

の三人です。

実質1年生が二人ですね(笑)

担当は自分が画像処理

部長が他全部(パイロット)

一年生が部長のお手伝い

これだけ聞くとやばいですね

部長よく頑張りました。ありがとうございます。(笑)

画像処理でしたいこととしては、

着陸ポイントに目印を置いておき、

そのポイントに向かって、左右の調整をしながら距離を測り着陸する命令を出す

ということでした。

自分は飛行機の知識を入れながら、画像処理の方法を調べていました。

今回はraspberry pi zero でopencvを使って画像処理をするということになりました。

www.switch-science.com

f:id:nakanaka1826:20171201233315j:plain (これraspberry pi zero w なんですけどほぼ同じ感じです)

これに純正のカメラモジュールを使用しました。

www.switch-science.com

Raspberry Pi Zero用カメラケーブル - スイッチサイエンス

これを使用した理由としては軽さと画素を考慮した結果です。

初期案はラズパイゼロとカメラを機体にのっけて画像処理をしながら着陸ポイントを探す

というざっくりなものでした。

結果その案を最後まで使ったのですが・・・

この時点で、アクロ機を大会機にすることが決まっていました。

画像処理部分は部長とハードに詳しいBと3人で話し合いながら決めました。

とりあえずこの時点では全然決まっていなかったし、実験できていなかった。

ここで反省としてはもっと早く実験と情報集めをしとくべきでした。

当時バイトのほうが忙しく情報集めを疎かにしていました

ここでのつけが後に痛い目を見ることとなります

夏休みに入り

ようやく作業時間がとれるようになり実験をしていきました。

まず最初に自分のPC上で動くようにした後、ラズパイ3で実験

その状態でSDカードだけを入れ替えればラズパイゼロでも動くと思ってた

とりあえず、macでのデモを完成させてラズパイ3で動くようにし、

ラズパイゼロでも動かせるようにしました。

ここまででいくつかの壁がありました。

1つ目 環境構築

当然のことながら時間がかかりました。

いくつかエラーが出ました。

ラズパイ側です。

まずOpenCVが入らない。

カメラを認識してくれない。

やっとのことでラズパイ3で動くことを確認し、

コードが動くことを確認し、ゼロでも動くと思ってた

ゼロでも動くとは限らない

そう実体験しました。

OpenCVから入れ直し、設定を書き換え、コードを書き換えることで対応しました。

これは早くから実験していれば回避できたことでした。

これからは気をつけたいと思います(泣)

二つ目 処理速度

当初ラズパイにはPythonでしょ

という甘い気持ちから処理速度が遅いPythonで書いていました。

自分のPCではラグ無く動いたので大丈夫でしょとおもってた

ラズパイでは動かない

ラズパイ3ですら動かないんじゃゼロは無理じゃん

C++に変更しました。

また、変換のアルゴリズムも考えなきゃいけませんでした。

画像処理の知識が乏しかったのでネット上で知識を入れながら

少しづつラグを減らす努力をしました。

結果、ラズパイ3でもラグがほぼ無く動いたのでゼロでも大丈夫だと思ってた

甘くなかった

難しい画像処理

一ヶ月二ヶ月では難しい。

画素を下げつつ、

左右の調整に支障が出ないレベルまでとりあえず落とし込みました。

三つ目 忙しい

過去の自分はなんと愚かだったことか

夏休みに短期インターンを3社入れてしまった

結果ラズパイをインターン先まで持ってきてホテルのテレビで作業

Skypeを部長と繋いで作業

迷惑をかけて本当にすみません

四つ目 通信

一番きつかった

機体に載せて動作させる

たまにしか動かない

なぜ??

理由としては、arudino側に機体制御のプログラムを載せていたんですが、

割り込み処理のしすぎでデータが破損

ほとんど読み込めていない状況

部長そんなことしてたんですか!!

部長自身もarudinoが初めてで、制御もしたことなかった

ゴリ押しで書いていたため起きた減少ですね。

最初はシリアル通信でしていたのですが、

ピンを代えて無理やりパルスを出していたのかな?

そのことに気づいたのが大会まで数日しかない状況だったので急いで対処しました。

こうした問題を解決し、大会前までにはここまでできました。

成功してそうですね。

いざコンテストへ

日程的には

9/1 前日調整

9/2 予選

9/3 決勝

という日程

前日調整

機体は自分たちで持っていきました。

その際、箱には収まらない部分は取り外して持っていきました

会場につき、パーツを取り付け、機体審査を行い、練習飛行をしました。

この時点で、パーツを取り外したことによる誤差で

うまく自動飛行ができていなかったので焦りました。

部長が焦ってました。

二度目の練習飛行でうまく言ったので安心

その夜は寿司食べた気がする

予選

正直焦りました。

ミッションは

物資投下

自動水平旋回

タイムトライアル

の3つでした。

自分たちは午後の部だったので、

午前中は一般部門に出ている後輩を応援してました。

墜落してしまいましたがナイスファイトでした!!

f:id:nakanaka1826:20171202004418p:plain

飛行順なんですけどトップバッターでした。

しかもぶっつけ本番です

緊張MAXでしたね

それが大事件を起こしました

とりあえず見てください

タイムトライアルで墜落させました。

拾っているの僕です

f:id:nakanaka1826:20171202005511p:plain f:id:nakanaka1826:20171202005526p:plain

がんばった

なんとか着陸までこなして結果を待ちました。

f:id:nakanaka1826:20171202005819p:plain これ全部の予選の結果なんですけど

1位で通過することができました

マルチコプター部門はぶっちぎってました

この後練習飛行をもう一度行いホテルに戻りました

ここでも事件が起きます

自動着陸が失敗する

ノイズが入ったと思ったので出来る限りの調整をホテルで行い寝ました

バーガーキングハンバーガーを夕食として食べました。

決勝

当日他の部門中に観客席で調整を行いましたが、

練習飛行でまたしても失敗しました。

前日の練習飛行も今回の練習飛行もフィールドが本番とは違う状態だったので

それでノイズが入ったと信じ込み挑みました。

結果として自動着陸は失敗しましたが

結果二位になることができました!!

f:id:nakanaka1826:20171202010910p:plain

全チーム賞が取れて良かったです。

マルチコプター部門にでたチームは優勝してました

すごいですね

新日鉄住金賞ということで、社員の方と写真撮影

f:id:nakanaka1826:20171202011233j:plain

今回出場してみて反省

  • 実験は早め早めにしておく
  • スケジュール管理をしっかりしておく
  • 画像処理だけでは情報少ない、ノイズが多いのでセンサも多用して複数情報を取る
  • ノイズ対策をしっかりする
  • 練習場と本番会場は全く違うのでいろんなシチュエーションで対策をする
  • 部長すげー

以上が画像処理係を今大会でやった感想です

もっと良い処理の仕方があると思うので来年出るとしたら改善します。

もっと勉強します。

いい経験になりました。

関わってくださった皆様ありがとうございました。