活動報告 No.143 結果はっぴょー
カテゴリ: 未分類

どうも、おはこんばんにちは。最近個人ブログを立ち上げた2年のマエダです。


ヒュー研のブログを見ている人ハード屋さんが多いんじゃないかと思うので、ソフト屋の私はヒュー研らしいブログを書けない…(これからFPGAというハードウェアに手を付けるけどね!)
というわけでサーバを借りて、個人ブログをソースコードレベルから構築し、そこでソフト系(人工知能中心)の記事をバシバシ上げておりまする。


サーバがマイナーだし検索ランキングで上位にするSEO対策なんて何も施していないので、Google検索で全く引っかかりません(笑)



この記事について


ROBO-ONE autoにてディープラーニングを用いたロボットの自動認識を実現させるために、今までやってきたことと、その結果、今後すべきことをタラタラ話していきます。
別にROBO-ONE autoなんかに限らず、IoT機器などにも転用できると思うので、いろんな人に見てもらえたらと思います。



結論


ロボットの機体に載せられるマシンを用いた、ディープラーニングでのリアルタイム物体検出は難しい。


ヒュー研が製作している3 kg級のロボットにコンピュータを搭載する上で考えなければならないことは、以下の通りです。


・省電力
・高性能
・軽量
・高精度な検出能力


これらを満たすマシンを搭載した3~5 kg級の機体を製作するのは、ARMやCPUなどの汎用プロセッサでは極めて困難と感じました。


5 kgならいけるかも、と思うかもしれないですが、そうしたら脚にかかる負担が大きすぎて、ROBO-ONE autoで格闘競技ができないと思います。もっとも、K社の最上位ハイトルクサーボをダブルサーボにしてブルジョワ機体をつくれば実現可能かもですが、制御、電源、金銭的な意味で現実味はないです。



なぜそう結論づけられるのか


まずディープラーニングをするには、機械学習フレームワークというものを使うのが王道だと思います。イチから畳み込み層やらプーリング層やら全結合層やらを重ねて正規化して損失出して誤差逆伝播させて学習率から重み調整してさらに一連の作業をミニバッチで処理とかやってられないです。そんな機械学習フレームワーク(と、併せて用いられる物体検出アルゴリズム)はCPUなどの汎用プロセッサかGPUを計算資源として用いる場合が全てです。


これを頭に入れた上で先ほどの条件を当てはめると、ラズパイなどのARMプロセッサ搭載の小型シングルボードが候補として出てきます。逆にこれ以外何があるのかよくわからないです。処理速度を重視ってことで、物体検出の試験マシンとして、Raspberry Pi 3 model B の約 1.8倍の処理速度を誇ると謳われている、ASUSの Tinker Board というシングルボードを使用しました。


結果、640×480pxの画像一枚に対して出力までに50〜65秒もの時間を要しました。
うん、、ロボワンで使うには遅すぎる。。1試合180秒だから、うまくいって相手を3回攻撃できるかどうかってところですね。


色々やって汎用プロセッサに限界を感じたのでありました。



今後すべきこと


別のアプローチで行くしかありません。考えているのは、汎用プロセッサがだめなら専用プロセッサを使うしかないんじゃないかと。具体名をだすならFPGA。今はPythonコードで記述したものを高位合成というのをつかってそれに落とし込めるらしいので、情報資源は乏しいですが、学習コストはあまり高くないんじゃないかと踏んでいます。Pythonの抽象性からハードウェア言語へはあまり信用できないので、C++でネットワーク組んでやるのが無難だと思われます。

いざとなれば研究室にいる先生に助けを求めるかもなあ。。


並列が得意なFPGAを使えばサーボを同時制御できますが、モーション練度と難易度的に4HVを挟んだ方が楽だと思うので、ARMも搭載しているZYNQボードを選択する予定です。


CNNの畳み込み層やプーリング層ではFPGAが得意な並列処理に流せると思うので、物体検出の際にR-CNNのような何回もCNNを通す物体検出アルゴリズムでも扱えるのではないか...?と思ったけど検出だけでなく全体の特徴点から測域したりオドメトリすることになってしまったらすぐリソースの限界がきてしまうと思うので、現状もっとも検出速度と精度のバランスが良いと思われるYOLOv2の実装を目指すべきだろうと思っています。もしもYOLOv2なら、本領発揮するのは学習過程(FCN)が繊細に関わってくるようなので、そこらへんも勉強しなきゃですね。


