2014年7月24日木曜日

Raspberry pi PC



Nexus 7とraspberry piを使ってraspberry pi PCを作ってみました!
ディスプレイとはネットワークで接続しています。 
その方法を紹介します。
1. raspberry piのvncサーバーを立ち上げる
自分はx11vncを使いました。sudo apt-get install x11vncでインストールできます。
パスワードを設定するには x11vnc -storepasswdで設定できます。
パスワードを設定したら x11vnc -usepw -foreverを入力してください。
最後に PORT=5900等が出てきます。
2.アクセスする。
vncviewerのアプリをスマホ、タブレットに入れてください。
次に接続します。
raspberrypiのipアドレス:ポート番号でアクセスできます。
例えば、ipが192.168.0.0,PORTが5900なら
192.168.0.0:5900です。
これだけでディスプレイとして使用できます。
なおraspberry piのネットワークをARPで設定すればローカルネットワークでもvnc,ssh接続できます。

2014年7月20日日曜日

SIGVerseをubuntu12.04 64bit本機で動かす


ubuntu 12.04 LTS 64bit本機, Win 2012 でSigviewerを動かしてみた

 中国国際ICT大会に参加するので中国でSIGVerseの発表をしたいと思っています。SIGVerseはロボカップ@ホームシミュレーションリーグで使用されているシミュレータです。物理はもちろん、自分で作ったロボットの3DCADデータをSIGVerseに表示してシミュレーションできたり、
自分のプログラムでロボットをシミュレータ上で動かしたり、Ocurus liftを使用, ROSを使用することができます。Unity3Dでのゲーム開発と似ています。Mayaなどで3Dキャラクターやアニメーションを作っている方にもおすすめです。
今回僕が挑戦したubuntu 12.04 64bit本機でvbox上にwin 2012を立ち上げてsigverseを実行する方法を紹介します。

sigviewerのsetup

1. virtualboxをインストールしてください。

2. windows server 2012のvhdファイルをmicrosoftのホームページからダウンロードしてください。

3. microsoftからダウンロードしたファイルが.exe形式になっていて開けません。wineで開いてください。

4.  virtualboxですでにある仮想イメージ(winserver 2012)のvhdファイルを選択してください。メモリのサイズなどはデフォルトでよいです。

5. winserver2012を起動しアカウント設定等が終了したらguestadditions.isoをマウントしてインストールしてください。SIGverseはdirectXを使用するので必ずインストールする必要があります。

6. SIGViewerをインストールしてください。IEのセキュリティ設定が面倒くさいと思う場合はfirefoxやgooglechromeでのブラウジングをおすすめします。

7. SIGViewerのsetup.msiファイルを開いてインストールしてください。

8.エラーが表示されてSIGviewerが開けないと思います。VCC/VC++のMSVCR71.dllが足りないというエラーです。MSVCR71.dllをネットから落としてきて C:\program files(x86)\SIGViewer_2.2.0\SIGViewer\Releaseにこのファイルを置けば完了です。
SIGViewerが起動します。


SIGserverのsetup

・jdk等のインストールするパッケージ名や指定するディレクトリ名のi386の部分をamd64に変更してください。(amd64: 64bit, i386: 32bit)


これでSIGVerseが起動できると思います。


超音波センサPINGのデータ分析

角度とPINGで計測した壁との距離の関係(x: 角度、 y: 距離)


RCJジャパンオープン2014では壁との距離に三角関数等を用いて計測していたのですが、動きを見ていると超音波センサが斜めを向いたときに実測値に対して大きな誤差がでるのではないかと思い、データを集計してみることにしてみました。
おもしろいことに、40°までは超音波センサの値がほとんど変わりません。指向性のためでしょうか。つまり三角関数を用いて値を正確に求めようということが実測値との大きな誤差を生み出していたのです!もう一つ分かったことは、超音波センサが40 ~ 60°以上壁に対して傾いてしまったときはすべての距離で150 ~ 170cmの値で一定になりました。
つまり超音波センサが壁に対して40~60°以上で向くとありえない値が読みこまれてしまいます。これを防ぐためにプログラムで壁に対して45°以上ロボットが傾いたときは横幅を計測する超音波センサを変更することです。(正面についている超音波センサが45°以上向いてしまったときは横幅を計測することになる)

中国国際ICT大会まであと10日。プレゼンシートと名刺も用意しなければ!

PID制御について


saint11


今年も中国教育省に中国国際ICT大会(SICTIC2014)に招待されました。
そのためロボットの調整を行っているのですが、方位制御が安定しました。ここでPID制御(高速、正確な方位制御ができる)について説明します。

 P制御 : 比例制御。目標の方位と現在の方位の差の大きさに応じて回転の速度も速くなる。傾き(定数)が大きすぎるとロボットが尻振り状態(ハンチング)になる。首振りになるかならないかぎりぎりに調整するとよい。
モーターのパワー = 方位の差 *  定数(好きな値、調整は自分で行う) 
 I 制御 :   積分制御(時間積分)。目標方位に一定時間内で到達するため、時間が増加するごとに回転の速度も速くなる。すこしずつ値が大きくなるので正確な制御に向い    ている。単調増加(増加しかしない)な制御であるため値が大きくなりすぎて暴    走する危険性(不安定)がある。何も制限を加えないと無限に値が大きくなるた    め定期的に0に初期化する必要がある。
モーターのパワー = 時間(ループごとにインデクリメント、タイマーでもOK)*定数 (好きな値、調整は自分で行う)
D制御  :   微分制御(時間微分)。微分とは変化の割合(傾き)を求めること。(連続値のグラフなら何でも求められる)。変化の割合を求めて、目標値にたどりつくよう    な変化の割合に変える。尻振りの抑制(目標値を越し続けることによって生じ     る)が可能。I制御の無限に値が大きくなる現象をある程度抑制できる。
モーターのパワー = (1つ前の方位ー現在の方位)* 定数



