2016年6月24日金曜日

完全な自動化で操縦はもちろん充電・バッテリー交換作業すら不要のビジネス向けドローンシステム「Airobotics」

充電が自動が面白いかな。最初のパスプランニングは多分手動だろう。http://gigazine.net/news/20160622-airobotics/



ドローンは娯楽向け以上にビジネス用途での活用が期待されていますが、大きな障害となるのがドローンをコントロールする技術的な難しさです。そこで、ビジネスでドローンを活用するべく、誰でも簡単に使え、人間の手を一切煩わせることなく「完全な自動化」を実現するドローンシステム「Airobotics」が開発されています。

Airobotics
http://www.airobotics.co.il/

完全自動化のドローンシステムAiroboticsについては、以下のムービーを見れば一発で理解できます。

Airobotics - Automated Industrial Drones - YouTube

「Airoboticsはドローン産業に革命を起こします」と語るのは、Airoboticsのラン・クラウスCEO。


ここは採掘施設。


採掘場のような広大で危険がつきものの現場でドローンが果たす役割は大きくなりつつあるとのこと。


ドローンが担う作業として、まずは定期的な巡回作業があります。


設備が機能し作業員が正しく働いているかをチェックするのに、空中から確認できるドローンは最適。


空中から俯瞰(ふかん)できるドローンならではの活用法もあり。


それはマッピングや測量。空中から撮影した映像をソフトウェアで処理することで、これまでは多くの人手が必要だった測量作業を効率的に行うことができます。


「この施設には100台のセキュリティカメラがあります」と話すクラウスCEO。


工場ではセキュリティチェックのために、2台の自動車が巡回していますが、警備にもドローンは活用できます。


ドローンの映像は、遠隔地からリアルタイムで確認可能。警備する人の負担を大きく軽減できます。


「また、このような施設内には、危険なエリアが多数存在します」


危険な場所に人を派遣することなく、無人で調査できるドローンは、危険なエリアの探索にも心強い存在です。


「このような施設でのドローンの活用は進んできていますが……」


「ドローン専門の業者に外注するには高いコストがかかります」


「また、社内でドローンを扱う人材を育てるにもお金がかかり、その上、望むような結果が得られないというリスクもあります」


このようなビジネス用のドローンを、低価格で利用できるのがAiroboticsのドローンシステム。


クラウスCEOの後ろにあるプレハブの建物くらいの物体は、Airoboticsの開発した「ドローンベース」とのこと。あらゆるニーズに正確に応えるために開発されたドローンの本拠地で、屋外に設営できます。


屋根の部分が左右に開くと……


中からヘリポートのような「ドローンポート」が登場。


こんな形のクアッドコプターを使います。


このドローンベースはドローンが離発着する拠点となる施設。


Airoboticsはドローンベースと共に、ドローンを管理するためのソフトウェアシステムを提供するとのこと。


Airoboticsシステム最大のウリは、「完全なる自動化」


一般的なドローンは、姿勢制御は自動化されていますが飛行コントロールは人間が行い、また、長時間の飛行に避けて通れない充電やバッテリー交換は手作業で行う必要があります。


しかし、Airoboticsのドローンシステムでは、飛行プログラムに従ってドローンが全自動で離陸、飛行、着陸することができ、充電作業すら不要の完全な自動化を実現しています。


ドローンの飛行コントロールは一切不要で、遠隔地からモニター越しにドローンの飛行状況を確認可能。人間がやることは、ドローンに与えられたミッションが確実にこなされているのかのチェックのみ。


予定のミッションを終えてドローンベースに戻ってきたドローン。


所定の場所に着陸。もちろん全自動。


ドローンが着陸すると、ロボットアームがバッテリーを運びます。


そして、ドローン本体にバッテリーを挿入。ドローンのバッテリー交換作業も完全自動化されています。


エネルギー補給完了。


バッテリーを交換したドローンは、次のミッションに向けて飛び立ちました。


Airoboticsのドローンシステムでは、「セキュリティ」や……