というわけで、C++でネットワーク組んで重みファイル自作して、高位合成ツールに頼りながらこれまたC++で物体検出のプログラムをFPGAに適用するしかなさそうです。



おまけー(上と内容が一部かぶるよ!)




夏休みの20日間くらいを使ってやったこと


全部淡々と話すと分量がやばいことになるので、端的にまとめると、


1、学習に必要なアノテーション生成GUIソフトウェアを作成した
2、機械学習フレムワークDarknetで学習させた
3、YOLOv2で物体検出した
4、シングルボードで実行速度等観察した


です。



結果


個人ブログでめっちゃ詳しく解説して力尽きたので結構適当な文章です。用語がある程度わかるなら容易い。


1、アノテーション生成GUIソフトウェア


自作してGitHubにあげました。クローンするかZIPで落として使ってください。READMEを読めばソフトの扱い方はわかると思います。
Python?なにそれおいしいの?って人は、、頑張りましょう。

ソフト:

https://github.com/ShimizuMizu/BB-Engine-forDarknet


2、Darknetで学習


Linuxではリポジトリをクローンしてきてビルドするだけなんですが、Windowsでやろうとすると厄介です。専用のリポジトリを使ってvisual studioとOpenCV(pipとかじゃなくてインストールファイルから入れるパターン)を使ってビルドしなくてはなりません。英文ですが、専用のリポジトリのREADMEの通りにやって、、、行くのも結構辛い。
ちなみに約350アノテーションを2000エポックかけて学習させて(バッチ不明)、260 MBの重みファイルが生成されました。


3、YOLOv2で物体検出


実行後の様子は以下。




4、ジングルボードで試す


今回はGeekベンチマークでラズパイ3 Model Bの約1.8倍の処理速度を誇る、ASUSのTinker Boardを使いました。


 ◆ 処理速度
一枚50秒は下らない。60秒以上かかることもしばしば。YOLOv2にはtiny-YOLOという精度は落ちるけど実行速度を上げることのできるパラーメタもありますが、それでも30数秒です。ならいいじゃないかって思うかもですが、とにかく精度が悪い、悪すぎる。実用性を考えると使えないですね。ちなみに通常版(?)では損失関数が0.04あたりまできたのに、tiny版は0.55でした。tiny版は1000エポックしか学習させていないですが、600エポック過ぎたあたりからもう0.5の壁を越えられない感じだったので、現状これが限界かと。


 ◆ 発熱
やばい。焼肉ができるよ!やったね!(使用率30%)
てな訳で、もしもこのマシンで物体検出付き監視カメラっぽいことなどやりたいのなら、マシンの形状がラズパイと同じなので、ラズパイ用の金属ケースを買って、ARMから金属ケースの天板までを金属の四角柱で繋いで伝熱、ケースにはこれでもかってくらいのヒートシンクをハリネズミのごとくビンビンに装着し、必要であればUSB(5V)から電源の取れるファンを付ける必要あり。

 ◆ メモリ
最大でシステム含めて600 MBくらい。今回使ったマシンは2GBもあるけどそんなに要らない。ちなみにOSはASUS公式で配布されているDebianベースのTinker OSというやつ。しかしデスクトップ画面はがっつりDebianのマークが。

 ◆ メモリの発熱
個人的に「CPU、GPU、メモリ、電源」が発熱四天王だと思っています。今回の場合は5V/3AのACからとるタイプだったので、四天王の一人である電源くんはクビですね。
同じメモリ使用量でもTinker Boardの方が余裕があるからなのか?メモリの発熱はラズパイより軽症だと思います。



余談