PID制御: モーターのパワー = Pの式 + Iの式 + Dの式

・簡単なP、I、Dの式の定数の決定法
まずPI制御で調整する。Pによって尻振りするかしないかギリギリの定数に調整する。(Iの定数は何でもよい、Iによって制御が暴走する場合は定数を十分小さくするだけでよい)
そうすると定数はこのように決定する。
P定数 =  調整値 * 0.6
I定数    =  暴走頻度が十分すくない値 * 0.5
D定数 = I定数 *  0.125
I定数 : D定数 =  0.5 : 0.125 = 4 : 1(この関係を満たせばIやDの定数を少し変えてもよい) 




2014年7月14日月曜日

K/VM北陸

K/VM北陸の勉強会に参加、発表しました。

GPUの手軽な修理の話、非ノイマン型コンピュータ、googleコード規約の欠点、kernelの話、OSv(クラウド型OS)、eject、linuxの疑似乱数に関わる暗号化の欠点、プロセッサと最適化・CPU並列処理、ゲーム専用UNIXタイプOSをkernelをいじって多くのデバイスに対応できるようにした、等色々なコンピュータの分野の話が聞けてとてもおもしろかったです。

GPUの手軽な修理の話は、GPUの故障は多くが鉛はんだが外れて動かなくなってしまったのが原因という考察を多くの実験を元に検証し、GPUを電子レンジのオーブンで焼いて修理するという内容です。良い数値のベンチマークがでているそうです。@sushi514

非ノイマン型コンピュータの話は非ノイマン型コンピュータの構造とどのようなコンピュータがあるかの説明です。日本は非ノイマン型コンピュータを多く開発していたそうです。@takeoka

gooleコード規約はAndroidのDalvik仮想マシンのkernelコード(c++)がgoogleコード規約によりstdを使えなかったり(例外処理が禁止されている)global.hというヘッダーにグローバル変数が1000行くらい書かれている(すべてのcppファイルの変数を共有)その冗長さを指摘したものです。特におもしろかったのがgoogleの開発者がその規約をやぶってstdを使っていた場面があったことでした。w @k_mnt

 ejectはUNIXのejectコマンド(CDドライブ取り出し)で作品をつくるというものです。目覚まし、PCの電源を物理的にONしたり、ネックレスがあったりejectで色々できることがわかりました。おもしろかったのがejectの目覚ましはカーテンを開けることにより覚ますという目的で作られたそうですが音で起きてしまうことですw @zitomesuki@ahiru3net@Akkiesoft


linuxの疑似乱数を用いた暗号化の話は暗号化はPCのノイズ等を使ったしくみでできているそうですが暗号の更新にはs1, s2 , s3 , s4 , ・・・・・・,s^nという風に決まっているらしいです。sの変化が解析できたら暗号を解読することができるそうです。なので脆弱性がある、と言った話ですが、未だこの方式を用いた暗号の解読は公表上?されていないそく敷居が高いので安心できるそうです。

色々なOSの話がありました。ゲーム用linuxOS, cloudOS, Dalvik仮想マシン等などです。
自分もOSに興味が湧き、FreeBSD, winserver2008とCentOSを入れてみました.
(メインOSはubuntu12.04 LTS)

自分は今までに開発したロボットの話を行いました。発表時は舞い上がり真っ白になってしまいました。みなさん、あたたかく応援していただいてありがとうございます。今までに11台小型ロボットを開発してきました。twitter上で紹介されていないロボットが気になるという声を聞きました!ここのサイトの右上にい今まで開発した小型ロボット10台があるので(onedrive)気になった人は見ていってください。

セキュリティキャンプのチューターや他の参加者の方々ともここで顔を合わせることができてうれしかったです。セキュリティキャンプの勉強がんばっていきたいです。今はRasppiでネットワーク、バイナリ、アセンブラの勉強をしています。

2014年7月12日土曜日

NT金沢


ejectネックレス by @じとめすきー

OpenCVの画像処理でライントレースするロボット

kindleとキーボードがあればrasppiでPCができる!@kimio_kosaka

スケルトンArduinoがすごい@kimio_kosaka

プラネタリウム
Rasppi飛行機

Rasppiトランスフォーマー?

ライントレースするArduino列車 by 河並先生の研究室


7/12(土),7/13(日)に開かれるNico Tech金沢を見にいきました!MAKER MOVEMENTで話題のArduino, Raspberry pi, Ocrus Lift,  Unityなどを使った展示品がありました。

1日目。まず河並先生のArduino列車を見にいきました。前回見たときより多くのコースに対応、新幹線も動いていました。とても楽しかったです。

Rasppiロボットを見にいきました。飛行機のシャーシは3Dプリンタで製作しているそうです。トランスフォーマの動きがとてもかっこよかったです!自分もあんなロボット作りたい!その他にも色々な展示品を見にいきました。

2日目。K/VM北陸、セキュリティキャンプでお世話になるじとめすきーさんのejectネックレスを見にいきました。自分もrasppiで何か作品を作ってみたいです。

kindleとキーボードだけで構成されているrasppi PCがありました!もうPCが10000円以下で手に入る時代ということをあらためて実感します。rasppiでarduinoプログラムのビルドをしていました。rasppiPCだけでmakersの一員になることも可能ですね。他にはとても芸術的なArduinoが展示されていました。

最後にはプラネタリウムの鑑賞。USJ のアトラクションみたいでした。

NT金沢の存在を一週間前に知り、出展しようと思ったのですがすでに締切られていました。 今度はこのようなMAKERイベントに自分のロボットを出展したいです。