海や川のゴミをロボットで回収できる?実際にゴミ回収ロボットを開発してみた

海や川のゴミをロボットで回収できる?実際にゴミ回収ロボットを開発してみた

僕がゴミ回収ロボットを開発しようと思った理由

海に流れ出るゴミが問題になってきている今、ロボットにゴミを回収させることはできるのか?という疑問を抱くのは僕だけではないと思います。

私も疑問に思いましたので日本にそのようなロボットがないのかググってみました。そしたら全然ヒットしないんです。ゴミ回収ロボットを開発している人がいないのはなぜなのか?と思いました。

でも誰も作ってる人がいない。なら自分が可能な範囲でそれを作ってみようと思いました。

海外では既に環境意識が高まり『オーシャン・クリーンアップ』のような大規模なプロジェクトが行われています。こちらがオーシャン・クリーンアップの動画です。

また、この活動を通して海洋ゴミ問題のリアルな課題が見えてきます。まずはやってみて本質的な問題を確かめていけたらと思います。

以下、ゴミ回収ロボットの開発過程です。随時更新していきます。

前回までの記事

前回までの記事はこちらです。前回まではRaspberryPiを使用してロボットの操作を行っていました。今回からはプロポを使用して操作するようにしています。

海や川でゴミ回収できるRaspberryPiラジコンボートを作る

2019年のゴミ回収ロボット開発

構成はざっくりとこのようにしようと考えました。ラジコンボートを2船用意して両サイドに配置し、ゴミ回収アームはボートの間に設置します。

プロポ「KO PROPO – MC-8」を購入

今回からはRaspberryPiではなく、こちらのプロポ『KO PROPO – MC-8を使用して操作していきたいと思います。

プロポの初期設定をしておく

取扱説明書に沿ってプロポの初期設定を行っておきます。YouTubeにも分かりやすい説明があるのでそちらを参考にしてもいいかもしれないです。

自作ボートを制作する

今回はダイソーのカラーボードを使用してボートを自作しました。

詳細はこちらの記事に別途掲載しました。

ラジコンボートをダイソーのカラーボードで自作する

制作中の写真がこちらです。

完成した船体がこちらです。両側にボートを配置しているのでかなり安定しています。さらにどちらにもスクリューを設置しているため旋回できるようになっているはずです。また、サーボモータを両持ちにしてガッチリと固定しています。

ラダーの動作を確認してみる

ラダーも自作したので動作確認を行いました。

荒川で試走させてきました

前回と同じ場所で行いたかったのですが、本日は釣りをされている方がいらっしゃったため別の場所で行うことにしました。

浸水することもなくバッチリと浮いてくれています。浮力にもかなり余裕がありそうです。

今回は操縦性能と、ゴミを想定したペットボトルを回収できるかどうかを試してみました。

旋回性能は格段に向上していました。ボートを2船にしてスクリューを付けたのが正解なようです。その代わり、船尾に付けたラダーはあまり意味がなかったかもしれないです。

ペットボトルは100%回収することができました。何回かはカゴの中に入らずにボートに乗っかってしまう状態になったのでカゴの中に入れるような改良が必要そうです。カラーボールやピンポン玉なども同様に回収することができました。

動画はこちら。

今回も課題がいろいろと見えてきましたので1つずつ解決していきたいと思います。

2020年のゴミ回収ロボット開発

2019年は物体認識の記事を書いてみたり、RaspberryPiでラジコンを作ってみたり、実際にラジコンボートを作ってゴミ回収を行ってみたりしました。

2020年も継続してゴミ回収ロボットの開発を行っていきたいと思います。今年は去年の結果を考慮して以下の組み合わせで開発していきたいと思います。