ASUSのTinker Boardくんは実稼働時間6時間程度で物体検出用マシンの前線から退いたわけですが、コイツ結構お高いんだぞ...¥8,500もしたし。
さて、どうにか酷使してやらないと気が済まないので、ゲームサーバに使おうかなと思っています。腐っても中身はDebian、Red Hat系をほとんど使わない私はUbuntuと同じような感覚でコマンド打てるのがなかなかに良いのです!
メモリ2 GBの恩恵を生かして、旧友にマイクラのサーバでも提供しようかな。消費電力は低いしファンレスにできるしスクリプトの自動実行でバックアップしたりFTP転送で使用率共有したりできるしサスペンド、ハイバネートが簡単にできるしで使い道あるぞこれ。


編集 / 2017.09.22 / コメント: 0 / トラックバック: 0 / PageTop↑
活動報告 No.142 ROBOT JAPAN 14th に参戦
カテゴリ: 未分類
どうもおはこんばんにちは、今日から夏休みが明けた2年のマエダです。

8月中は別の方たちがブログ更新をしてくれたということで、ブログ担当の私は自分のことに専念できました。もしかしたらそのことについての記事を書くかもです。

さてさて、2017年 9月 10日に「ROBOT JAPAN 14th」が開催されました。


  • プロテウス
  • スプラウト
  • メビウスK
  • 釣式
  • テオ

ヒュー研は3年生から2機体、二年生から4機体の出場でした。

結果は以下の通り

機体名 フライ級 バンダム級
プロテウス --- 4位
1回戦でNUXに敗 ---
スプラウト 準々決勝でこびすに敗 ---
メビウスK 3位 ---
釣式 準々決勝でこめたに敗 ---
テオ --- 準々決勝でガルーに敗

てな感じです。
Inked1505448955023_LI.jpg

誰に負けたか見てみると、ベテラン操縦者に負けてるパターンが多いですね。一部を除いて機体はそんな悪くないけど、オペレータ経験値が足りないと思われるので、やはりちゃんとした部内戦が必要だと思いました。

ちゃんとしたってのは、部内戦が始まった直後に機体整備を始めるのではなく、いつでも出動できるように準備した状態で部内戦に挑むこと、ROBO-ONE準拠のルールで1試合ずつ丁寧に戦うこと、重量ごとに複数の十分に戦える機体を用意すること、の3つで、これらが揃ってちゃんとした部内戦と呼べんるんじゃないかな。
1505448969592_2017091521083286d.jpg

今回は会場のとても良い席に座りながら頭の中でずっとニューラルネットワークをPythonではなくC++で実装する方法を考えていたので、各機体の繊細な動きを観察することなく何か大会終わっていたので、試合内容に対してピーチクパーチク言えない。。。

ちょいと思ったのが、某メジャーはさみ機体が小型化した気がします。人間でいう大腿骨が脛骨より短い?気もします。これに対して腰ピッチのないすくい上げる系機体が苦戦していたと思います。Typerionとかガーランド・ピローとか閃電とかがこれにあたります。

しっかりすくい上げるには腕先端の入力位置を下げる必要があるんじゃないかと思っていて、それには股関節ロールとピッチを直交にする、肩の位置を下げる、腰ピッチを導入する、の3つが必要だと思いました。あとはレギュレーションに引っかからないように重心を考えないと。
Inked1505448943659_LI.jpg

同機体のモーションに関しては、もしかして攻撃パターンが増えた?かもです。今まで踏み込んでつかんで投げる攻撃でしたが、踏み込み無しで腕を素早く上げる攻撃が1~2回あったような。小型化してるし前歩行が速いので、突進してきて足元に入られてその素早い攻撃なんかされたら簡単に1ダウン取られてしまうので、自分の機体の距離感を完璧につかんで、コントローラを押してから機体が動くまでのタイムラグを考慮しつつ、来たところを返り討ちにするのが正面同士の対処法かなと。とはいっても今はまだ低身長機体の方が少ないので、打点高めの攻撃もあった方が汎用的な機体になりますかね。側面から来られたら捨て身技で前後に緊急回避するかあ。。
1505448958763_20170915210830b73.jpg