「巡回作業」


「測量」


「緊急時の現場確認作業」などを、人間の手を煩わせることなくドローンに担わせることが可能です。


「完全な全自動化」によって、ドローンビジネスは大きく変わるとAiroboticsは考えています。


Airoboticsは、イスラエル・テルアビブに本拠を構える2014年7月創業のスタートアップで、GoogleのATAPチームのリチャード・ウルドリッジCOOやUpWest Labsなどから、2850万ドル(約30億円)の出資を獲得しています。シリーズBの投資ラウンドを経たAiroboticsは、完全自動ドローンシステムの市販に向けて動き出すことになりそうです。

ディープラーニングで森の中を迷わずに自律飛行できる遭難救助ドローン

論文は知ってたけど、こう使うんですね。
http://gigazine.net/news/20160213-drone-visual-perception/



森や山を自律飛行できるロボットの開発において、従来の研究では道自体を区別できる技術に焦点が当てられていました。そんな画像特徴や外観対比による経路の分別はロボットの自律走行技術として不適当であるとして、3台のアクションカメラの映像をディープラーニングで一度に解析して、正しい経路の方向を人間に匹敵する精度で選択可能な新技術が発表されました。

On the Visual Perception of Forest Trails
http://people.idsia.ch/~giusti/forest/web/

カメラ映像による視覚情報をディープラーニングで解析して、山や森などの道を識別できる技術を研究しているのは、スイスの人工知能研究所「IDSIA」および、チューリッヒ大学のロボティクス知覚研究グループによる共同研究グループ。ドローンに搭載可能な山林救助の新技術が一体どのような仕組みなのかは、以下のムービーを見ると分かりやすいです。

Quadcopter Navigation in the Forest using Deep Neural Networks - YouTube

クアッドコプターに搭載されている新技術は「自動的に森にある道をたどって飛行する」「野外の遭難者の捜索救助任務で活躍できる」「市販のカラーカメラ(GoPro)で道を識別する」といった特徴を備えています。


自然の中の道は人間でも見分けがつきにくく、ロボットが画像や映像から正しい進路を取るのは、従来の技術では十分な精度で実現できていません。以下のように、左・前方・右に道のようなものが見える場所で、正しい方向を選択できる技術を確立するのが最大の目的です。


問題解決のため、IDSIAとチューリッヒ大学の共同研究グループが用いたのは3台のカメラによる映像をディープラーニングで解析し、正しい進路を自動的に判別するというもの。


ドローンが道の上を飛行している時、システムはカメラから得た映像を10層のニューラルネットワーク、15万の負荷、50万のニューロン、5700万の接続で処理しているとのこと。


ドローンに搭載したシステムが正しい道を識別できるようにするため、あらかじめ頭に3台のGoProを人間に取り付け、学習データが取得されています。


学習データとして入力された写真の枚数は2万枚におよんでいるとのこと。


それらのデータを処理することで、カメラで見えている3方向へ適宜、進路を修正することができ、迷わずに正しい進路を自律的にとることができるわけです。


その結果、新技術による進路識別精度は、従来の52.32%に比べて85.23%となっており、人間と同程度である82%という識別精度を実現しているとのことです。

2016年5月30日月曜日

std vector の For loop 中での削除

VectorのEraseを使い、条件に合ったものを削除するプログラムを書いたのですが、途中でハマってしまった。考えてみると馬鹿なのだが、ちょっとしたことなので記録。

サンプルのコードは以下
for ( ; it != data.end(); ) {
  if (condition) {
    it = data.erase(it);
  } else {
    ++it;
  }
}

馬鹿のことは、data.eraseの前の "it ="を忘れてエラーを出しまくってしまった。









2016年5月16日月曜日

cv::Rect を vector に保存すると遅かったので 構造体で高速化

原因はわかりませんが、
std::vector(cv::Rect) Rects;
で作った値に、push_backで追加するとすさまじく遅い。毎ループ3 つ追加するだけなのに、
100ms
なんじゃこれ?