No. ゴミ識別 基板 操作 通信 備考
OpenCV + カスケード分類器 Raspberry Pi MC – 8 Wi-Fi ✕:カスケードXMLは多種類、とくに画像の角度が変化すると認識できなくなるので不採用とする。
OpenCV + カスケード分類器 Raspberry Pi スマホ Wi-Fi ✕:スマホは映像だけに専念させたいため不採用とする。
keras-yolo3 Jetson Nano 未定 未定 採用予定
keras-yolo3 Jetson Xavier NX 未定 未定 未定

進捗があれば随時記事を更新していきます。

ゴミ認識AIの開発

ゴミ回収ロボットを開発するにあたり、2020年はゴミ認識AIのほうの開発も同時進行で進めていきます。水面に浮かんでいるものを全て回収するのであればAIは必要ありませんが、それでは水面生物も取り込んでしまう可能性があります。そうならないようにAIを搭載することでゴミのみを認識して取り込むようなロボットにしていきたいと考えています。

AIにもいろいろと種類がありますが、今回は深層学習(ディープラーニング)でゴミ認識AIを作ってみたいと思います。

YOLOってどんなものが認識できるの?

この記事を作成したときにデフォルトの状態でもかなりいい物体検出ができることが分かりました。

では、デフォルトの状態のときにどんなものが認識できるのか調べてみました。こちらのサイトによると全80のものを認識することができるようです。

YoLo/darknet初期学習データで判別できる種類一覧

このデフォルトの状態で私がほしいのはボトルぐらいかなと思います。ゴミとして認識したいときにはジャンルが広すぎて識別できなさそうだなと感じています。

ゴミの識別を行うには独自データを用意して自分でYOLOのトレーニングを行ったほうがよさそうです。

自力で深層学習を行うにあたり

自力でYOLOの独自学習モデルを作成するにあたり、自分の知識が圧倒的に乏しいので勉強から始めることにしました。まずは簡単なところから学習していきたいと思います。

深層学習のTensorflowとかKerasとかってなんなの?YouTubeの解説動画を紹介するよ。

Google ColabでYOLOを動かすことを検討してみる

Google Colaboratory上でYOLOを動かして画像認識させてみた

データセットをどのように集めるか?

深層学習を行うにはデータセットが必要なことが分かりました。ただ、そのデータセットを集めるのはとても大変な作業ということも分かりました。自分で収集するか、もしくは以下のようなサービスを利用して効率を上げたほうがよさそうです。Googleからはデータセットを検索できる「Dataset Search」というサービスが展開されているようですので、こちらを利用していきたいと思います。

 


さっそく「trash detaset image」と入力して検索したら以下のデータセットを見つけることができました。ライセンスなどを確認してから使用してみたいと思います。

TACO: Trash Annotations in Context Dataset

kaggle: Garbage Classification

荒川でデータ収集を行いました

上記までで公開されているデータセットを入手できることは分かりました。それらを加工して学習させればある程度のものはできそうです。とはいえ、今回はロボットに搭載するカメラからの画像を判定するのでリアルなデータも含めて学習させたほうが良いと考えます。そこで荒川に行ってデータ収集を行いました。

YOLOで深層学習する手順をまとめました

こちらの記事にYOLOで深層学習する手順をまとめました。

【深層学習】Colab・YOLOv3・darknet でYOLO形式の独自データセットを学習させる手順

ブラシレスモーターに交換してみました

ブラシレスモーターに交換して試走してみました。当然ですが速くなりました。

ボートを木材で作り直しました

ダイソーのカラーボードで作成したボートでは強度が物足りなかったので木材で作り直しました。サイズも一回り大きくしています。

改良版のロボットで試走してきました

改良版が仕上がりましたので川に行って試走してきました。今回は好調に走ってくれたので安心しました。一部破損してしまったところがあるのでそこはまた改善していきます。

 

自動運転を導入する

ラジコンのように操作することもできますが、今回は自動運転できるようにしていきたいと考えています。

まずは地上用のRoverで自動運転の方法を確立していきたいと思います。

 

現在の進捗はここまでです。

1つ星 (2 投票, 平均: 1.00 / 1)
読み込み中...



環境カテゴリの最新記事