今回もロボット芸人の高橋ちゃんが一発芸やってて、その部門で一位になっていました。冒頭で同事務所内の人にはウケなかったって言っていたのですが、確かにWindowsを何年も前から使っている人間じゃないとわからないかもですね。次はWindows名物のブルースクリーンだっ!
あと韓国勢から画像処理機体が出てこなくて寂しかったです。前回と違うところが来ていたらしいのですが、それはそれで別の高スペックロボ見たかったなあ。
とかく言う私も開発に専念して忙しそうにしないと親からヒキニート呼ばわりされそう。
ROBO-ONEまであと1週間、その週は実験レポートを課されない週なので、夏休みの間に頑張った(?)結果をぶつけましょー ♪(/・ω・)/ ♪
1505448977887_201709152108348ed.jpg

追記:
なぜか投稿日時が1970年1月1日になっており、最新の記事に表示されていなかったので修正しました。(^Д^)キヲツケルンダ!

編集 / 2017.09.15 / コメント: 0 / トラックバック: 0 / PageTop↑
活動報告 No.141 KONDO BATTLEに参加しました
カテゴリ: 未分類
みなさん初めまして。2年のオマタです。
前回のイトウ君に続き、いつもブログを書いているマエダ君に代わって書くことになりました。

さて本題ですが、先日行われた第23回KONDO BATTLEに参加してきました。会場は今回も立川のKOTOBUKIYAホールです。2月のKONDO BATTLEからKOTOBUKIYAが協賛して、フレームアームズの宣伝やコラボ等を行っています。大会の後に下の階にある店舗をウロウロできるので、個人的には今後もここでやってほしいですね。

我がヒュー研からは3機体が学生選抜クラスに出場しました。


◆プロテウス
IMG_0137.jpg 
部長の機体。理科大のニソコンでは、かのクロムキット相手に善戦を繰り広げました。ROBO-ONEの規定を満たすため、約400gの減量を敢行。光る目のあるかわいらしい顔もつきました。実は胴体にモジュールを追加できるスペースが設けられており、将来性もばっちり。


◆メビウスK
IMG_0138.jpg 
前回のROBOT JAPANから活躍している2kg級機体。大会が終わるたびに進化を続け、ニソコンではベスト4入りを果たしました。学生選抜クラスはROBO-ONE規定に則った3kg級機体が大半なため、重量的なハンデを背負いながらの戦いですが、モビリティの高さを武器に頑張ります。


◆テオ
DH0DwOwVoAAkffm.jpg 
次期部長の機体。プロテウスと共に、前回のニソコンで大会デビューしたニューフェイス。脚がシングルリンクで、平行リンクの機体ではできない多彩な動きができますが、その分モーション付けには苦労するようです。今後モーションの練度が上がればさらにいい動きになりそう。


●大会当日
DIIgr_yU0AApeUf.jpg 
「まあ今日はKXRクラス、当日ですけどもぉ~
参加者は誰一人、いませんでした…
誰一人来ることなかったですぅ。残念ながら。はい。」

じつはこの大会、近藤科学の新作ロボットKXRの部門も新設されていたのですが、なんとエントリー機体はゼロでした。六足で歩くKXRの操縦は結構面白かったのに残念。

オープンクラスはというと、関西からあのキング・プ二が現れ無双していましたね。ROBO-ONE Conferenceで講演してくださったときにも感じたことなのですが、あの勝利にとことん貪欲な姿勢が、大会で連勝できる秘訣なのかもしれません。


●大会を終えて
今回の反省会で反省点として挙げられたのは、「ヒュー研でひとつの機体を引き継ぎながらやっていったほうが、大会で結果を残せるのではないか。」ということ。現に他大学の皆さんはほとんどこの方式で、先代から機体を引き継ぎ、それを部として改修していくことで今の姿になっています。数人のグループないし個人で各々機体を作っている学生団体は我々くらいなのではないでしょうか。

「個人プレイの限界を感じた」と部長。
社会人の方と比較して我々学生が有利な点はふたつあると思います。ひとつは「膨大な時間があること」、もうひとつは「(先代を含め)チームプレイができること」です。せっかく部活としてやっているのだから、部員皆で協力してひとつの機体を作るのも手だと思うんです。まあチームプレイはチームプレイでいざこざが起きてしまうのですが…


