2015年8月18日火曜日

米議会がドローン規制を検討、有人機との衝突を懸念

http://blogos.com/article/128660/



[ワシントン 14日 ロイター] - 違法なドローン(無人機)飛行の急増を受け、米国の上下両院で、特に空港付近におけるドローンの飛行を法的に規制しようとする動きが加速してきた。事情に詳しい関係筋が明らかにした。
米連邦航空局(FAA)は前週、民間航空機を含む有人機付近でのドローン目撃件数が急増しているとの報告を発表。米国で航空機のパイロットが目撃したドローンの数は、年初から8月9日までに650機を超えた。2014年は年間238機だった。このペースで持続すれば年末までに1100機程度になるとみられている。
議員らは、航空機が特に注意を要する離着陸時に無人機と衝突する事故が起きるのは時間の問題であり、大惨事を招きかねないと指摘している。 
法案の提出は早くても休会明けの2週間後になるとみられている。
関係筋によると、規制手段としては、違法な飛行をしているドローンを追跡・無力化する新技術のサポートや、操縦者に対する研修・飛行前の届け出・飛行中に当局が識別できるようトランスポンダーの搭載を義務付けることなどが検討されているという。
FAAのウエルタ長官は、議会の動きを歓迎する意向を表明。ドローンの違法飛行を行った操縦者に対し、罰金や禁錮刑など厳格な処罰を下す方針を示した。

2015年8月16日日曜日

OpenCV Mat型 初期化と要素へのアクセス

OpenCVのMat型は、基本的には画像のデータを入れておく型でありながら、行列演算にも使えます。掛け算とか基本的なことはさておき、データの入力方法でかなり悩んでしまったため、このします。

ここで紹介する入力方法は2つ。初期化と要素へのアクセスです。

初期化:
cv::Mat A = cv::Mat(6, 6, CV_64FC1);
double Adata[6][6] = { { 1, 0, 0, 0, 0, 0 },
{ 0, 1, 0, 0, 0, 0 },
{ 0, 0, 1, 0, 0, 0 },
{ 0, 0, 0, 1, 0, 0 },
{ 0, 0, 0, 0, 1, 0 },
{ 0, 0, 0, 0, 0, 1 } };
A = cv::Mat(3, 3, CV_64FC1, Rdata).clone();

注:Cloneの方がミスがなくて確実。遅くなるしメモリ量の問題もあるから注意

要素アクセス:
・1変数の型
変数名.at<型名>(行, 列)

例:代入(double)
cv::Mat A = cv::Mat(3, 1, CV_64FC1);
A.at<double>(0, 0) = (double)1.0;
A.at<double>(1, 0) = (double)1.0;
A.at<double>(2, 0) = (double)1.0;

・各要素がチャンネルなら、
変数名.at<型名>(行, 列)[チャンネルNo]

参考
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12128343222

2015年8月14日金曜日

OpenCV でUSBカメラの画像を表示(Windows 8, Visual Studio 2013)

OpenCVを使ってUSBカメラの表示をしたので紹介。なぜか参考にしたサイトの通りのソースでは動かなく、ちょっと悩んだので紹介。

1. プロジェクトの作成
とりあえず、Consoleプロジェクトで行きましょう。

2. プロパティの設定
プロジェクトのプロパティを開き、
C/C++->Additional Include DirectoriesにOpenCVのインクルードフォルダを追加
Linker->Additional Library DirectoriesにOpenCVのライブラリフォルダを追加
Linker->Input->Additional Dependenciesに以下のファイル名を追加
opencv_core2410d.lib
opencv_highgui2410d.lib
opencv_objdetect2410d.lib

3. Source
#include <iostream>
#include <opencv2\opencv.hpp>
#include <opencv2\highgui\highgui.hpp>