検証する時間がもったいないので、取りあえず改造して高速化する。
欲しいのは、
x
y
height
width
だけなので、その分だけの構造体を作って、
typedef struct{
int x, y, width, height;
}Region;

std::vector<Region> Regions;

って感じに変える。
こうすると、1ms以下。

クラスの追加でいろいろと変な処理が入っていると思います。おそらくRectのクラスの中を見るとわかるんでしょうが、時間がもったいないのでしない。

取りあえず、高速化できたからよしとしよう。

2016年4月2日土曜日

Chainer のインストール(Windiows10, GPU, anaconda(Python 2.7), Visual Studio 2013)

Deep Learning が楽しいのでGPU買っちゃった。Geforce960ですが。セットアップしようと思ったら、電源の容量が足りなくて、購入する羽目になったりとかインストールを始めるまでも大変でしたが・・・いざインストールを始めてみると、CPUのみはかなり楽なのに・・・GPUを導入したらまぁー大変でした。原因のほとんどはcupyがないってこと。


1. Microsoft Visual Studio関係をインストール
Anacondaでコンパイルするために、Visual studioのファイルを使います。下記の二つをインストールしましょう。
Microsoft Visual Studio 2013をインストール
Microsoft Visual C++ Compiler for Python 2.7をインストール
この後に、PATHを追加します。
Windows10ではWindowsキーの上で右クリックしてでたメニューからシステムを選ぶ。右のメニューからシステムの詳細設定を選び、「環境変数」をクリック。システムの環境変数(下の枠)からPathと書いてあるのを探し出して、編集を押す。そしたら、下のパスを追加する。
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin


2.CUDAのインストール
GPUを使うので、nVIDIAのライブラリであるCUDAが入っていないと話になりません。公式サイトからダウンロードしてインストールしましょう。
公式サイト
私は、Chainer1.7ではCUDAの7.5で何も問題ありませんでした。これをするとCUDAコンパイラのnvccがインストールされ、パスも自動設定されます。

3.cuDNNのコピー
cuDNNをダウンロードします。登録しないとダウンロードできないので、いろいろ答えて、ダウンロード。私の時には下のファイル名のファイルが落ちてきました。
cudnn-7.0-win-x64-v4.0-prod.zip
解凍。各ファイルをNVIDIA GPU Computing Toolkitの各フォルダにコピーする。
cudnn64_4.dll -> C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\bin
cudnn.h -> C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\include
cudnn.lib -> C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\lib\x64
cudnn_static.lib -> C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\lib\x64

4.Python環境のインストール
私の知る限り、Pythonの環境は、PythonそのものとAnacondaがあります。今回はAnaconda2で上手くいったので、そちらをインストールします。
問題が少ないように今回はPython 2.7をインストールとします。公式サイトからダウンロード。
私の時は、以下のファイルが来ました。
Anaconda2-2.5.0-Windows-x86_64.exe
実行してインストール

5.Chainerのインストール
やっと、インストールできます。まず、anacondaを立ち上げます、Windowsのメニューの中に、Anaconda2ができているので、その中のAnaconda Promptを立ち上げます。これからで、ちょっとはまりました。

・CPUのみ(GPU未使用)
pip install chainer
これをうつだけでインストール完了です。
python -c "import chainer"
と打って何もでなければ問題なしです。とりあえず、私はこれで問題がでたことがありません。

・GPU使用
ここからが問題です。
初めに、pipのupgrade
python -m pip install --upgrade pip

GPUの時は、下のコマンドでインストールします。
pip install -U chainer -vvvv

エラー:easy-install.pthがないと怒られる。しかし、よく英語をremoveできないって怒られる。どうやらChainerの都合の良いVersionを入れるために、一度消してから入れなおそうとしているらしい。ってことで、どうせ消すのでからそのファイル名のファイルを作る。
C:\Users\ユーザーの名前\Anaconda2\Lib\site-packages

次はsetuptools-19.6.2-py2.7.eggがないと怒られる、ので以下のコマンドを実行。
easy_install --upgrade six

