ロボワンオートのための画像処理基本プログラム
第17回 ROBO-ONE カンファレンス ( 2019/06/29 )チームOMEGA 代表 青木泰憲

アジェンダ１．チームOMEGAについて
２．HYBについて
３．ロボワンオートについて
４．ハードウェア
５．ソフトウェア
６．人工知能入門

１．チームOMEGAについて
１．１

自己紹介

氏名：青木

職業

：鉄道・セキュリティカメラ開発を経験した後商社で顧客サポート業務

泰憲

ロボ歴：大学時代NHKロボコンに参加
機械学会でロボットに関する論文発表
以降は自宅でプログラミング
2018年にチームOMEGAを結成しロボワンオートに参戦

１．チームOMEGAについて
１．２

チームメンバー紹介

代表モーションメカエレキソフト※

Y.A
Y.A ・K.S
Y.A
Y.A
Y.A・K.S

設立時は６人チームでしたが優勝後、会社としての活動に限界を感じたためチームは凍結となりました。
しかし、２月のエキシビジョンマッチより社会人チームとして活動を再開しております。と言っても、実質的にはY.Aがメインで活動しており、旧メンバーは不定期(K.S氏)、一時休止(Y.T氏、G.H氏)
残る２名は卒業となっております。

２．HYBについて
２．１

HYB（ハイブリッド）

近藤科学製KXRキットにセンサを搭載し、足回りのサーボモータを公認ロボットルールに基づき交換、ボディプレートなど一部3Dプリンターで製作した機体です。
第４回ROBO-ONE autoにて奇跡的に優勝したロボットです。
ちなみに、HYBの由来は２社目の会社で私が立ち上げた製品名から取りましたw

２．HYBについて
２．２

Ⅱ-HYB（ツーハイブリッド）

第４回ROBO-ONE autoの優勝ロボットHYBに人工知能を搭載した改修機。
2019年２月の大会のロボワンオートエキシビジョンマッチでディープランニングによる相手ロボットの認識と人物検知の実演を行った。
ラズパイ３を搭載しており自律動作は不可能であったため、第５回ロボワンオートに向けてさらに追加改修が行われている。

２．HYBについて
２．３

公認ロボットについて

ROBO-ONEでは、ROBO-ONE委員会が公認する市販ロボット(公認ロボット)に限り、無改造であればそのまま参加できる大会 「ROBO-ONE Light」を開催しています。
初心者の方でも簡単に参加できる大会です。
自作・改造ロボットには1kg以下など厳しい条件が設けられます。
これにより市販ロボットそのままでも、熟練者が操縦する自作ロボットと互角以上に競えます。
※ 参考サイト：http://www.robo-one.com/authrobots/

３．ロボワンオートについて
３．１

自動認識規定ロボワンオートでは、第５回ロボワンオート(2019年09月大会)から「自動認識規定」が追加される。2018年11月19日に先行公開された
内容は以下のとおりである。
【原文】
ROBO-ONE auto においては、ロボットは 1m 以上離れた相手の状態とレフリーを認識しなければならない。この審査は、相手役として公認ロボットの KHR-3HVを使用する。
1m離れた位置にKHRを置き、 ①KHR が立った状態の認識、②KHR が倒れた状態の認識、および人が 1m 位置に立ち③人(レ フリーを想定)であるかどうかの認識ができることを規格審査で確認する。
認識ができた場合は、ロボットから以下の合図を送れるようにすること。
① KHR が立った状態を認識した場合は、ファイティングポーズ② KHR が倒れている状態を認識した場合は、両腕を上げる。
③ 人（レフリー想定）を認識した場合は、両腕を広げる。 ペットボトルなどロボットでは無いものを置く場合がある。ロボットはこれに反応しないものとする。

３．ロボワンオートについて
３．２

Ⅱ-HYBでの自動認識実現方法

2019年02月のロボワンオートエキシビジョンマッチでⅡ-HYBは以下のようにして「自動認識規定」を実現しました。
①KHR が立った状態の認識 ：②KHR が倒れた状態の認識 ：③人：「KHRが立った状態」をディープランニング「KHRが倒れた状態」をディープランニング
OpenCVによる顔および目の検出

ディープランニングはChainerを使用して学習させラズパイで実行。
OpenCVは顔検出と目検出の分類器を使用している。
言語はPythonを使用しており、ラズパイゼロでは処理が重すぎるため実行不可だった。

３．ロボワンオートについて
３．３

KHR が立った状態の認識「KHRが立ち上がった状態」を認識すると「ファイティングポーズ」動作に移行します。

３．ロボワンオートについて
３．４

KHR が倒れた状態の認識「KHRが倒れた状態」を認識すると「両腕を挙げます」になります。

３．ロボワンオートについて
３．５

人の認識「人」を認識すると「両腕を広げます」になります。

３．ロボワンオートについて
３．６

サンプル動画

４．ハードウェア
４．１

HYBのハードウェア構成

第４回ロボワンオートで優勝したHYBは距離センサーを追加しただけのシンプルなものでした。 HYBのハードウェアを以下に示します。
サーボモータは交換していますがそれ以外はセンサーを３つ追加しただけです。
外装は３Ｄプリンタで製作を行いました。頭部の距離センサーは飾りです。
距離センサー(左)ＧＰ２Ｙ０Ａ２１ＹＫ