そういえば、今冬のROBO-ONEは東京開催みたいですね。チームプレイの話も頭に入れながら、冬に向けてヒュー研活動していこう。
(今月のROBO-ONEは?聞かないでください…)




編集 / 2017.09.08 / コメント: 0 / トラックバック: 0 / PageTop↑
活動報告 No.140 合宿に行きました2017
カテゴリ: 未分類
初めまして!2年生のイトウです(=゚ω゚)ノ
今回はブログ担当者さんに代わって幹事がお送りします!
初めてのことですが頑張ります

今年の合宿はなんと! 長瀞オートキャンプ場に行ってきました!
去年は川に入るころには寒かったですが、今年はとても暑くみんな涼しそうでした
IMG_0642.jpg





そしてBBQ!
IMG_0662.jpg




あちら側のミスで野菜が多く(お肉が少ないわけではない)
野菜の方が印象深かったです(-∀-)
火おこしたり(僕は対してやってない)と大変ですがBBQはやっぱりおいしいですね!



夜には花火!
IMG_0673.jpg


あんまり写真撮れてないですね…(イトウは残飯処理してました)



このあとバンガローで人狼したりトランプしたり本来の目的である1年生と2年生の交流がよくできたかなと思います。
いろいろ遊びの用意してくれた次長さんのおかげですねヽ(´∀`)ノ


翌朝の集合写真!
IMG_0675.jpg



うん!去年よりいい笑顔!

何の問題もなく無事に終えてよかったです。
みんなのおかげで楽しい合宿になりました(´∀`*)
この合宿がみんなの夏の思い出の1つになればいいな

1年生はこれから秋に向けて文化祭準備とかあるけど頑張ろう!





編集 / 2017.08.29 / コメント: 0 / トラックバック: 0 / PageTop↑
活動報告No.139 夏休まない
カテゴリ: 未分類
土日はオープンキャンパス展示、月曜はインターンシップへ参加していた三年タカハシです。

8/8(土)~8/9(日)はMaker Faire Tokyo 2017がありましたがオーキャンとかぶってしまい二年連続行けませんでした(去年はブラジルへの準備で)。ヒュー研も二足にこだわらずこういったモノ作り系のイベントに出てもいいのではないかと思います。

さてブログのほうですが最近のブログを確認したところしっかりと後輩が更新してくれていました。まぁネタがややソフトよりなので私やODA部長がハードネタを入れるとバランスがいいのかな(笑)

とは言っても自分も半年間、機体は改修してないので夏休み中ないし今後に改修すべき点を今回は列挙していきたいと思います。

Image_b3c5316.jpg 
※いい加減見飽きたと思うのでフロント部分を開けてみました。受信機はピンの向きを改造してます。

まずこの機体のコンセプトですが「操作性特化」です。バトルのことは一切考えてません。このようなコンセプトを設定したのは第29回のROBO-ONEでの台湾勢のロボットの動作の安定性に感銘を受けたからです。ヒュー研は機体製作のノウハウこそ蓄積してきましたが歩行に関するノウハウは浅くきっちりとした歩行ができる機体ができてきたのもここ最近かと思います。そこで操作性すなわち動作の安定性と多様性に取り組むことにしました。

ここからはハードウェアとソフトウェアに分けて工夫した点や今後回収すべき点を書いていきます。

長々適当に書いたので要約を読むことをお勧めします

ハードウェア
1.脚の剛性
大前提として脚の遊びは0を目指すべきだと思います。前歩行ができない機体の多くは股関節等のロールの遊びが大きく重心移動がままならないパターンが多いです。自分の機体はFutabaサーボを使った結果遊びをほぼ0にすることが出来ました。これができた理由は機体重量が軽くサーボに負荷がかからなかったことと、そもそも負荷のかかるモーションを付けなかったことが考えられます。ただ股関節ロールはほんのわずかですが遊びが出てきたのでVstoneサーボに変えようかと思っています。K社のサーボは遊びが大きい(扱い方が悪いだけか?)ので使いません。というか教示機能のおかげでVstoneマイコンでは脱力できないので使えないです(面倒な設定をすればいけないこともないけど面倒)

要約→遊びの原因となる負荷のかかるモーションや設計をやめろ