int _tmain(int argc, _TCHAR* argv[])
{
// デフォルトのカメラをオープン
cv::VideoCapture cap(0);
if (!cap.isOpened())
{
std::cerr << "camera cannot open" << std::endl;
return -1;
}

// ウィンドウを作成
cv::namedWindow("cap", CV_WINDOW_AUTOSIZE);

while (1)
{
cv::Mat frame;
// カメラからフレームを取得
cap >> frame;
// ウィンドウに表示
if (frame.size().height != 0 || frame.size().width!=0)
{
cv::imshow("cap", frame);
}

// 30 ms 待つ。キー入力があれば終了
if (cv::waitKey(30) >= 0) break;
}

return 0;
}

ここで、悩んだところは、
if (frame.size().height != 0 || frame.size().width!=0)
この1文。
参考のサイトにはないのだが、調べてみると、最初のフレームではCapからはデータは転送されず画面のサイズが0×0でAbortがでていた。2フレーム目からはちゃんと取得できていたので、ちょっと改造したのがこの1文です。もっといい方法があってり、ミスがあったら教えてください。

参考:
http://docs.opencv.org/3.0-beta/modules/videoio/doc/reading_and_writing_video.html
http://qiita.com/vs4sh/items/4a9ce178f1b2fd26ea30



2015年8月13日木曜日

Visual Studio 2013 (C++) で Windowアプリ(C++/CLR)の作成

1. プロジェクトの作成
New projectをクリック。
「Visual C++」の下の「CLR」を選択し、右の欄で、「空のCLRプロジェクト」を選択する。

2. Formの作成
「追加」→「新しい項目」をクリックする。(仮に名前はDefaultのMyForm.hとする。)
左欄で「Visual C++」→「UI」(ユーザインターフェイス)を選択し、右欄で「Windowsフォーム」を選択して、「追加」をクリックする。


3. エントリーポイントの作成(mainをどこにするかを決める)
「プロジェクト」→「プロパティ」をクリックする。
の欄で、「構成プロパティ」→「リンカー」→「システム」と選択し、右の欄で、「サブシステム」を選択し、右端に現れる「V」をクリックして、現れたリストから「Windows(/SUBSYSTEM:WINDOW)」を選択する。


左欄の「構成プロパティ」→「リンカー」→「詳細設定」を選択し、右欄の「エントリポイント」に、「main」と入力して、「OK」をクリックする。

4. メインソース作成
プロジェクト名.cpp に以下のソースを追加する。
#include "MyForm.h"

int main(
){
WinAppTest::Application::Run(gcnew WinAppTest::MyForm());
return 0;
}

5. 実行
下の画面がでたら成功

参考:http://homepage3.nifty.com/ishidate/vcpp13_6/vcpp13_6.htm

2015年8月9日日曜日

cvsba を Visual Studio 2013 で動かしてみる。

Bundle Adjustmentは、複数の画像の特徴点から特徴点の三次元位置とカメラの位置等を最適化する手法です。実際のところ、これを実現する手法はいくつかありますが、Bundle Adjustmentは最も精度が高いものです。しかしながら、もっとも計算メモリと計算量が必要です(これを減らす手法が様々提案されていますが割愛)。

これを実装するのは結構面倒だと思い、有名なのでいろいろライブラリがあるだろうと探してみると。Wikipediaが一番整理されてた。Bundle adjustment

いろいろあるけど、ロバストで様々なコミュニティで使われているsbaを使うこととした。で、とあるところにopencvのwapperとしてcvsbaがあり、インターフェースが楽と書いてあったので、cvsbaを動かしてみる。

1.ダウンロード
公式ページに行き、以下の二つのファイルをダウンロード
cvsba-1.0.0.tgz
cvsba_simple_test.tgz

2.CLapackのコンパイル
cvsbaにはCLapackが必要なので、ダウンロードしコンパイルしておく。詳細は、別のページを参照してください。

3.コンパイル
・cvsba-1.0.0のcvsba以下をプロジェクトの中に組み込む。具体的には、フォルダを作ってAdd Exist fileですべてのファイルを読み込むだけ。
・Properties でCLapackのインクルードのフォルダを追加
・Properties でCLapackのLinkerにライブラリのフォルダを追加
・Properties でCLapackのLinkerのAdditional Dependencyに以下のファイルを追加
libf2c.lib
blas.lib
lapack.lib
・cvsba_sample_testをコンパイルする。

