プロジェクト報告書（最終） Project Final Report

提出日(Date)

2019/01/16

複雑系知能ロボットへの挑戦
Challenge to Complex Intelligent Robots
1016130 平野香介
1. 背景

Kyosuke Hirano
メカ班は 4 つの課題のうち移動・センシング・外装を担大学ではゴミに関する問題が多数見受けられる。例えば、当した。移動は実機での移動を担当した。ロボットの実機

ゴミ箱からゴミがあふれていること、大学内の講義室などとして Nexus robot 社製の 3WD100mm オムニホイールロボッにある机の収納スペースにゴミが入っていたりすることやトを使用した。このロボットは Arduino IDE によるプログ

単純にペットボトルなどの放置が挙げられる。

ラムで動かすことが可能であり、3 つのホイールで全方向

このプロジェクトでは、大学のゴミに関する問題を解決に移動が可能である。また超音波センサが 3 つ搭載されてするために、ゴミ箱型ロボットの開発を進めている。近年、おり、障害物を認識することができる。これらの理由によゴミ箱の IoT 化・ロボット化が進められている。例えば、り 3WD100mm オムニホイールロボットを使用することにし沖縄県で実証実験が行われた「IoT ゴミ箱」[1]や第 16 回た。

文化庁メディア芸術祭エンターテインメント部門優秀賞をゴミ箱型ロボットの開発一年目として、移動・センシン受賞した「勝手に入るゴミ箱」[2]などの事例が挙げられる。

グの課題に関しては、ロボットにどのような機能を持たせこれらを参考にゴミ箱ロボットの制作を行おうと考えた。

るのかを設定することである。公共の場でロボットを動か未来像としては、ゴミを捨てようとした人がロボットを呼すにあたり、障害はどのようなものがあるのか、ある障害

び、ロボットはゴミを捨てようとした人を認識し、捨てよに対してどのような制御をロボットに行わせるかを考えた。

うとしているゴミ種類を判別して収集するゴミの種類別に障害として１つ挙げられるのは、壁やオブジェクトなどの設定しているロボットが近づいていくようなものを想定し障害物である。ロボットが障害物にぶつからないように、ている。さらに、ゴミを捨てようとしている人がいれば、メカ班では超音波センサを利用し、障害物の回避を行うこロボットが独自に判断し、近づいていくような機能を持っとを考えた。また、階段もロボットにとって大きな障害とたロボットであれば、問題を解決することができるのではなるが、本プロジェクトで利用しているロボットは人のよないかと考えた。しかし、今回のプロジェクトではこのような足がついているわけではなく、タイヤのみで移動する

うなロボットは高度な技術が必要であることや、コスト面為、階段のない平坦な場所でロボットを制御することを想で困難であると判断した。そのため今回は、ロボットを呼定して開発を進めていくことを決定した。ゴミ箱型ロボッ

び出す用のデバイスを用意し、呼び出す操作を行ったら、トとして、ただ単純に前進後進するだけでは、ゴミ問題をロボットが近づいていくということを重点に置いて開発を解決することにはならないと考え、ゴミを捨てようとする進めている。

人に近づいて、ゴミを捨てることを促すことが必要ではな
いかと考え、ロボットに目標物を検知し、目標物の方向に2. 課題の設定と到達目標走行する機能を実装することにした。目標物の検知にはカ本プロジェクトでは、ゴミ箱型のロボットを制作・開発

メラを使用し、OpenCV を活用することによって目標物を検にあたり、移動・センシング・外装・呼び出し機能の大ま知する機能の実装を目指した。ロボットのこれらの動作は、

かに 4 つの課題を設定した。移動の課題は実機とシミュレ

