読者です 読者をやめる 読者になる 読者になる

TUT Advent Calendar19日目

TUT

この記事は、TUT Advent Calendar 2016 - Adventarの19日目の予定だった記事です。

 

どうもこんにちわ、ころんです。

本当は、今やってる研究の話とか何か新しい分野の開拓でもして記事にしようかなと思っていたのですが予想以上に研究が忙しくなりAdCに書くのも忘れてましたw

 

あと2日目で研究発表をして、卒論を出したら冬コミのアルバムの製作も予定されており、年末まで忙しい日々になります。

 

何を書こう

何を書こう、、、特に書くこともないですが体調面についてちょっと。

 

 

生活習慣には気をつけよう!

f:id:Collonville:20161220192325j:plain

 

知っている人もいますが、自分は不整脈持ってます。よくあるタイプの心室性期外収縮というものです。

www.miyake-naika.or.jp

 

原因は、高専時代の生活習慣ですね。プロコンとかでよく徹夜してたせいでいよいよ病気になりました。

生活面には支障はないですが、やっぱり心臓関係の病気は怖いです。

 

その後の大学でも某イ○○トなウ○○会社のブラックなところでバイトしたり、今は研究で昼夜逆転生活。

なぜかブラックを呼び寄せるようなことばかりですが、さすがにもう辛いですね。

特に自分はストレスを抱えても体調に反映されないんで無理しちゃう傾向があるそうです。

 

このままだとなんか突然死とかも起こりかねないので、来年度からはもっと自分の体を大事にしようかと思います。

 

 

まとめ

ほんと書くことなくてごめんなさいwwwwww

とりあえず自分が言いたいのは

 

早く寝る!
無理しない!
いいものを食べる!

 

以上!!!

パワー正規化(Power Normalization)について

機械学習 画像処理

そろそろ研究もまとめに入らないと理系学生が死んじゃう時期になりましたねw

 

自分は、イラストの類似検索の研究をしていますがその中でパワー正規化っという聞きなれない用語が出てきたのでまとめてみました。

 

さまざまな正規化

データの正規化っていろいろあります。

 

L1正規化
L2正規化
平均0・分散1にする正規化

いずれも機械学習においてデータの整合性を取るために大事なものです。

正規化自体、あるルールに基づいて値を変形し使いやすくするという意味だそうです(by Wikipedia)

 

パワー正規化のルール

パワー正規化も同じように下記のルールに基づいて値を変形します。

(はてブロで数式表示したいんだけどやり方がいまいちわからない)

 

f(z) = sign(z)*|z|^a

 

式を見ると元のデータの符号を保ったままべき乗するというルールになっており、パラメーターaは0~1の範囲で選びます。

 

0~1の範囲でべき乗することによって元々1より小さい値は大きく、1より大きい値は小さい値になります。

 

いつ使うの?

パワー正規化は主にスパースベクトル(ほとんど0要素なベクトル)に使うことが多いようです。

画像処理では、自然画像(いわゆる普通の画像)に比べてイラスト画像は使っている色情報が少ないため0要素(0に近い要素)が多くなってしまいます。

音声処理でも似たような単語がありましたが、意味は違うっぽいです。

 

その中で、普通だったら無視されるような値も、特徴の1つとして捉えるようにしようということをしたくてパワー正規化を行います。

自分の研究の場合、パラメーターaを調整することによって検索性能は6%ぐらい上がりました。

 

最近ではFisher Vectorを使う手法が増えてますが、その中でもパワー正規化を使うことで精度向上に貢献しています(p31,35)

www.slideshare.net

 

まとめ

 

パワー正規化について書かれている記事が全然なかったので簡単にまとめてみました。

あなたの研究もパワー正規化で精度向上!?なんてことも???

 

 

 

 

 

MATLABでlibsvmを使用するための手順

MATLAB libsvm 機械学習

研究でSVMを使用したくなったんですけど、どうもMATLAB標準のSVMでは多クラス判定がすごい複雑そうだったのでMATLAB上でlibsvmを使用しました。

 

OS:Windows 7 Pro 64bit

MATLABバージョン:R2016a(9.0.0.341360)

 

用意するもの