4.実行
Initial error=40111.6, Final error=2.14049e-005
とでれば成功

詳細はこれから見ていき、応用してくとする。

CLapack インストール (Visual Studio 2013, Windows8)

使おうと思っているライブラリがClapackを使っているようなのでインストールしてみた。
インストールの手順を示す。

1.ダウンロード
CLapackのサイトにいってcmake用ライブラリをダウンロード。
掲載時点では、clapack-3.2.1-CMAKE.tgz
適当なところで展開。私の場合は、ライブラリ関係はC:\devにおいているのでその下で展開した。

2.cmake
cmake で上記のフォルダを指定しconfigure してから Generate
(configureでwarningがいくつかでるが無視する。)

3.コンパイル
Buildの以下にある
clapack.sln
を実行。ここで、素直に全コンパイルをやるとエラーが大量にでる。ちゃんと、readme.installを読むと、以下の順番でコンパイルと書いてある。
 f2c libraries
 BLAS library
 main library
すると上手くいく。

4.Include と Libraryファイル
コンパイル結果のファイルの置き場所は以下(c:\dev\ に展開した場合)
Include:
C:\dev\clapack-3.2.1-CMAKE\INCLUDE
Library:
C:\dev\clapack-3.2.1-CMAKE\build\BLAS\SRC\Debug\blas.lib
C:\dev\clapack-3.2.1-CMAKE\build\F2CLIBS\libf2c\Debug\libf2c.lib
C:\dev\clapack-3.2.1-CMAKE\build\SRC\Debug\lapack.lib

Ref:
http://tauyosi.blog91.fc2.com/blog-entry-6.html
http://momose-d.cocolog-nifty.com/blog/2014/06/visual-studio-2.html

2015年8月2日日曜日

低価格な光造形3Dプリンタ

約70万 光造形でこの値段はすごい

http://dwslab.com/xfab/

XFAB FEATURES

The first high-end 3D printer at a consumer price

printing your dreams


image_front_close+logo


Materials

.
.
.

Turn materials into solid

Our patented technology can turn a much wider variety of materials into solid: acrylate resin, ABS, polypropylene, rigid opaque, transparent, rubber, castable wax and ceramic.
front-open-H650
lato-open-H650
.
.

Intelligent material changing

Quick material change: intelligent cartridges,
no leakages, no need of handling liquids, no tray consumption costs.

Material Range


Standard acrylate, amber

General purpose.

ABS-like, grey

High-impact resistant, functional parts, snap-fit, casings

ABS-like, white

High-impact resistant, functional parts, snap-fit, casings

Polypropylene-like

Flexible, snap-fit, casings, components, lab equipment

Rigid opaque, grey

Prototypes, toys, high-detail models, marketing models

Transparent

Clear prototypes, liquid flow visualization, light cases

Ceramic nano-filled, light blue

Static thermal resistance tests, high definition models

Rubber-like, black

Handles, gaskets, footwear, ergonomic tests, functional parts

Rubber-like, transparent

Functional parts, medical devices

Castable wax, transparent

 Lost-wax casting patterns

Software

XFAB-LOW-RESO-1722

NAUTA™ XFAB

Proprietary 3D editing software NAUTA™ XFAB Edition

SUPPORT

Automatic support genaration

Removal Risk free

Instant support removal, no risk of damaging the models

Economics

XFAB-LOW-RESO-1726

Affordable price

No material wastage

No tray cost

Technical Specifications


3D printing method
Laser Stereolithography
Working area
Ø 180×180 mm
Laser source
Solid State BlueEdge® BE-1300X
Slice thickness
10-100 microns
Minimum feature size
80 microns
Scanning method
Galvanometer
Software
XFAB Controller, Nauta™ XFAB Edition
Input file format
.stl, .slc
Machine size
420x638x590 mm
Operating Temperature and Humidity
22°-25°C/60%
Power supply
AC 230/115V/50-60 Hz

Gallery