こんにちは、20のYoです。この記事では、水に挑み続けるアクア研の中のAWACSプロジェクトの活動紹介をします。また、この記事は、工大祭ブログリレーの記事です。工大祭のロ技研のページはこちら。
アクア研では流体に関することは何でもやっています。AWACSプロジェクトでは、障害物を避ける水面ロボットの開発を4人で行っています。8月28日、29日に行われた、 水中ロボットコンベンションinJAMSTEC 2021~海と日本プロジェクト~にも出場しました。
概要
本機体は、水面を移動しながら、周囲の障害物を検知し、障害物とは逆方向に動く機能を備えたものでです。
コンセプト
機体製作最初のステップであるコンセプト会議では、水中ロボット製作初心者による4人によるもののため、まずは浮力調整が少ない水面ロボットの製作をすることに決めました。
機体の水上部には回転台を付けて、超音波センサを搭載します。回転台により、全方位に対して障害物を検知できるようにします。メイン回路や電源は、防水容器に入れます。駆動部はDCモーターを防水容器に入れて、スラスターを回します。しかし、スラスターは水中にでるため、スラスターとモーターの間には、回転を妨げない防水機構が必要です。今回は、スタンチューブを利用しました(後述)。

CAD製作
実際に製作をすすめながら、3DのCAD製作も行いました。コンテストではビデオを作って、発表を行ったのですが、そこでも使用するためです。
結構、頭でっかちな機体ですね。。。

製作
ここではいくつかの自作した部品を紹介します。
駆動部
駆動部は、DCモーターを自作のギアボックスに入れ、さらにそれを塩ビ管で覆います。水中にあるスラスターとギアボックスをシャフトによってつなぎ、その間は、スタンチューブによって防水します。
ギアボックスは、アクリル板をすべてレーザー加工機でカットし、その後、接着しました。少しギアがかみ合わないと、力がよく伝わらず、位置をしっかり定めるのに苦労しました。また、メンテナンス性向上のために、上半分を外せられる工夫も施されています。

スタンチューブは、シャフトを、油が詰まった管に通すことによって、シャフトの回転を妨げることを軽減しつつ、水と内部の空間を油によって分断することができるものです。今回は、管を用意し、その両端にはベアリングを入れました。さらに、管に一か所穴をあけ、油を補充できるところを作りました。

水上部
水上部には、回転台の上に3つの超音波センサを搭載し、スリップリングを通すことで、回転による、コードのねじれを防ぐ設計でした。しかし、スリップリングによる、ノイズの影響が大きく、信号がうまく伝わりませんでした。マイコンをもう一つ搭載することになり、大幅な設計変更が行われました。

回路ボックス
回路ボックスはお弁当箱を利用しています。しかし、浸水の連続。回路担当、ごめんなさい!市販品の防塵・防水製品にはIP表示というものがあります。水面下で使用するには第2数字記号が7か8である必要があります。IP67やIP68の製品を試行錯誤使いながら、現在も製作中です。
内部フレーム
各部分をつなげるために、この部品を作成しました。意外と水の中で、マジックテープは引っ付いてくれます。

制御
手動で無線通信により動かすモードと、自動モードがあります。自動モードにおける障害物をよける(?)プログラムは次のような計算方法をとっています。
図の水色の長方形が障害物だと仮定します。あるセンサが障害物を感知すると障害物の位置をベクトルの形式で求めます。これを3つすべてのセンサーで行い, 3つのベクトルを得ます。これらは直交座標で表現されているので容易に足し合わせることができます。3つのベクトルを足し合わせた逆ベクトルをC++のatan2に代入すると(-180°, 180°)の範囲で値が返されます。ここで返された値が負の値ならば左旋回、正の値ならば右旋回、0ならば前進を行えば逆ベクトルの方向に機体が移動します。実際は逆ベクトルが右前方30°左前方30°の範囲にある時、前進すると定めています。

おわりに
大会直前に組み立ては終わりましたが、水が漏れる課題がまだ残っており、すべての部分を連動させての水中での運転はできていません。水中で動いてくれる日に向けて、製作を進めていきます。
現在、来週末開催予定の沖縄海洋ロボットコンペティションに向けてKurioneプロジェクトも進行中です。
ここまで読んでいただきありがとうございました~