2.軸配置
機体としては珍しい腕yawと脚yaw軸を追加しました。腕yaw軸は単純にモーションを多様化するためです。脚yaw軸は歩行での左右のブレを補正するために付けました。人間ですら目をつぶったらまっすぐ歩けないのですからましてやそれをロボットに求めるのはナンセンスです。そのためアナログスティックで歩行動作中に補正してあげるのが妥当だと思います。もしくは磁気センサで初期位置とのブレを取ってやるのも一つの手だと思います。あと脚yaw軸を付けることでその場での旋回が簡易的になり結果として負荷を減らすことが出来ました。ヒュー研流旋回(足の開きを利用)は負荷は掛かり過ぎですからね。私の機体でやったら確実にギアが砕けます。逆に腰yaw軸は無くしてもいいかなと思ってます。実際のところ起き上がりぐらいしか使ってないし、腰yaw軸がなくなることで胴体が短くできるのでこの点も問題ないかと思います。

要約→脚yaw軸は必須。

3.整備性
ここまでわりとポジティブに書いてきましたが失敗したのが整備性です。VSRCなので配線がごっちゃになるのがわかっていましたが、整備的に一か所に固めるのが良かれとおもって開閉部に固めてしまいバッテリーを入れるたびにモニュっと押し込まなくてはならなくなってしまいました。これは配線の損傷につながるため改善しなくてはなりません。ヒュー研ではバッテリーをコネクタで直接試合毎に接続していますがこれは配線を一回一回引っ張り出す必要があり面倒だしショートなどのトラブルに繋がりかねないのでできれば避けたいものです。個人的にはバッテリーをパソコンのようにモジュール化するのがいいかなと思っています。あと電源スイッチの位置が微妙だしオンオフがわかりずらかったのがよろしくなかったです。この辺はODA君の新機体が非常によい設計だったのでいずれ紹介してほしいと思います。

要約→配線は動作中以外にも考慮すべし

ソフトウェア
1.マイコン
正直言って圧倒的にVstoneの方が使いやすかった。特にUIが見やすい。K社のマイコンは確かに全く知識のない人でもできるけど複雑なことをしようとするとごっちゃになってモーションが組みにくい。その点Vstoneはフロートチャートにプログラム的なアルゴリズムが入っているのでわかりやすい。センサー類の拡張性も高いのも良い点だ。部活の予算が許せば三軸加速度、三軸ジャイロ、三軸磁気が一枚に乗った小型ボードを乗せたいと思っている。

要約→VSRC-003は最高

2.モーション
前後歩行に関して言うと足裏の動きが三角形よりは五角形にした方がいい気がする。そのほうが遊脚が設置する際に慣性による反動を減らせると思う。あと足を動かす際のyaw軸回りのモーメントを腕で相殺するのは有効だった。歩行という動作は周期的に変化する為場合によっては共振が起こる。例えば数歩歩けても数十歩で転倒するというのは脚の剛性のなさにより振動が減衰しないためと考えられる。この辺はジャイロを使えばより動的にできると思うがどの程度の角度変化で重心がどれだけ動くかなどの数式化をすべきだと思っている。

要約→動的安定性を追求すべき


といったところだろうか長々と書いてしまった。これらのことを改善しようとすると全体的な再設計が必要となるので夏休み中にできるのか.....?

その前にFusion360講座の資料作成とロボ研の活動もしなきゃいけないし。

ps.週休二日制を導入したのは松下電器(現Panasonic)だがその意図が「一日休養、一日教養」というのは知っているだろうか。君は一体何のために休みをつかう?
編集 / 2017.08.09 / コメント: 0 / トラックバック: 0 / PageTop↑
プロフィール

ヒュー研の中の人

Author:ヒュー研の人
このブログは東京電機大学理工学部ヒューマノイド研究部の公式ブログです。2012年から部に昇格しました!
その日の活動や大会の記録をできるだけ更新していきたいです!!

☆だいたい金曜日前後に更新します☆

FC2カウンター
カレンダー
10 | 2017/11 | 12
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -
リンク
ブロとも申請フォーム
携帯でみるには↓
QR