Brooks[3]のサブサンプションアーキテクチャ(以後 SA）をーションによる 2 通りの方法を用いた。これらの課題をメ用いて開発を行った。SA とは、単純な動作を階層構造に構カ班とソフト班との 2 つの班に分かれて、制作を行った。

築するロボット工学を元とする人工知能の概念である[3]。

2.1 メカ班

単純な動作を今回は最下層からランダム走行、障害物回避、2.1.1目標物へ移動、最上層の目標物へ移動後の停止とした。外課題の設定

装の課題はゴミを収集する部分をどのようなデザインにすに動いているかをロボットとサンプルプログラムを参考にるのかを決めることである。ロボットの上部にゴミを収集解析する必要があった。ロボットは 3 つのモータを回すこする部分、今までのごみ箱として機能する部分をどのようとによりタイヤを回転させ移動する。サンプルプログラムな素材や形状で作成するのかを考えた。

は、一定間隔で前進した後別方向に前進繰り返す動作に超2.1.2. 到達目標

音波センサを利用して、物との距離が一定間隔に内に入っ

メカ班の到達目標は主に外装の完成、ロボット本体の動たら方向転換を行い前進するというプログラムなのだが、作を実装することである。外装は収集しやすさ、つまりゴ表面上ではどのようなプログラムでモータを動かしているミを捨てたいと思わせるデザインを重点に置いて完成を目のかがわからなかった。ゆえに、サンプルプログラム中に指す。ロボット本体の動作は、障害物の回避、目標物への使用されているライブラリを解析することになった。ライ

移動、障害物も目標物もない状態での普段の動作を公共のブラリを見てみると、複雑な書き方をしており、使用して場で安全で、人に被害を与えない動作の実装を目指す。

いるロボットは様々な種類のセンサを接続することができ

2.1 ソフト班

るが、数個のセンサと同時にモータを動かす場合、サンプ

2.2.1

ルプログラムのようには扱うには困難であると判明した。

課題の設定

ソフト班は 4 つの課題のうち移動・呼び出し機能の実装

しかし、DC モータでのプログラムの方法だとわかり、DC モを担当した。移動はシミュレータによるものを担当した。

ータの Arduino IDE による動かし方を調べた。調べたこと

移動のシミュレータを行う理由として、今回、実機が一台により 3 つのモータを制御し、基本動作の実装へ移行した。

しか購入できなかったため、はじめに説明した未来像の説

まずはランダム走行を行う前に、基本的な動作、前後行進・明から、複数台のロボットを利用することを想定している

左右・回転・停止動作をプログラムする必要がある。前進ため、シミュレータで複数台での動作をシミュレートする

動作は、二つのモータを回転させるのだが、1 つのモータことが大きな理由である。そして、シミュレートした結果を正転に、もう片方のモータを逆回転させることによってを実機に反映したいと考えている。呼び出しの課題は、第前進することができる。後進動作は前進動作とは逆を行う

一段階として、スマホの LED ライトを利用しロボットの誘ことによって後進することができる。左右移動は、3 つの導を行いたいと考えた。ライトで地面を光らせ、光らせたモータを動かす必要がある。2 つのモータを正転に、1 つの部分をロボットが検知してもらい、光の部分が中心に来るモータを逆転に設定する。また、正転に設定しているモーようにロボットを動かすことを想定している。

タのパワーを残りのモータのパワーを 3 割ほど低く設定す2.2.2ることによって動作可能となる。回転は 3 つのモータを同到達目標

ソフト班の到達目標は複数台での運用を想定したロボットの動作をシミュレータで実装することと、メカ班との連じ方向とパワーに設定することによって可能となる。停止はモータパワーを 0 にすることによって可能となる。

携で呼び出し機能を実装することである。シミュレータはランダム走行はまず単純な動作を組み合わせることによ

複数台での運用を想定しているので、ロボット同士がぶつって、プログラムしようと考えた。具体的には、ランダムからないようにすることや、人に被害を与えないようにす

走行は障害物もなく、目標物も存在しない状態での普段のる動きの実装を目指す。呼び出し機能は使用者が感覚的に動作であるから、第一段階としては前進と回転動作だけで使いやすいものを考え、実装することを目指す。

充分であると考えた。プログラムは前進と回転を一定間隔一定時間に繰り返すことによってランダム走行を実装する

3. 課題解決のプロセスとその結果ことが可能となった。

3.1 メカ班

3.1.2

3.1.1

実機での移動センシング

本プロジェクトで制作を進めているロボットにおけるセ実機での移動は階層構造での最下層に位置するランダム

ンシングは障害物と目標物の検知に扱う。障害物の検知は走行を中心に、障害物回避などによる移動に扱う重要なも超音波センサを利用し、障害物回避を行わせる。目標物ののである。まず初めに、今回利用したロボットがどのよう検知はカメラモジュールを利用することにより、目標物へ置することを考えるにあたり、どの程度の大きさが適切での移動を行わせる。

あるかを図るため、簡単に加工することができる段ボール

障害物探知には 3WD100mm オムニホイールロボットにを利用して制作を行った。完成後、ロボットの上部に設置

元々搭載されている超音波センサを扱おうとしたのだが、したところ、予想していたものよりも大きいことが明らか

原因不明の不具合により、使用することができなかった。になった。これにより大きさも詳細に考慮しなければいけゆえに、代わりとなるものを利用することになった。代わないということが判明した。収集しやすさ、つまり収集率りとなる超音波センサは HC-SR04 というものを利用した。

を上げるにはどのようなものが望ましいかという調査を行

この超音波センサは 15 度の範囲で物との距離を測ることった。調査した結果、ごみの種類によって好まれる色があができる。これを正面に 3 つ設置した。3 つの超音波センることが判明した。燃えるごみの場合、赤色及びオレンジサを用いることで、ロボットの正面と障害物との距離を測色が適しており、燃えないゴミは灰色及び黒色が適していることが可能となった。

る。ペットボトルでは白色と灰色が、缶では灰色とオレン

目標物検知は画像解析を用いる方法とカメラモジュールジ色が適しているという研究があった[4]。今回は特にごみを利用する方法と二つの方法を扱った。画像解析はカメラの種類は指定していなかった為、ロボットの上部に設置すモジュールの Grove-シリアルカメラキットを利用し、まずることから、軽く丈夫であるアクリルで制作を行った。

は画像認識のプログラムが作動するのかの確認を行った。
画像認識のプログラムを作成するにあたり、Arduino IDEと Python のシリアル通信を行う必要性があった為、Pythonでのシリアル通信の方法を学習した。カメラモジュールを利用する方法では、Pixy2 CMUcam5 を使用した。このカメラモジュールはオブジェクトを検出し、追尾することができる。オブジェクト検出にはカラーベースのフィルタリングアルゴリズムを使用している。これを利用することによって、手のひらの検出に成功した。

図 2.アクリルで制作したゴミを収集する部分
3.1.3

移動とセンシングの統合

超音波センサにより、障害物の検知ができ、カメラモジュールに物体検出が可能となった為、これらを移動動作と組み合わせることによって、障害物回避と目標物への移動のプログラムを作成することにした。
障害物回避は、第一段階として、超音波センサによって
図 1.Pixy2 による手のひらの検出画面
3.1.2

外装

ゴミ箱ロボットの外装だが、捨てやすさを重視するのか、それとも収集しやすさを重視するのかという、ゴミ箱の機取得した値を cm（センチメートル）への変換をプログラムによって行う。物との距離が 0cm より高い値かつ、50 ㎝未満であるならば、回転し、前進することによって、障害物回避を可能とした。

能としてどちらを重点に置くかという問題があった。本プ

目標物への移動は、Pixy2 によって手のひらを検出した

ロジェクトではゴミの問題としてポイ捨てや机の隙間に放時、手のひらの中心点が中央に来るようにロボットが移動置する問題があることから、収集しやすさを重視することするようプログラムを作成した。とした。

3.2 ソフト班

まず初めに、ロボットの上部にゴミを収集する部分を設

3.2.1

シミュレータでの移動

シミュレータでの役割は複数機での最適な行動を模索することで、その結果を実機に反映することを考えている。
実装内容は以下に示す。
・直進とその場での旋回を数秒ごとにランダムで呼び出す（ランダム走行）・障害物に接近したら直進を止め、その場で旋回（障害物回避）

4. 今後の課題
4.1

メカ班

現状のロボットの動作は、各機能は実装できたものの、それらを組み合わせたとき、障害物回避の動作が優先されている為か、目標物への移動が上手く作動しないものになっている。これらの改善がロボットの動作としての今後の課題である。また、ランダム走行も現状では非常に単純で・カメラを用いて目標物を検知ある為、ロボットを稼働するエリアに飛び出す可能性があ・PID 制御を用いて機体を制御し、ライントレースを行る。このような問題は人工知能を搭載し、環境マップを作う成することによって解決することができる。外装はより収・本体を二輪駆動や三輪駆動にしていくように、徐々に再現率を向上させる

集率を上げるための形状・色などを調査する必要がある。
4.2 ソフト班

シミュレータは Unity により実装を行っているが、現状シミュレーションの今後は、ロボットの再現率向上の為、ではランダム走行・障害物の検知及び回避・カメラによる3 輪駆動の実装や、目標物検出などの実機に活用するセン

対象の検知・複数台での稼働・二輪駆動による PID 制御をサの機能向上が課題である。

実装することができた。

呼び出し機能の課題としては、現状では Android でしか機能を実装できていない為、iOS など、別の端末でもライトの制御を行えるようにすることである。また、呼び出し機能としてライトを使う方法は明るい場所ではロボット側で検知ができない可能性がある為、他のロボットを呼び出す方法を考えることも必要である。

参考文献[1] 小口貴宏 (2017),「通信するゴミ箱、沖縄で実証実験。
図 3. シミュレータ稼働画面
3.2.2

呼び出し機能呼び出し機能は第一段階として、スマホの LED ライトを利用することにした。スマホのライトを制御する方法として 3 つの手法を考え、検証を行った。
まず 1 つ目の手法は、Unity のカメラ制御を用いる方法
だが、これではライトの制御に応用できなかった。

「 回 収 コ ス ト 」 削 減 狙 い KDDI が LTE-M 活 用 」 ,https://japanese.engadget.com/2017/09/08/kddi-lt
e-m/（閲覧日:2018 年 12 月 8 日）.
[2] 文化庁 (2012), 「文化庁メディア芸術祭歴代受賞作
品 」 ,http://archive.j-mediaarts.jp/festival/2012/entertainment/works/16e_Smart_Trashbox/ （ 閲 覧日:2018年12月8日）.

2 つ目の手法は Xcood を用いて機能を作り、その後 Unity[3] Brooks, (1986) R. A., A robust layered controlに実装する方法である。この方法は特定の環境でしか動作

system for a mobile robot, IEEE Journal of Robotics

しないことが判明した。また、実機の調達が困難であった

and Automation, Vol. 2, No. 1, 14-23.

為、今回のプロジェクトでは断念することになった。

[4] 高橋史武 (2018), 「人とリサイクルシステムの3 つ目の手法は Android Studio を利用することである。

インターフェース「ゴミ箱」の機能性とデザイ

この方法でライトの制御を行える機能を作成することがでン効果の分析」, 総合環境政策局総務課環境研

きた。次の段階としては、作成した機能を Unity の関数を究技術室, http://www.erca.go.jp/suishinhi/seik

用いてファイル内にある機能を実装することである。

a/pdf/seika_1_h30/3K153011_2.pdf（閲覧日:2018
年 12 月 21 日）.