再度
pip install -U chainer -vvvv
お、何も言ってこなかったぞ。

なお、CPUモードでは7である公式のコードを落として、python setup.py installでも行けたのですが、GPUだと上手くいきませんでした。追及していないのですが方法はあるかもしれません。これら2つの方法あるのでまた数日悩んでいました。

6.インストールチェック
Chainer&cupy&cuDNNのチェック。以下のコマンドをうって何も言ってこなかったらOK。
python -c "import chainer"
python -c "import cupy"
python -c "import cupy.cudnn"

7.GPUでMNISTを動かしてみる。
ChainerのExampleを実行するために、まとめて落とします。wgetでも落とせるのでしょうが、どうせWindowsなので、ブラウザからZIPファイルを落としてみました。
GitHubのpfnetからchainerをダウンロード。右上のDownload ZIPのところを押せば落とせます。
anaconda2が
C:\Users\ユーザーの名前
から始まるので、そこの下に解凍しておきます。そして以下のフォルダへ移動。(lsが使いたいがdirしか使えん。いい方法ないかな)
C:\Users\Toshinobu\python\chainer\examples\mnist
そこに行ったら、
python train_mnist.py --gpu 0
を実行

おぉ。動いている。epoch毎にGeforce君がギューとか言っているのがうれしい。これまで、1epochで約1分かかっていたのが、4秒。早!!
楽しい。


PS; いろいろ試している中で、Stdint.hがないと怒られたことがありました。Visual Studioのincludeには入っているのですが、インストールシェルでそこにどうやってパスを指定するかわからなかったため、cudaのincludeに強引にコピーしました。最終的に本当に必要だったのかわかりませんが、そのエラーが出たときには、コピーで解消しましょう。


参考:
http://qiita.com/okuta/items/f985b9da6de33a016a75
http://datalove.hatenadiary.jp/entry/python/anaconda/install-tensorflow-into-anaconda-environment

2016年3月22日火曜日

VirtualBox(5.0)のゲストOS(Windows8.1)からホストのWebカメラ(Ubuntu)を使う

ホストOSがWindowsの時に、VirtualBox上のUbuntuでWebCamを使う方法です。
といっても、VirtualBoxのVersionが5.0の人は超簡単。4.Xの人はExtension Packが必要らしいです。

1.Windows側設定
まずWindows画面のDevices->WebCamsで自分の使うWebcamをチェック。


2.Ubuntu側設定
Terminalで
sudo apt-get install fswebcam

3.チェック
sudo apt-get install imagemagick
fswebcam -r 640x480 --save test.jpg
display test.jpg

とすればtest.jpgで画像が出てきます。しかし、動画でない。リアルタイムで表示させてみましょう。

Cheeseを立ち上げます。標準で入っているはず。真っ黒画面が長いですが、ちょっと待つと



ぉおー。完成


2016年3月19日土曜日

Rasberry Pi 2 にUbuntu 14.04をインストールする(From Windows 10)

Rasberry Pi 2 を買ったので、さっそく動かすか・・・と考えたけど、Rasbianで後で問題がでたら面倒なので、いきなりubuntu14.04を入れました。

1.DD for Windowsのダウンロード

2.OSイメージのダウンロード
 2015-04-06-ubuntu-trusty.zip 

3.OSイメージの書き込み
DD for Windowsを立ち上げて、ディスクの選択をするが見つからない?何故、とおもって検索したら、

私は今Windows10ですが同じ症状がでました。そのため、実行ファイルDDWin.exeを右クリックした管理者権限で実行を行う。

ファイル選択で、先ほどのOSイメージを選択。
照合でいろいろ言われるが無視。書込を実行。ここでも、容量が4GB以上ですがいいかとか聞かれるがとりあえず無視する。
4.起動
ディスプレイとキーボードを繋いで、電源を指すだけ。

参考;
http://raspi2.hateblo.jp/entry/2015/04/18/190427
http://qiita.com/rytmrt/items/9c4601586479fff6d77c