サーボモータ

近藤科学社製

距離センサー(中央)KCB-4mini

ＧＰ２Ｙ０Ａ２１ＹＫ

距離センサー(右)ＧＰ２Ｙ０Ａ２１ＹＫ

４．ハードウェア
４．２

Ⅱ-HYBのハードウェア構成

第５回ロボワンオートに先駆けて追加されたレギュレーションに基づき、ディープランニングを導入するため、Ⅱ-HYBではラズパイを導入しました。
Ⅱ-HYBのハードウェアを以下に示します。
ちなみに頭部の距離センサーはⅡ-HYBでも飾りになっています。
距離センサー(左)ＧＰ２Ｙ０Ａ２１ＹＫ

サーボモータ

近藤科学社製
KCB-4mini

ラズベリーパイ

距離センサー(右)ＧＰ２Ｙ０Ａ２１ＹＫ

距離センサー(中央)STマイクロ社製
VL53L0X

４．ハードウェア
４．３

ラズパイの役割

シングルボードコンピューターであるラズパイの役割は以下です。
・ディープランニングを使った画像判定
・OpenCVを使用した画像認識
・ToFセンサーからI2C経由で距離情報の取得
・近藤科学製KCB-4miniへの判定結果出力

４．ハードウェア
４．４

ラズパイに代わるハードウェア

今回ラズパイで問題になったのは以下である。
１．サイズがデカい：自作ならまだしもKXRにラズパイを搭載するのは正直キツイ
２．処理速度が遅い：ラズパイゼロよりは良いがもっとサクサク処理をしたいところではある。
３．電源が切れない：電源を手順無視で切ることができないのは不便である。

４．ハードウェア
４．５

対策案１．組み込みマイコンに置き換える→ STマイクロ社製のH7マイコンに置き換えることで１と２を解消
・STM32 CubeMXを使うことでAIモデルを取り込める・カメラのペリフェラルを持っているのでカメラをつなぎやすい案２．Snapdragonを採用する→ 携帯にも使われているSnapdragonを採用することで全体的な処理速度の向上を考える
・自作基盤作成によりラズパイより確実に小さくできる。

５．ソフトウェア
５．１

HYBのソフトウェア構成

第４回ロボワンオートで優勝したHYBは距離センサーを追加しただけのシンプルなものであるため、KXRから追加した基板はありません。そのためソフトウェアも近藤科学製のHeart to Heartで製作したものです。

RCB-4mini

Heart to Heart Software

５．ソフトウェア
５．2

Ⅱ-HYBのソフトウェア構成

Ⅱ-HYBでは、画像認識を行うためラズパイを追加しています。
RCB-4miniのソフトウェアに加えて、ラズパイのソフトウェアが追加されています。ラズパイではディープランニングによる画像判定とOpenCVによる顔認識ソフトをPythonで製作しています。
RCB-4mini

Heart to Heart Software

ラズパイ
Chainer Software
OpenCV Software

サーボ制御

画像処理

６．人工知能入門
６．１

人工知能とは人工知能とは「人工知能：Artificial Intelligence」は人工知能研究者であるジョン・マッカシーが初めて使った言葉です。専門家の間でも人工知能とは何かについては、共有されている定義がありません。
1950～1980：第１次AIブーム(推論・探索の時代)
1980～2010：第２次AIブーム(知識表現・機械学習の時代)
2010～20xx：第3次AIブーム(特徴表現学習の時代)

人工知能(AI)

機械学習
ディープラーニング

６．人工知能入門
６．２

ニューラルネットワーク （ ディープラーニング ）第３次AIブームに入り、技術の進歩やコンピュータの性能向上により、中間層を２層以上にしても精度が下がることがなくなりました。
中間層が２層以上のニューラルネットワークを「ディープニューラルネットワーク」、このニューラルネットワークを使用した学習が深層学習=「ディープラーニング」です。
（ 深層学習 ）
入力層

中間層

出力層

６．人工知能入門
６．３

ラベリング

ニューラルネットワークの学習を行うためのデータを集めます。
集めたデータは、データの種類ごとに仕分けします(ラベリング)
立っているKHR-3

倒れているKHR-3

ラベリング済みのデータの集まりをデータセットと呼びます。
世界中でいろいろなデータセットがフリーで公開されていたりします。

６．人工知能入門
６．４

学習用プログラムの紹介

学習データを作成するに当たり、Chainerを採用することにしました。
そのため、ubuntu PCを用意してPythonで学習データ作成プログラムを作成しました。
６．５

ディープラーニング実行プログラムの紹介

ラズパイでディープランニング実行プログラム作成しました。
言語はPythonで記述しています。
６．６

顔認識プログラムの紹介

ラズパイで学習データ使ったディープランニングプログラムのほかにOpenCVを利用した顔認識プログラムも作成しました。言語はPythonで記述しています。

ご清聴ありがとうございました。
チームOMEGAとHYBを今後ともよろしくお願いします(=ﾟωﾟ)ﾉ
AI学習データについては準備ができ次第公開します。