libsvmをgitからそのまま落として適当なディレクトリに解凍しておきます。

libsvmは多様な言語に対応してくれてるのがうれしい。

github.com

 

 

MATLAB上での作業

MATLABに先ほどおとしてきたlibsvmのパスとコンパイルを通します。

 

1.コマンドウィンドウを開き「mex -setup」を入力します。

2.「cd('C:\...\libsvm-master\matlab\')」cdコマンドで落としてたlibsvmMATLAB

 フォルダの中に入ります。

3.「make」でコンパイルします。

4.成功したら「libsvmread.mexw64、libsvmwrite.mexw64、svmpredict.mexw64、

 svmtrain.mexw64」の4つのMATLABプラグインが生成されます。

5.最後にcdで入った同じパスを「addpath('C:\...\libsvm-master\matlab\)」で

 MATLAB上にパスを通して終了です。

 

最後にテストコードを書きますが、それはまた後で

 

 

 

「Unity5 + PS Move + PS Eye」 ペアリングから実行までのまとめ

Unity+PS Move Unity

こんにちわ、今抱えてるプロジェクトが3月末までと言われて焦り気味のころんです。

 

会社の案件でUnityとPS Move、PS Eyeを使ったプロジェクトを進めているのですが、ペアリングから実行するまでかなり手間がかかったので自分のまとめとして記事にしてます。

自分の開発環境はたぶんほとんど最新バージョンで組み合わせているので、このやり方でやればだいたいはうまくいくと思います()

開発環境

以下が今回実行した環境になります。

  • OS : Win10 Home 64bit
  • RAM : 8GB
  • グラボ : GeForceGTX 760
  • Unity5.3.3 64bit

PS Moveは2010年と2012年モデルの2つがあるそうですが、今回は2012年モデルのほうを使います。

 

Amazon.co.jp: PlayStationMove モーションコントローラ: ゲーム

Amazon.co.jp: PlayStationEye: ゲーム

PS Eyeの設定

PS EyeはPS Moveの空間位置推定用の使います。端子がUSBなので一般的なWebカメラとしてすることも可能です。

ですが、使用するためのドライバをCode Laboratorieから有料(2.99$)で購入する必要があります。Vペリカでの支払いもOKでした。

CL - Downloads - Code Laboratories

購入後、指定したメールアドレス宛にDL用のリンクを送られてきますので、落としてインストールします。インストーラー起動後はポンポンっと「Next」を押します。

 

f:id:Collonville:20160307014711p:plain

 

インストール後、USB端子をパソコンに挿してPS Eyeの設定は完了です。

f:id:Collonville:20160307014917j:plain

 

ちなみに、無料で使えるドライバが一応あるのですが、確実に動きたかったので今回はパスします。使えた方がいれば教えてください

www.emuline.org

 PS Moveの設定

ここからが一番戸惑いました。おそらく、Unity + PS Moveで検索された方は以下のサイトを巡っていると思います。

 

ウダサンコウボウ: PlayStationMoveをPCかつネットワーク経由で使えるPSMoveServer

UnityでPSMoveを使うときの注意点 - Cross Road

Oculus用操作デバイスの検討(PSMove) - Cross Road

Copenhagen Game Collective – an experimental games collective - Unimove

PS Move API (thp.io)

以上のサイトに乗っているやり方を試しましたが、全部だめでしたね。理由として

  • iPiを起動してPS Moveを接続してもそれ以降進まない!
  • Motion In JoyでペアリングはできるけどBluetoothアダプタが内部で統一可されてUnityで認識しない!!
  • Motion In Joyでペアリングする前にBIOSでドライバ署名を無効にしないといけない!!
  • PS Move APIにpsmovepair.exeがない!!(CMakeがあるから自分でやれってことかな)
  • なんとかUnityに入れてもエラーエラーエラーエラー
  • そもそもPS MoveBluetooth一覧に表示されない

 などなど、いろんな要員が絡んで正直ダメかと思いましたけどできました。

 

動作するまでの手順は以下のようになります。

  1. psmovepair.exeとUSBケーブルでつなげたPS Moveを使ってとりあず仮認識
  2. psmove-pair-win.exeを使ってbluetoothドライバの認識
  3. magnetometer_calibration.exeでPS Moveキャリブレーション
  4. Unityで実行

で、これらのexeファイルをここから落としてきます。

もう~感謝感謝感謝!!!って感じ

Unreal Engineと書いてありますが、必要なexeファイルは関係ないのでまるごと落としてきたほうが良いです。

 

USBケーブル(Mini Type-B)でPCとPS Moveを接続した状態でpsmovepair.exeを起動します。すると以下のような画面が出ます

f:id:Collonville:20160307022555p:plain

説明通りにPS Moveの真ん中にあるPSボタン(PSマークが描かれたボタン)を押すと、SONYと書かれたマークの下にある赤色LEDが点滅します。

しばらくすると消えるので再度PSボタンを押してこれを5,6回繰り返します。

 

次に、psmove-pair-win.exeを起動します。

ここでBluetoothのペアリングをしますが、以下のように

!!!! Successfully connected device xx:xx:xx:xx:xx:xx !!!!

が出てくるまで、根気よくPSボタンを押してください(10秒押し続けると電源ごと消えるので点滅が消えたころに)

もともとWindows環境でのペアリングはうまくいくときと行かないことが多いので。

f:id:Collonville:20160307023429p:plain

ペアリングが完了するとPS MoveのLEDが点灯し続けます。

 

次にキャリブレーションを行います。

magnetometer_calibration.exeを起動すると以下のように表示されて、PS Moveの先端が光ります。

f:id:Collonville:20160307024111p:plain

f:id:Collonville:20160307024417j:plain

この状態でPS Moveを様々な方向に向けます。おそらく磁気キャリブレーションを行っているためかと。すると画面上の数値をどんどん増えていくのでどこへ向けても数字が変わらないってところで、PS Moveの中央上にある縦長のボタン(Moveボタン)を押します。

ちなみに自分は287.0が限界でした。

 

f:id:Collonville:20160307024752p:plain

次に、PS Moveを垂直に立てた状態にして、Moveボタンが自分の正面に来るように持っていきます。すると自動的に解析が始まるので、そのままの体勢を維持します。終わると自動的にプログラムを終了します。

解析が始まらない場合は、場所を変えたりしてみてください。

Unityでの実行

ここまでやればほとんど終わりです。PS Move APIをUnity5で動かせるようにしたリポジトリがあるのでそれを落としてきます。

このプロジェクトファイルをそのままUnityで開いて実行します。

 

f:id:Collonville:20160307025622p:plain

 「Play」ボタンを押すと

 

f:id:Collonville:20160307030223p:plain

するとPS Moveで動かした姿勢がモデルに反映されます。

カメラが見つかりませんなどのエラーが出た場合はカメラのUSBを1回抜いたり、Unityごと再起動すると直ります。

 

面倒ですが、パソコンを再起動するたびにこれらのことをしないといけないそうです。

 

まとめ

以上がUnityとPS Move、PS Eyeを使った環境構築方法です。

これ以外で簡単な方法があれば教えてくださいw

 

PS Moveを使ってみた感想としては、かなりいい精度トラッキングしてくれます。姿勢検知も問題なく動作しますし、Wii Remoteより断然いいです。

 

ある程度予想はしていましたけど、ここまでほぼ半日かかりました。

これでやっとプロジェクトを進められます!!

 

 

 

 

C#やるんならLINQ!!

LINQ

この記事は TUT Advent Calendar 12日目の記事です!

 

みなさん、お久しぶりです。

技術ブログとして立ちあげましたが、全然記事書かないまま1年が過ぎました(べ、べつに書くネタがないわけじゃないんだからね

TUTに来て、新しい友達も増えて楽しい日々を送ってますよ。講義も後期から大幅に減ってUnityのアルバイト始めたり、趣味も新しく増えたり。もちろん今年のクリスマスも予定空いてますよ?

C#!!

さてさて、本題に入ります。C#便利ですよね。

プロパティ、ファイル操作、非同期処理、WPF、Azure・・・などなどWindows環境で動くソフトウェアに特化してます。最近ではUnityでも定着してますし、Visual Studioとの連携がよくとれているので自分のお気に入り言語ナンバーワンです。

 

そんな便利なC#LINQっていうの知ってますでしょうか??(九州の某アイドルではありませんよ

周りにちょこっと聞いてみましたが、初めて聞いたって人や、知らずに使ってた人などあんまり知られていないのかなと思いましたね。ですので、今回ぜひC#erにこの便利な機能を紹介したいと思い記事を書きました。

では逝きますか!(1919

LINQってそもそもなんぞや??

まずは、そもそもLINQって何者かを紹介します。

LINQはLanguage-Integrated Queryの略で日本語では、統合言語クエリと言われてます。

クエリって何?って思った方。クエリとは「問い合わせる」という意味で、一般的にデータの問い合わせ要求に使われます。一番わかりやすいのがデータベースとかですかね。あるデータベースにあるテーブルから、条件に合うカラムを持ってくる命令を1つの文字列として表現します。例えばこんなの

mealというテーブルから値段が1000円未満の商品名を出す、クエリーの例です。

こういう感じでデータの問い合わせに関する構文を並べるだけです。実はLINQもこれと同じで

 

データの問い合わせや更新をもっと楽にできるようにしよう!!

 

っというものです。じゃそのデータって何に対して言っているのかというと、配列・リスト・オブジェクトを指してます。

 

LINQにもいろいろ種類があります。

  • LINQ to Objects(配列、コレクション、任意のオブジェクト)
  • LINQ to Entities(Entity Framework経由でのデータベース)
  • LINQ to XML(ざむる)
  • LINQ to SQL(SQL サーバー)

今回はLINQ to Objectをメインにやっていきます。

何ができるの??

LINQの正体をざっと伝えたところで、何ができるかを紹介します。

LINQは配列やリストに対してデータの問い合わせ・更新などを楽にできるようにしようっというものでした。これらのデータ構造を使うっということは、あるデータを一時的に格納しておき、その要素に対して何か操作を行うってことです。

例えば、整数の入っているリストから5以上の整数リストを新しく欲しい時、こういう感じで書きませんか?

リストを反復構文で回してif文で条件に合う数値を新しいリストに追加しています。

なんか、単純なことをしているだけなのにこんなので10行近くも使っているのが、なんか嫌ではありませんかね?

しかし、LINQを使ってあげると以下のようになります。

gist.github.com

結果の表示をもうちょっと変えてみましょう。

gist.github.com

なんと、LINQを使ってあげることでここまで省略されました。10行使っていた処理が3行になりましたね。これが

データの問い合わせや更新をもっと楽にできるようにしよう!!

です。

コードをよく見ると反復構造であるforやforeachがありませんLINQを使うことによって書く必要性が無くなったんですね。

初めて見る方にとっては気持ちの悪い書き方であると思います。私もそうでした。しかし簡単な例から学んでいくと自然にこっちの書き方が欲しくなりますよ?(麻薬と一緒だね)

LINQとしてできることは、

 

forやforeach文を書かなくても
条件を満たす要素を抽出・更新・ソートなどができる!
 

です。そのためにLINQでは多くのメソッドが提供されています。

できることは、Sample1-3のような条件検索以外のもたくさんありますが。ここでは主に使うだろうものだけ書いておきます。

 

LINQを使ってみよう

じゃ、この便利なLINQをどうやって使えばいいのか。簡単です。ソースのusing欄に

using System.Linq;

これを追加するだけで、使えるようになります。Visual Studioの場合プロジェクトを作成すると自動的に追加されてるはずです。

 

ちなみに、LINQの処理をして結果を格納するとき返り値はList<T>にはなりません。IEnumerable<T>型になるので注意してください。

garicchi.hatenablog.jp

Select()

格納している要素1つずつに対して関数を適用して返します。情報数学で言う写像に似ています。

gist.github.com

サンプルでは、リストの要素に対して「x * x」という関数を適用して返しています。つまり2乗した数が返ってきます。

格納しているデータに対して加工を行うのは頻繁にあることなんで、覚えておきましょうね。

 

Where()

Sample1-3で出てきたWhere()です。これは、条件に合う要素をフィルタリングして返すっということをしています。

gist.github.com

サンプルでは、リストの要素のうち偶数である数値をフィルタリングして返しています。じゃ、AND演算のように複数条件はできるのか?できます

gist.github.com

先ほどの条件に5未満であるを追加しました。これで反復構造中のif文の代わりになります。

 

Count()

 特に説明することはなく、ただ要素数のサイズを取得します。

gist.github.com

 

Sort()

指定した要素でソートします。OrderBy()を使うことによって他クラスにある要素でのソートが可能になります。

gist.github.com

サンプルは、Playerクラスを作って要素としてHPと名前を持っています。リストの初期値にPlayerクラスを4つ挿入しておき、HP順とアルファベット順でそれぞれソートを行うものです。

実行結果は以下の通りで、きちんとHP順とアルファベット順でソートできていると分かります。

f:id:Collonville:20151212041907j:plain

降順にしたい場合はOrderByDescending()を使います。

 

その他

結構種類あるので紹介しきれないです。リンクを張っておきますので、各自で調べてみてください。

.Net(VB C#) LINQメソッド一覧:http://yan-note.blogspot.jp/2015/11/netvb-clinq.html

 

ちょっと応用

LINQの各メソッドはそれぞれ繋げることができます。例えば、リストにある要素を全て2倍にして14以下である数値が何個あるか調べる場合、

gist.github.com

このように

2倍する-->14以下である数をフィルタリングする-->数を数える

の流れが自然に組めるのもLINQの特徴の1つです。

 

遅延評価

本当ここがLINQの一番大事なところなんですが、正直もう書く気力がありませんのでまた別の記事に書きたいと思います。

 

まとめ

LINQはコレクションに対してデータの操作を簡単に記述できるようにするためのものです。そのおかげで、生産性やコードの可読性がぐぅんと上がります。

使うことができるメソッドが大量にあるので暇なときに調べてみると使えそうなものがヒットするかも。

 

明日はドイツの鳥で有名なあしゅりーさんの「座標で見る"TUT大学構内のレッドブル自販機100選"」です!。


あれ?TUT内にそんなに自販機あったけな???? 

Unity5でボールの跳ね返り!

Unity

先日、Unity 5がリリースされましたね!

私も2年前にプロコンの時にお世話になりました。そのせいで、しばらくUnity拒絶症にかかって、触っていなかったのですがせっかくのリリース。

流行に乗ろうではないか!!

 

Unityの機能を久しぶりに見ると、効果音・BGM編集用のミキサーがついてたり


Unity - Upgrading Unity 4 Audio Part 1: Mixers and Effects

64bitに対応したりといろいろ新機能が増えていました。まだUnityをフルで活用できないけど、いつかはストアにリリースしたいですね。

 

ってことで早速インストールしましょ。

Unity - Get Unity

無料のPersonal版を選択。なんか製品発表の時にスプラッシュ画面をつけてて、前年度の収入が何$以下なら無料版の機能制限が撤廃して使えるみたいな話し聞きましたけど、よく分かってないです。

さくさくっとインストールしたら起動しましょ。

f:id:Collonville:20150310220602j:plain

 

おーなんか、前よりかっこよくなってる。右上のNew Projectを選択

f:id:Collonville:20150310220812j:plain

 適当にプロジェクト名を「BouncingBall」にしてCreate project。

 

f:id:Collonville:20150310221045j:plain

 起動画面。画面の構成自体は前と変わっていないようです。


Unity入門(2)- Unityの画面構成 | Developers.IO

 

今回の目標は、ボールを上から床に向けて自然落下させて遊んでみることなので、まずはゲームオブジェクトのボールと床を作ります。

 

・床の作成

左上のメニューからGameObject->3D Object->Cubeを選択。

するとこんな感じに立方体が作成されます。

f:id:Collonville:20150310221953j:plain

今回は床にしたいってことで、赤枠にあるTransformでScaleをいじります。

x = 20,y = 0.2,z = 1にするといい具合の床が完成。Positionも分かりやすいようにx = y = z = 0にしました。

f:id:Collonville:20150310222239j:plain

 

 ・ボールの作成

GameObject->3D Object->Sphereを選択。すると床同様にシーン画面に球体が表示されます。Potisionをx = 0,y = 10,z = 0にします。

f:id:Collonville:20150310222831j:plain

ボールを落とした時にz軸が床と合っていないと、そのままスルーしちゃいますので気をつけて。

 

・カメラの調整

ではでは、早速実行してみましょう。シーン画面の上にあるプレーボタンをクリック。

f:id:Collonville:20150310223134j:plain

f:id:Collonville:20150310223226j:plain

あれ?ボールはどこ????

実際ボールは存在していますが、たまたまカメラに見えていないだけです。なので、実際のプレイ画面のシーンを見るにはカメラの位置をいじってあげないといけません。

 

プレーボタンを再度押して編集に戻して、シーン画面にあるカメラっぽいオブジェクトをクリックしてください。

f:id:Collonville:20150310223833j:plain

 すると左下にCamera Previewが表示されます。これが実際にカメラが見ている風景なので全体像が見えるようにPositionを調整します。

f:id:Collonville:20150310223908j:plain

 今回だとx = 0,y = 5,z = -10ぐらいですかね。再度プレーボタンを押すと。

f:id:Collonville:20150310224128j:plain

うん!いい感じになりました。

 

・ボールを落下させる

さて、このままではボールは落ちてきません。オブジェクトを配置しただけではただの置物なので、落下させるにはボールに物理シミュレーションを適用させなければいけません。そこでUnityには、Rigidbodyっというのがあります。


Unity - マニュアル: リジッドボディ

 

これを追加するだけで、なんと自動的に物理運動の制御をやってくれます!!

しかも空気抵抗やトルクによる空気抵抗、質量により変化もパラメータをいじるだけでおまかせ。

 

シーン画面でボールを選択して、左側のInspector画面下にあるAdd ComponentからPhysics->Rigidbodyを選択。

f:id:Collonville:20150310225332j:plain

各パラメータの説明をすると

Mass:オブジェクトの質量

Drag:オブジェクトが受ける空気抵抗

Angular Drag:回転により受ける空気抵抗

Use Gravity:重力を適用させるか

Is kinematic:物理シミュレーションは適用されないが、スクリプト制御のみで動くことができる

Interpolate:フレームの補完などの設定

Collosion Detection:高速に動くオブジェクトですり抜け防止を行う

 

今回は重力さえあればいいので、Use Gravityにチェックをいれるだけでいいです。プレーにしてちゃんと落ちるか確かめましょう。

f:id:Collonville:20150310230145j:plain

 落ちたな(確信)

 

・ボールに跳ね返りをつける

ボールも無事落下したので、今度は跳ね返りをつけます。

Unityには、先ほどあったRigidbody以外にも様々な物理シミュレーション用の項目があります。

メニューからAssets->Create->Physic Matrialを選択。

f:id:Collonville:20150310230713j:plain

これは物理特性マテリアルと言われており、摩擦や跳ね返り係数の調整ができます


Unity - マニュアル: 物理特性マテリアル

 

各パラメーターの説明めんどいんで、上記の公式マニュアルを読んでくださいw

跳ね返り係数をいじるのでInspector画面にあるBouncinessをいじります。

f:id:Collonville:20150310231126j:plain

デフォルトだと跳ね返り係数が0なので全く跳ね返りませんよね。

 

ころんさん!跳ね返り係数分かりません!って方はこちらへ↓

5.2.3.1 反発係数 ■わかりやすい高校物理の部屋■

 

だいたい0.99ぐらいにするといい具合に反発してくれます。いろいろいじってみると面白いですよ。

f:id:Collonville:20150310231541j:plain

数値の設定をしたらAssetsフォルダにある物理特性マテリアルをドラッグ&ドロップでCubeに適用させます。CubeのInspectorのBox Colider->Materialからも設定できます。

 

適用し、プレーを押すとボールが跳ね返ってくれるのが確認できると思います!

f:id:Collonville:20150310231913j:plain

 

 ・まとめ

今回は、ボールに物理シミュレーションを適用させて簡単な跳ね返りシミュレーターを作りました。まだまだUnityには面白い機能が盛りだくさんなので、今後も自分のプロジェクトを進めながらまとめて行こうと思います。

 

これからも進化し続けるUnityに期待しましょう!!

 

 

 

 

 

Intel Edison Breakout Board~開発準備 その1~

Edison Breakout Board

Intel社から今年日本で10月に発売されたばかりのAtom搭載の超小型コンピュータ「Edison」を入手しました!!

 

12月13日にOPTiM社主催の勉強会に参加した次の日に、ぶらぶらと秋葉原にある秋月電子に寄ったのですが

f:id:Collonville:20141217160627j:plain

ありました!

 

学校のメカトロ部のほうからこういうデバイスがあると聞いていましたが、ここで会えるとは。早速、部のLineで欲しいか?と聞いたところ「欲しい!!欲しい!!」との返事。本来買う予定では無かったですが、買ってきましたよ(同人誌もっと買う予定だったのに...)

 

買ってきたのは、Edison Breakout Boardのほう。もう一つEdison Kit for Arduinoがありましたが、ちょっとお値段張るのでBoardを選びました。

ちなみに秋月やAmazonでも買えますので是非


Amazon.co.jp: Intel Edison Breakout Board Kit Edison本体+Breakout基板: パソコン・周辺機器


Amazon.co.jp: Intel Edison Kit for Arduino Edison本体+Arduino基板: パソコン・周辺機器


商品検索 秋月電子通商 電子部品 ネット通販

 

あと、モジュールとPCをつなぐUSBケーブルですが、2本必要です!

「Aオス----マイクロBオス」× 2がないと開発ができないようなので、忘れずに買いましょう。秋月だと1本120円でした。

 

 Edisonの箱とUSBケーブル2本

f:id:Collonville:20141217170736j:plain

 

 

中身はこんな感じ。

Edison本体×1

Breakout Board基板×1

Edison固定用ナット×2

f:id:Collonville:20141217170745j:plain

 SDカードを上に乗っけてみましたがEdison自体は本当に小さいです。こんなに小さいのにこれだけのスペック。取り扱いが怖い

f:id:Collonville:20141217171043j:plain

 

Breakout Boardと接続した後の様子。EdisonをBoardに乗せてそれぞれのコネクタを接続した後に、ナットで締めます。

f:id:Collonville:20141217171055j:plain

 

 

さてさて、いよいよ本題の開発環境の構築に行きます。

まずは、Intel社のサイトからEdisonのドライバーをインストールします。リンク先にあるページの一番下の「Windows Driver setup 1.0.0」ってやつです。

Edison - Software Downloads | Intel Communities

 

インストール画面。そのままぽちぽとNext押していくとインストールが始まります。

f:id:Collonville:20141217173411j:plain

 

無事インストールが終わったら、次はPCとのシリアル通信を行うためのドライバー

 をインストールします。

Virtual COM Port Drivers

winユーザーは「setup executable」からインストラーをダウンロードしてください。管理者権限がないと実行できないので一旦どこかに落としておいたほうが楽です。

f:id:Collonville:20141217174323j:plain

 

これもインストールが終わったら、いよいよUSBと接続です。

f:id:Collonville:20141217175307j:plain

 

 

まず先に、写真の赤い方にケーブルを刺します。FTDIチップが乗ってるそうなんで先に挿しちゃいましょう。

f:id:Collonville:20141217180004j:plain

そしたら、自動的にデバイスインストールが始まるので、終わったらデバイスマネージャーに行ってポート番号を確認してください(今回の場合COM5)

 

次に、TeraTermのような仮想ターミナルでEdisonに接続します。


Tera Term (テラターム) プロジェクト日本語トップページ - SourceForge.JP

f:id:Collonville:20141217180418j:plain

シリアルでポートを先ほどデバイスマネージャーで確認したポートを選択。

 

f:id:Collonville:20141217180555j:plain

設定->シリアルポートでポートレートを115200bpsに設定

 

設定が完了したら、もう一つのほうのUSBを接続してください。すると、Breakout Board上のLEDが光ります。

f:id:Collonville:20141217180902j:plain

TeraTermではこんな感じで、私の好きなBoot画面がずらずらと流れてくるはず

 

edison rogin : って出てきたら「root」と打ち込んでenter押すとこんな感じ

f:id:Collonville:20141217181538j:plain

 rootに入れました。ここまでで第一段階です。

次はEdisonを自分用に調教しましょう。

 

・バージョンの確認

 Edisonのファームウェアのバージョンを調べます。

Teratermに「cat /etc/version」と打ち込んでください。

f:id:Collonville:20141217182210j:plain

 なんかバグでキーボードに一番最初に打った文字が出ないようですが、1回Deleteキーで消して再度入力するとちゃんと出てきました。

 

最新のバージョンはきっとどこかに載ってます(知らない)

・名前を変更する

せっかく買ったEdison。自分の好きな名前にしちゃいましょう。

コマンドで「configure_edison」入れて実行

 

f:id:Collonville:20141217183938j:plain

こんな感じの画面になります。最低でも5文字以上入れないとダメだそうです。

名前を決めたら再度Enterキーで確認が取られるので良ければ「Y」、再度入力する場合は「N」

 

 

・パスワードを変更する

名前が決まったら自動的にパスワード変更に移ります。初期パスワードは「root」でしたので、セキュリティのために変更しましょう。

スクショ撮り忘れました(*ノω・*)テヘ

上記の同様、良ければ「Y」を入力で次にいきます。

  

 

Wi-Fiに接続する

 さぁいよいよEdisonをWi-Fiに接続します。自動的にスキャンが始まりますが、やはり受信環境が良くないと上手くできないそうです。

f:id:Collonville:20141217185047j:plain

 こんな感じに、使っているSSIDがずらっと出ればOKです。何回やっても出ない場合は無線親機に近づけるなどしたら出やすいかも。

 

f:id:Collonville:20141217185855j:plain

 接続したいネットワークを選んでパスワードを入力してあげると、Doneと表示されます。なんかPlease go to 192.168.1.13って書いてあるんで試しに接続してみましたが、何も表示されませんでした(pingとかarpで接続は確認できたんでいいのかな?)

 

試しに「ifconfig」と打つと、wlan0にデバイスのMACアドレスとかIPアドレスとか出てればOKです。

 

ファームウェアのアップデート

まだまだ出たばかりのEdisonですが、これからアップデートが頻繁に起こると予想されるのでできるようにしちゃいましょう。

今まで開いてたTeraTermは一旦Edisonと接続を切ってください。

 

最初の方にEdisonドライバーを落としてきたページに飛びます。

Edison - Software Downloads | Intel Communities

そのページの真ん中にある「Edison Yocto complete image」をダウンロードしてください。

 

f:id:Collonville:20141217191909j:plain

 ダウンロードしてきたzipを開くとこんな感じ。

これらのファイルすべてをマイコンピュータからEdison(:F)を選びコピーします。たまにEdisonの中にファイルがあるそうですが、それは先に消してから zipの中身を入れます。

f:id:Collonville:20141217192232j:plain

ファイルを移したら、再度TeraTermを開き、「USB Serial Port」を選んで、もう一度115200bpsに設定します。

設定が終わったらEnterキーを2回ぐらい押しちゃってください。1回だけだと反応しない場合があります。

f:id:Collonville:20141217192945j:plain

 決めたEdisonの名前 login:が出たら「root」と打って、パワワードも先ほど自分で決めたのを入れます。

ここでも、一番最初に打った文字が出てこない症状がでるので、Deleteキーとかで戻って、再度入力するとrootに入れます。

f:id:Collonville:20141217193325j:plain

 

reboot ota」と打ったらアップデートと再起動が始まります。

デバイスによっては5分とかかかるそうなんで、終わるまでUSBケーブルを抜かないように注意。

 

f:id:Collonville:20141217193933j:plain

再起動が終わったら、再度rootとパスワードを入力して「cat /etc/version」でアップデートされているか確かめます。

 

アップデート操作する前と変わっていなかったので買った時から最新ファームウェアだったようです。

 

 

 

 

とりあえず、ここまでお疲れ様です!!

やっと開発準備その1が終わりました。基本的なデバイスとの接続方法とアップデート方法は覚えておいたほうがいいと思います。

 

次回は実際にLEDチカチカ、通称「Lチカ」でもやってみようと思います。

謎の多いデバイスですが、これだけ高性能なモジュール・・・どんどん普及していって欲しいです。

 

 

それでは(*・∀・)ノ゛