2013年1月30日水曜日

Xtion and OpenNI2 on Mac OSX

農作業の合間に、RDCS (多数の自律型ロボットを人の作業と組み合わせて運用/開発する統合環境)のOpenNI2対応を進めています。結構、工数かかります。
Raspberry Piの検証は、終わったので、画像処理や、空間認識サービスを提供しているMac (OSX 10.8.2)での検証をしました。

インストールは、至って簡単! 10分でできました。
OpenNI2のOSX版を
   ・ダウンロード  Here click!
   ・解凍し、解凍してできたディレクトリーに移動する。
   ・install.sh 実行
   ・環境変数の設定 (OPENNI2_REDIST,  OPENNI2_INCLUDE)
    install.sh 実行後にOpenNIDevEnvironmentファイルが生成される。
    その中の情報をそのまま使う。
   ・Samples/SimpleViewerに移動する。makeでビルド
   ・Bin に移動して、実行(下の画面)

開発環境としても、問題ありません。ダウンロード、確認まで10分ほど
ただし、OpenGL(freeglut), libusbは、事前にインストール必要です。Mac は既に、OpenGLが入っているので関係ないですね。
これからは、OPenNIを使っているserviceを、ガリガリとプログラム改修。

Raspberry Piの場合は、インストールパッケージの作成しなければなりません。
パッケージのbuildで、20から30分時間が必要なので、あまりにもすんなりに稼動確認ができたので、ビックリです。

お決まりの depth 画像
このデータを扱うと、すごく面白い事できます。
最近、飛んでいないラジコン飛行機が可哀想。
ラジコン飛行機は、空に絵を書く道具です。本当に、気持ちいいですよ!
でも、問題は、飛ばす所が減ってきた事。僕はなんとか確保していますが、、、
Raspberry Piの OpenNI2 で、Kinect を動かす事は、なんとか少しずつ進んでいます。
depthは取れます。僕は、depthが取れれば十分です。

ちなみに、Carmine1.90を発注してしまった。この円安の時に、、、 (-_-)

peace!

2013年1月28日月曜日

Xtion Pro and OpenNI2 on Raspberry Pi

OpenNI2のversion up が去年の12月にありました。
暫く移行を躊躇していました。しかし、そろそろ考えないとならないので検証しました。
Raspberry PiへのOpenNI2のインストール方法は、---> Here click!

      Xtion Pro-->  Raspberry Pi  > Arch Linux  >  OpenNI2  >  LXDE  >  AP

本日テストをして、その結果から、OpenNI2に移行する事に決めました。
写真は、Color stream と Depth steam テストのsnap shotです。
上のDepth画像と、下のVideo画像は、対象は違います。
Depth Stream  (snap shot)
Video Stream (snap shot)
LXDE上で、それぞれOpenCVを使ってストリームを表示しましたが、スムーズに表示できました。十分使える範囲だと思います。
これで、懸案の、OpenNI2への移行もなんとかなりそうです。
ただし、コンパイル&リンクの時間は、以前より長いかもしれません。

このような検証をする為に、LXDEの環境も作ってありますが、やはり使っているとフラストレーションが溜ります。
今回も、実行モジュールができるまでは、MacからSSH接続をして、画面表示の状態を確認するときだけLXDEで画面を見ます。

PCLの入力システムとしてのRaspberry Pi + Xtionは、なかなかの組合せです。
ただし、NITEは、考えてはなりませぬ。

今回のOpenNI2も、Kinectを公式にはサポートできない。
だんだんと、Raspberry PiでKinectを使う事が難しくなってきた。

いよいよ、Kinect 2台は、農場の監視カメラか。。。。。

peace!

My robot developing environment

最近、ストレス発散にブログを書く様になってしまいました。とにかく、まったく違う作業をするのは、ストレス発散です。


上の図は、自分の管理用の使っている変な図ですが、、、、

現在、3台のIntel CPUマシンと、8台のRaspberry Pi、Xtion, Kinect, Webcam 、Driver, 沢山のセンサー、サーボそしてモータで開発しています。ぐちゃぐちゃです。
それに、覚える事も多くて、、、、つらい。。。
まずは、システム系の開発と、4足歩行のメカニズム開発を先行させています。(車輪駆動は開発終了しました。あとは実機の組み立てだけです)

僕の場合は、「農作業工程を自動化する」その為に必用な「15万円のトマト収穫機を創り運用する」と言う発想が原点です。それが、全ての悪戦苦闘の始まり。
特に、ロボット開発の効率化を考えて、自分でロボット開発/運用の統合プラットフォームRDCSも作り出したもんだから、もう大変です。
通常は、ROSを使うべきです。でも、こういうのを一から作る事に、無類の喜びを感じてしまうのです。
ただ、RDCSは、ロボットを使った業務運用の統合管理の方の比重が高いので、ROSとはやっぱり大分違うと思います。

上図の下側は、Service Nodeで、比較的高性能なIntel系PCで、画像認識などの処理をロボットからの依頼で実施している。また、4DS(空間DB)などの共通情報もService Nodeで処理をする。課題は、ずばり「トマト認識」と「実時間処理」です。でも、12個/分のトマト収穫の為に必要なService処理は達成できそうですまずは、ロジックがきちんとできれば良いでしょう。今年1年かけて、農場でトマト認識機能は改善します。
ハードは、年々高性能で安くなるのですから、、、、
Android端末も、ArchLinuxでサックと動かしたい。そうしたらもっと楽しいのに、、、、


8台のRaspberry Piは、夜になると怪しく赤く光ります。何かを待つかのように

peace!

2013年1月25日金曜日

An Installation of an Apache 2.4.3 on an OSX(10.8.2)

ロボットと、画像解析 service server ( Mac mini ) 間で、HTTP通信をする為に、Apache 2.4.3をインストールしました。また、起動時の自動実行を設定しました。
MacPortsではApache2.2しかインストールできないので、ビルドしました。
Apache HTTP サーバ バージョン 2.4 に従って行えばインストールまでは問題ありませんでした。全部で30分程度の作業です。ただし、Apatchは大きなシステムなので「」は「どのような運用をしたいか?」その一点。後は、それに基づく設定です。
僕の運用では、Monkey HTTP Serverで十分なのですが、Mac はmonkeyの対象外です。でも、確かめ見るのも、一興です。予想通りsourceからのbuildが巧く行かない、また解明する時間もないのでApacheを使う事にしました。

結局、ロボット間、サービス間の通信は、ほとんどをHTTP上で行う事に変更しました。元々、メッセージはXMLで定義していた。やっぱりこの方が楽なのと、通信制御と管理が、RDCSのscenario controller で十分可能な事が分かったので、変更をかけています。自分でやっているのに、結構気がつかない事が多い。設計時も、全く別ものとして考えていたので。思い込みは恐ろしい。scenario controllerは、簡単に言えば分散エージェント制御とworkflow engineを足したもの。
XML との付き合いは、もう15年目です。長いなぁ。でも、データ交換の側面だけが広がり、もう一つの本質的な側面が見過ごされている。僕は、見過ごされてきた方の技術に着目して、組織のコミュニケーションやイノベーションの研究に活用し、幸いにも沢山の企業に活用されているシステム製品の開発、また、地域活性化支援システムや教育支援システムの研究開発の仕事をしてきました。回りにも規格化で活躍している人も居たので、XMLには想い入れもあるのですが、、、ただ、見過ごされてきた技術には、システム思考と構造化技法の理解が必要なので、日本では広がらないと思います。

(1) Apacheのサイトから 2.4.3のソースをダウンロードして解凍
(2) ./configure
(3) make
(4) sudo make install
インストール先は、defaultで /usr/local/apache2 になります。

(5) sudo vi httpd.conf
ServerName  127.0.0.1:80                                             enable & change

(6) sudo /usr/local/apache2/bin/apachectl -k start
(7)  ブラウザーに、127.0.0.1 を入力
(8) " It  works! "  が、ブラウザーに表示されて、めでたし、めでたし
お決まりの、最初の画面
(9) CGIを試しても動かない。当たり前。下記の様に該当部分だけ変更する。
      下の指定方法は、2重に設定しているが、今回は元のhttpd.confを
  そのまま使うので、CGI実行に該当する所を全て変更する
(10) sudo vi httpd.conf
LoadModule cgid_module modules/mod_cgid.so         enable
Options Indexes FollowSymLinks ExecCGI                    add  ’ExecCGI’
ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"     enable 
 <Directory "/usr/local/apache2/cgi-bin">                    change & add
     AllowOverride None
     Options ExecCGI
     Require all granted
     Order allow,deny
     Allow from all
     AddHandler cgi-script .cgi .pl .sh    
     AddHandler text/html .html
     AddHandler text/css .css
     AddHandler image/gif .gif
     AddHandler image/jpg .jpg
 </Directory>
AddHandler cgi-script .cgi .pl .sh                            enable  & add   .pl   .sh

(11) sudo /usr/local/apache2/bin/apachectl -k restart
これで、CGIは、OK

(12) Macでの自動起動設定
sudo mkdir /Library/StartupItems/apache2
sudo vi  /Library/StartupItems/apache2/apache2
cat  /Library/StartupItems/apache2/apache2
#!/bin/sh
. /etc/rc.common
StartService ()
{
/usr/local/apache2/bin/apachectl -k start
}
StopService ()
{
/usr/local/apache2/bin/apachectl -k stop
}
RestartService () { StartService; }
sudo chmod 755 /Library/StartupItems/apache2/apache2
sudo vi /Library/StartupItems/apache2/StartupParameters.plist
cat /Library/StartupItems/apache2/StartupParameters.plist
{
Description = "Apache 2.4.3 HTTP Server";
Provides = ("The Apache Software Foundation");
}

これで、次回からは自動起動です。

peace!

2013年1月24日木曜日

Configure a GPU memory size of a Raspberry Pi

RDCS機能強化の一環としてRamDiskとして使える容量を増やす為、BCM2835に割当てられているGPUメモリーを小さくしました。
「Raspberry Pi User Guide」や、ネットで調べてもArch Linuxでのやり方が出ていなかったでのRaspbianをdownloadして、SDカードから起動してraspi-configで設定。その後、raspi-configの内容を確認したら、/boot/config.txt に書き込んでいるようなので、/boot/config.txtを見てみたら、あら簡単。
gpu_mem=16

BEFORE
[root@rcmp-r03 ~]# free
                         total       used       free     shared    buffers     cached
Mem:         446772      52796      393976          0       8336      24740
-/+ buffers/cache:      19720     427052
Swap:       524284                0     524284
[root@rcmp-r03 ~]# vi  /boot/config.txt

gpu_mem=16                                                   add

[root@rcmp-r03 ~]# reboot

AFTER
[root@rcmp-r03 ~]# free
                       total       used       free     shared    buffers     cached
Mem:        495444       52256      443188          0       7896      24684
-/+ buffers/cache:      19676     475768
Swap:       524284                0      524284

peace!

2013年1月22日火曜日

An Installation of a Monkey http server (1.1.1) on a Raspberry Pi

Raspberry PiにHttp Serverを構築する必要がありました。
ロボット間通信は、いくつかの方法で実装していますが、その一部をHTTPに変える事にしました。その為に、軽量なhttp serverが必要です。NginXも試しましたが、cgiを動かす仕組みがなくadd onのソフトが必要なのであきらめました。robotのコントローラとして使っているのでRaspberry Piには、いろいろなソフトを入れたくない
消去法で Monkey http server 1.1.1 にしました。結果的には、Monkeyで良かった。

私の様な用途、つまり”公開”用でなく内部システムのHTTP Serverとして使うには、このようなLightweightで、Simpleなソフトが必要である。大きな収穫でした。
http://monkey-project.com/
Monkeyは、ネットにも情報がありませんでした。手探りでインストールしてみました。Apacheと同じ感じです。結果は、perlのCGI も動かせる様になりました。
I found a report about the Monkey http server performance.

Monkey v/s NginX on a Raspberry PI - Monkey Project

インストール後、この画面がでればOK
Monkey http server(1.1.1-5)に関する感想や、注意事項
1) 設定ファイル編集
/etc/monkey/sites/defaultなどの編集ではtab送りをしない。
起動できないなどのエラーになる。
2) perl cgi の実行は、不安定な感じ? 大丈夫
CGI moduleをload するが、そのmoduleの問題かなぁ。perl cgi自体はコンソールで動くし、MacやISPのサーバで動いている。
発見!ちゃんと動きます。試しにやったら動きました。
perl
print "Content-Type: text/html\r\n\r\n";
sh
/bin/echo -e "Content-Type: text/html\r\n\r\n"
CプログラムをCGI経由で試したがperlと比較にならないくらい早い。やはりSDカードからのloadが大きい。CGI機能の確認の為にperlを使っただけです。
3) 感覚的には、静的なページは、NginXや、Apacheよりも早いかもしれない。
ただし、Raspberry PiはI/O系が少し弱いので、http serverはどれでも良いかも
僕は、通常のWebサーバーとしては使わないので影響はないですが。。。
4) Monkey についての基本的な情報がない
EQ(Emotional Intelligence)の低いソフトなので、推奨するソフトではありません。EQの低さは、Windowsにはかわなないけど。開発者自身の解説本も充実しているRaspberry Piは最高ランクです。EQを考えるとIT業界は成り立たないですが、、、
5) CUI開発に於ける、ArchLinuxの利便性(Monkeyとは、関係ないが。。。)
このような情報の少ないソフトを導入するときは、サービス起動、停止、rebootなどを繰り返しますが、Arch Linuxは爆速なので作業が早く進みます。何たって、rebootしても15秒以内で戻ってきます。コーヒを入れる間もない。(笑
GUIが必要なソフトは、Macで開発して、CUIベースでできる物は、Raspberry Piで十分です。ただ、くれぐれもRaspberry Piは、それなりに使うのが良いのです。

ところで、Web Server なのか? HTTP Server なのか?
私の場合は、ロボットシステムの通信手段として使うので、HTTP Serverです。

 Monkey自体の問題ではありませんが、注意点が一つあります。pacmanでアップグレードすると設定ファイルが上書きされます。必ず、/etc/monkeyの設定はコピーしておいて下さい。ただし、upgradeにより設定方法の変更があるかもしれませんので、上書きされた内容の確認は必要です。(2013/03/25)

------------------------------------------------------------------------------------------------
(1) Install packages
(2) Configure files
(3) Make directories and files
(4) Run (manual)
(5) Configure the systemd

(1) Install packages
[root@rcmp-r03 ~]# pacman -Syu
[root@rcmp-r03 ~]# pacman -S perl perl-archive-zip if you need...
[root@rcmp-r03 ~]# pacman -S monkey


(2) Configure files
[root@rcmp-r03 ~]# vi /etc/monkey/monkey.conf

    "port 2001"         to    "port 80"            change  a port number you want

    "User nobody"    to    "User root"          change   your root group user
    "UserDir public_html"    to   "UserDir /home/nao/public_html  
    "PidFile /var/run/monkey/monkey.pid" ->
                                  "PidFile /var/log/monkey/monkey.pid"
                '/var/run' is a link to '/run'.   '/run' is a ramdisk on Arch Linux

[root@rcmp-r03 ~]# vi /etc/monkey/plugins.load
# CGI
 ===
# This plugin enable the CGI support in Monkey. CGI is an old
# interface and not recommended for production enviroments, due
# to it nature, it lack of performance.
#
Load /usr/lib/monkey/monkey-cgi.so                           enable
[root@rcmp-r03 ~]# vi /etc/monkey/sites/default
[HOST]
    # DocumentRoot :
    DocumentRoot /var/http                                         enable & set
[CGI]                                                                             enable
    # Per-vhost CGI matching, same rules as with the global match
    Match /cgi-bin/.*\.cgi                                               enable  
[root@rcmp-r03 ~]# vi /etc/monkey/plugins/cgi/cgi.conf
[CGI]
     Match /cgi-bin/.*\.cgi .*\.sh .*\.pl                            add extensions  

(3) Make directories and files
[root@rcmp-r03 ~]# touch /var/log/monkey/access.log
[root@rcmp-r03 ~]# touch /var/log/monkey/error.log
[root@rcmp-r03 ~]# chmod +w /var/log/monkey/access.log
[root@rcmp-r03 ~]# chmod +w /var/log/monkey/error.log
[root@rcmp-r03 ~]# mv /srv/http /var
[root@rcmp-r03 ~]# mkdir /var/http/cgi-bin
[root@rcmp-r03 ~]# rm -r /srv
[root@rcmp-r03 ~]# mkdir /var/run/monkey

(4) Run (Manual)
[root@rcmp-r03 ~]# monkey -D 
Monkey HTTP Daemon 1.1.1
Built : Dec 14 2012 14:16:18 (gcc 4.7.2)
Home  : http://monkey-project.com
* Process ID is 1677
* Server socket listening on Port 80 
* 5 threads, 101 client connections per thread, total 505
* Transport layer by liana in http mode
[2013/01/22 12:55:33] [   Info] HTTP Server started

(5) Configure a systemd service
[root@rcmp-r03 ~]# vi /etc/systemd/system/monkey.service
[root@rcmp-r03 ~]# cat /etc/systemd/system/monkey.service
[Unit]
Description=Monkey http server deamon
Required=network.target
After=network.target
[Service]
Type=forking
ExecStart=/usr/bin/monkey -D
ExecStop=/bin/kill $MAINPID
ExecReload=/bin/kill $MAINPID ; /usr/bin/monkey -D
PIDFile=/var/log/monkey/monkey.pid.80
PIDFile=/var/run/monkey.pid.80
[Install]
WantedBy=multi-user.target
[root@rcmp-r03 ~]# systemctl enable monkey.service
ln -s '/etc/systemd/system/monkey.service' '/etc/systemd/system/multi-user.target.wants/monkey.service'
[root@rcmp-r03 ~]# reboot


peace!

rap-kinect

pacman -Syu
pacman -S gcc make cmake
pacman -S libusb
pacman -S git
mkdir kinect
cd kinect
git clone https://github.com/OpenKinect/libfreenect.git
cd libfreenect
cp CMakeLists.txt CMakeLists.txt.org
vi CMakeLists.txt

cmake CMakeLists.txt
make

Requirements Specification (Tomatos harvesting robot)

今日は、点滴潅水設備の貯水タンクの移動作業の予定でしたが、雨なので中止します。
これまで、ポンプで送水していたのですが、昨年、水頭差(water head deference)を使った潅水を試した所、良い結果が出たので、設備の改良をする事にしました。
理由は、ポンプの燃料費削減と、管理工数の削減。
ポンプと使うと、燃料も必要だし、そばにいる必要がある。でも、水頭差で潅水すると、バルブを捻るだけで、あとは3時間位ゆっくり潅水してくれる。
メリット大です。
一応、水理計算をした所、今の位置から50cm upすれば末端の潅水量が改善できるので、土木工事をする事にしました。多分、これで、2Kgは、やせるぞ。でも、完成祝いで、ビール飲むから、1Kgか。。。
今年は、このポンプを使わないようにする。非常用の設備にします。
点滴潅水設備は、こんな感じ
僕のトマト栽培は、自分で考えた「超高畝栽培法」なので点滴設備が欠かせない。
点滴設置後、右のように紙で覆います。
こういう、作業も全部一人で、ハウス数戸分します。
ハウス奥行き45mです。このハウスは自分で建てました。ビニール張りは専門家にお願いします。
ちなみに、ハウス内は雑草が生えないように、紙や防草シートで全て覆います。
雑草 -> 虫発生 ->  病原菌発生 -> トマト被害
このプロセスをなくします。それでも発生するので、
トマトとトマトの間に、ハーブを植えて、益虫を増やします。
私の本職は、あくまでも、トマト農家です。
こんな感じて、ぽたぽた
最初に考えた、トマト収穫機の要求仕様です。まぁ、超ドラフトです。
こんな、感じではじめて、とっても苦労しながら、意地で開発しています。
こんな事、考えなければ良かった。。。。
でも、innovation起こしてやるぞー!

トマト収穫機の要求仕様 (ver.01)
目的
   トマト栽培作業の8割は定型的な作業である。その作業を自動化する。
   最初に、最も難度の高いトマト収穫ロボット開発を行う。
   この自動化により
   ・労働生産性改革を通じた、収益率向上を目指す。
   ・また、ロボット化により得られる各種データを用いて、品質向上を目指す

開発費
   トマト収穫機のハードウェアの部品代は、10万円以内とする。
   ただし、
   トマト収穫機を搭載して自走するロボットは、別途開発するものとし、
   部品代は、8万円以内とする。
   この自走ロボットは、2輪駆動型と4足歩行型を開発する。

性能
   人と同等の収穫量を目指すが、初期目標は12個/分
ただし、機構としては、それ以上が可能な事

保守性

   ハードウェア部分の保守性を高める為に、市販されている部品で構成する
   電子基盤の作成などは原則行わないもととする。
   ただし、要求価格に対応する市販部品が無い場合には、自作するものとする。

安全性
   安全装置を設け、自動運転中でも機器に触れずに停止できるようにする。
   異常が発生した場合など、暴走や異常な作業をしないように制御する。

順法
   関連法規に従う。

考え方
上記の要求仕様は、多くの相反する項目を含んでいる。特に性能と価格においては、反比例するものであるが、あえて低額の費用を目的に上げている。
現在の農作業支援ロボットは試作レベルの研究が多く、かつ実際に販売されても高額な導入費・保守費が予想される。生産性の低い農業において、高価な設備の導入は難しい。従って、低額で購入/保守ができる事は、必須条件となる。

この解決については、検討の結果次のような方針で対応する事とした。
(1)ソフトウェアは自作する。しかるべき時期にオープンソースとして公開する。
(2)市販の安価な、またグローバルでデファクトな部品を用いてハードウェアを作る
(3)維持費、保守費を最小限にするために、自作できるロボットとする。
(4)価格の高い、ギアードモータは、自作を前提とする。
(5)作業ロボット共通のプラットフォームを開発し、その上に対象とする作業毎の機能部分を追加する方式にし、可能な限り共通部品化を進める。
(6) 構造部材は、ホームセンターで購入可能な物とする。

peace!

2013年1月21日月曜日

Meet the Raspberry Pi を読みました。感服しました。

日本で、Raspberry Piの展開に尽力されている nice guyに勧められたので読みました。

Raspberry Piを作った人の気持ちが伝わってくる本でした。
Raspberry Piは、子供たちの pocket moneyで買えるように考えて作られています。その子供達が、手に取った時に、迷わないで使える様にサポートする為の本でした。
なんか、これからコンピュータを使う子供達への優しさに溢れているんですよね。
その想いが、伝わってくるんです。

やはり、Raspberry Piの開発チームは、すばらしいですね。
本当の、プロフェッショナルです。
感服しました。

Koboで購入しました。定価は、$5です。
Amazonでは、regionが違うので購入できませんでした。

僕は、コンピュターを使いこなす能力を、早いうちに身につける必要があると考えています。その意味では、Raspberry Piの様なマシンが出現した事はとってもうれしいです。
しかし、何故、子供がコンピュータを学ぶ必要があるのか、その必然性をうまく伝えられないので困っています。
僕は、コンピュータで、自分の仕事を楽にしたり、沢山のお客さんに使ってもらいほめられた、外国の大学と共同研究できた。もし、コンピュータを使ってプログラムを作らなければ、そんな事はなく、普通に設計の仕事をしていた。毎日、色塗りをしていたかもしれない。同じ仕事の0.1mmも狂わないの繰返しをしていたと思う。
僕は、コンピュータは自分の創造力を飛躍的に拡大する仮想思考機械だと思っている。現実の自分が、頭の中でしか考えていない事をコンピュータで拡大する事によって、更に自分の創造力が広がる。だから、プログラムを書いてコンピュータが使いこなせた方が良い。うまく言えない。。。

Peace!

Design Philosophy and Concept of my robots

私の4足歩行ロボットのコンセプトモデルです。笑っちゃうでしょ。

”KONG LIVES" このバッチを知っている人は、かなりのKONGマニアだと思います。
Universal Studios Hollywoodで配られたモノです。
その理由は、日本が関係しています。ちょっと悲しい。
普段は、画像認識のテストで使っています。
「自分の仕事を楽にする為に、15万円トマト収穫ロボットを作る!」と決心し、その重要な要素である4足歩行ロボットの開発を決めた後、作ったのがこれです。大事に、飾って、毎日見ています。ロボット開発は、先にデザインを決めました
コンセプトは、「SIMPLE & SMART」、これは私の目指す生き方でもあります。
「ゴテゴテのロボットで御座います。」というのは好きじゃない。
基本は、フレーム形状にして、追加の装置を載せられる様にする。
サンダーバード2号の様に、格納するもよし、フレームのうえに櫓型で載せるのでもよし。作業装置と分けて考えました。
後、全体の形状の比率も試行錯誤しました。用途などを考えて、形状の比率の試行錯誤に結構時間を使いました。もともと設計をしていたので、こだわってしまいました。
ロボットの用途や、載せるものの動き・重さ、搭載し移動する時の重心、使用材料の力学特性などを考え、構造力学の計算もしました。結果的に、搭載する物への要求仕様もつくる事になりました。その結果このロボットの形状比率は、コルビジェの黄金比ではないですが、自分のロボット形状比率として大切にしています。

僕の物創りの経験としては、コンピュータシステムもそうですが、既存機能の寄せ集めの結果として、最終品を考えるのではなく、目的を端的に訴求できるデザインから、それを実現するための機能を考えた方が良いと思います。機能の寄せ集めから最終品を考えると先に設計条件を決めます。それに縛られて後々、つまらない物になります。(作る側の理屈は、顧客を無視し、イノベーションを否定します。)
目的に基づいたデザインを決めると、デザインに合わせて機能も開発しなければならない事も発生します。一見遠回りのようですが、その過程でいろいろな発見があり、本来必要な機能が研ぎすまされ、simpleになり拡張性のある良い物になります。創ると、作るの違いです。

プログラム開発に使っているロボット(2代), ぼろぼろです。木で作っているのは、加工のし易さを優先した為。木材の力学的特性は優れいているので、実機も一部は木材です。実機は4月に公開予定!!
Raspberry Piのメリットは、この様な家の中で開発作業できる小さなロボットを作れる事。
いきなり、実機で開発するより、数段開発生産性が高くなります。
その為にも、構造計算に基づいた形状比率を、
最初に考える事は大切だと、後からつくづく思いました。ラッキーでした。
まだまだプロトタイプは、デザインの様になっていませんが、比率は守っています。

このデザインから、重くて、しかも設置場所の制約を要求する、不細工なノートPCを載せる事は考えませんでした。ロボットのコントローラーは、自分で創るか、産業用のマザーボードを使おうか迷っていました。それでいろいろ探しているうちに、Raspberry Piに出会いました。性能値は低いのですが、コンピュータとして必要な機能は、全て搭載し、カードサイズで、価格が安い。単体の性能が低い分は、分散処理システムで他のサービスで補える様に仕上げれば良いです。その為に考えたのが、「分散コンピューティング環境にロボットの部品を置く」と言うシステムアークテクチャー(RDCS)です。「部品を置く」これが、ミソです。ロボットのコントローラであるRaspberry Piも、部品です。脚も部品です。画像処理プログラムも部品。計測データも部品。何もかもが対等な部品(Object)です。それらを制御するのは、Job Description(JD)だけです。人間とロボットが協調して作業をする為には、共通のJob Descriptionが必要です。このJSをScenario Generator経由でロボットの部品の制御に使います。この考えの元は、約10年前に、企業の知識創造マネジメントを研究していた時に、作ったプロセスデータベースの開発経験です。上場企業約100社、のべ約10,000人以上の方にアンケート・インタビューして作った企業の知識創造マネジメントモデルをベースにした組織活動データベースです。7年前にソフトウェア商品化して、今も多くの企業で使われています。今でも、この大量のアンケート、インタビューよくやったなぁと思うけど。その事業企画を許してくれた会社や、インタービューに応じて下さった企業の方々には、今でも感謝です。しかも、分析サービスとして、お金を頂いてやっていたのです。お客様も、ご自分の会社の知識創造の実体を知りたかったのです。この分野は、大学でも研究している方がいるけど、これだけのデータで研究している人は、世界にもいません。この実績を評価して下さった米国東海岸のTopクラスの大学と共同研究もできました。企業の知識創造(利益の源)はマネジメントできます。ただ、みんなその方法を知らないだけ。)
また、直感的にも、元々のDesign Philosophy & Conceptに対しても、分散アーキテクチャーの方が似合っているように思いました。
Simple & Smartな、ロボット達がワイワイ集まって、トマトを作るなんて、考えただけでも面白そうで、ワクワクしてきます。Toy Storyの世界観です。
同じ目標の元に、人と沢山の自律型のロボットが協調して働く、その環境を作るのがRDCSです。だから働いているロボットの部品もRDCSは、ちゃんと知っている。なぜなら、修理ロボットが部品を持っていかなければならないから。。。
話は変わるけど、Raspberry Piの開発者には、おこられちゃうかもしれないけど、システム開発は性能の低いハードで作った方が良いです。なぜなら、アークテクチャー構造やアルゴリズムを考えなければならないから。それに、それ以下の性能になる事はない訳です。それが、後々、システムの成長を可能とします。また、技術者としても面白いですよ!

実機の組み立てを初めて、まぁいろいろ大変ですし、分散システムのfail safe & recovery機能の実装などでも苦労しましたが、デザインは一切後悔していません。

しかし、開発を突き進めて行くと、さまざまな畝の幅に対応する必要があり、4つの脚の間隔を用途に合わせて自由に変える必要に迫られました。まぁ、その方が合理的なので、4月に導入するバージョンは、4つの脚の位置が自由に変更できます。RDCSでは、4つの脚の間隔を、それぞれ1,000kmにしても制御できます。(そんなもん、誰がするか!)
でも、このようにロボットの形状を自由に考えられるのも、元のデザイン、RDCSの考え方あるからです。それと、Raspberry Piが小さく、軽いからです。

ただ、犬を散歩させる「お散歩ロボット」や、人をサポートするロボットは、比率は変えません。ロボットの重量や強度の最適な形状比率なので。。。。。

しかし野外用の実用ロボットを創るって、本当に大変!!
農業しながら、一人でする事ではないです。
昼は、農家で、夜は技術者。
昼は、植物学で、夜は工学。
昼は、現実で、夜は未来。
昼は、嫁さんニコニコ、夜は金稼げ!
はっきり言って、
脳みそパンクで、分裂状態
睡眠不足で、体力限界
なんで、こんな事しているのだろう?
こんなときは、バナナボートに乗ってはいけません。
くれぐれも真似をしない様に。なんちゃって!

でも、でも、僕の一番の理解者は、嫁さんです。感謝、感謝

Simple & Smart
peace!  (^_^)v

追加
今のソフトウェアは、本当にそれで良いのか私には、大きな疑問があります。
特に、Windows関連のソフトには、疑問だらけです。
高性能なハードに、使いもしない機能満載のOS、使いもしない機能満載のアプリケーション。Vicious Circleそのもの。2、8(ニッパチ)の理論がありますが、もっとひど事になっています。個々の技術が進歩しているように見えて、美意識もなく、全体が退化している。
ビジネスだからしょうがない事は、挿し引いても、全体が退化している。
System Architectの、プロ技術者としての美意識は???

コンピュータを学ぶ、子供達には、個人的に、そのような物は触らせない方が良いと思います。「三つ子の魂、百まで」です。日本のように技術立国を目指す国のコンピュータ教育は、根本的に考える必要があると考えていますし、自分なりに、すこしチャレンジしてみようと思うこの頃です。

大事な事は、
・コンピュータの基本動作の仕組みを正しく知る事
・コンピュータ化する対象を、正確に構造化して分析・体系化する事
・実現するためのアークテクチャーを考える事
・処理のアルゴリズムにこだわる事
そして、最も大切な事は、コンピュータは創造の為の道具であると認識する事

それができれば、システムの目的が正しく設定でき、良いシステムが考えられ、良いプログラムが作れます。
結果として、良いシステムになります。そして、そのシステムを使う人が幸せになります。そして、システムを創った人たちも、創造の意欲と技術が高まります。
このサイクルを実現しなくっちゃ。進歩したとはいえない。

しかし、上記のような問題意識を持つと、今のこの時代に於ける
Raspberry Piの存在意義は、とても大きなものだと思えてきます。

2013年1月19日土曜日

インストール / 設定関連のまとめ(自分用)

This post is a collection of posts to refer when I install  and configure software.

1st Oct. 2013 
HTTP サーバを、monkey よりlighttpd に変更
理由は、cgi系の処理が不安定なため。また、lighttpd関連の資料が多い。
gpasswd -a http root 本来は、設定してはいけない。
ただし、本ロボットシステムは閉じているので、ちょっと、暫定処置として。
基本的には、設定しなくなります。

4th Aug. 2013 
当初のSD-CARDイメージは、primary partition 上にOSイメージを展開していました。
従って、fdiskで、SD-Card全域利用の拡張操作が容易にできました。しかしながら、
新しいSDカード上のOS展開方法では、コマンドライン操作のSD-Card拡張は不可能です。従って、ubuntu の GPartedで拡張を行いました。
その方法を、下記のpostに記載しました。この処理の後に、これまでのpostに記述したようにOS環境構築を行ってください。

Raspberry Pi [実用]入門」 技術評論社刊 読者の方へ
上記 "4 Aug. 2013"のメッセージ内容は、
技術評論社のサポートサイトからダウンロードしたPDFファイル 「Chap 12-13補足」の、
”1.2 Arch Linux の起動とSDカード拡張” の内容に該当します。
下記post内容で、1.2項の処理を行ってください。1.3項 以降は変更ありません
よろしくお願いいたします。

Ubuntu 上のGPartedを使って、SDカード拡張をする方法

-----------------------------------------------------------------------------------------------

1. Design Philosoph and Concept 

(1) Design Philosoph and Concept of may robots
  Design Philosoph and Concept of may robots 設計思想、デザインについて

2. An installation manual (Arch Linux)

(1) ロボット開発用 ArchLinuxインストール(最初から固定IPアドレスなど)
    archlinux-hf-2013-07-22.img

(2) 忘備録用に、詳しく記述したインストール方法
    archlinux-hf-2013-02-11.img
    ウィンドシステムは、LXDE

(3) Old install manual            インストール説明書 (参考まで)

3. Arch Linux system software

(1) ネットワーク設定
  固定IPアドレスを、有線、無線LANに設定する方法 
   wpa_supplicant設定は, 上記(1)ArchLinux インストール(4.2)を参照

(2) ハード設定
  GPU memory size  変更方法

(3) Systemd関連
  systemd    説明 (Arch Linux HP)
  systemctl  コマンド簡易説明

(4) Mac から、Raspberry Pi のX Window Client を使う方法
  SHH Tunnel  X11 Client  (Raspberry Pi)とX11 Server (Mac)

(5) pacman
  Performance up pacman.d/mirrorlist変更

4. Packages for development 

(1) OpenNI2    2.1.0
  Arch Linux on Raspberry Pi :  Build & install

(2) OpenCV
  ArchLinux: pacman -S opencv
      OSX: sudo port install opencv  -> /opt/local/include/opencv2, /opt/local/lib

(2) HTTP Server
  Monkey http server インストール print "Content-Type: text/html\r\n\r\n";
  NginX http server インストール   (今は使っていない)
  Apache 2.4.3  (OSX 10.8.2) インストール


5. Others

(1) pacman error
  下記のエラーメッセージがでた時の対応
  “ error: failed to commit transaction (conflicting files) "
  > pacman -Syuf

(2) Sambaのインストール
    http://robot009.blogspot.jp/2013/08/an-installation-of-samba-on-raspberry.html

(3) Libre Office
  これは、OSXでの話です。writerで、文字入力が大変遅い時の対応というか
  基本的な設定かもしれなし。

  Preferences
        (1) Java
             check out -> java  "use a Java runtime environment"
        (2) Memory
             Undo                                       20-30

             Graphic cache           Libre   128
             per object                               20

peace!
-------------------------------------------------------------------

sudo diskutil unmount /dev/disk2s1
sudo dd bs=1M if=~/Downloads/rapi/archlinux-hf-2012-09-18.img of=/dev/rdisk2
/sbin/ip addr add local 192.168.11.70/24 dev wlan0 label wlan0:1
ip addr add 192.168.1.1/24 brd 192.168.1.255 dev eth1   ip addr show dev eth1
ip addr add 192.168.1.3/24 brd 192.168.1.255 dev eth1 label eth1:0
ip addr del 192.168.1.3 dev eth1
ip addr list   ip route   ip -s link   ifcong netstat ethtool
pacman -S ttf-dejavu ttf-bitstream-vera
find . -name \*.cgi -print0 | xargs -0 grep print /dev/null

ffmpeg -i aa.WMA -ar 16000 aa.wav
./julius/julius -C fast.jconf -input file -charconv EUC-JP UTF-8



[root@alarmpi ~]# dd if=/dev/zero of=/swapfile.img bs=1M count=512
512+0 records in
512+0 records out
536870912 bytes (537 MB) copied, 26.3849 s, 20.3 MB/s

------------------------------------------------------------------
Debian
(1) suto run # runlevel
# insserv
# update-rc.d -f exim4 remove
# update-rc.d exim4 defaults
   update-rc.d: using dependency based boot sequencing  このメッセージは無視
# insserv apache2
# sysv-rc-conf --list

(2) USB truble
libv4l2: error turning on stream: No space left on device
VIDIOC_STREAMON: No space left on device
---> separate USB BUS
lsusb -t
v4l2-ctl -d /dev/video0 --list-formats
sudo rmmod uvcvideo

sudo modprobe uvcvideo quirks=128

(3) wifi
mac address -> wifi wlanx

------------------------------------------------------------------
dd if=/dev/zero of=/swapfile.img bs=1M count=512; mkswap /swapfile.img; swapon /swapfile.img; cat /proc/swaps
vi /etc/fstab
/swapfile.img none swap sw 0 0
vi /etc/pacman.d/m*
hostnamectl set-hostname rcmp-r13; timedatectl set-timezone Japan; pacman -Syu wpa_supplicant wireless_tools
#edit /boot/config.txt
reboot

##-------------------------------------------------------
## configure network
## PC->target    FTP Tool
#copy   /root/*
#copy   /etc/conf.d
#change /etc/conf.d/network  (change static ip address)
#copy   /etc/wpa_supplicant/wap_sulicant.conf
#copy   /etc/systemd/system/network.service
systemctl disable dhcpcd@eth0.service
systemctl disable dhcpcd;systemctl enable network.service
reboot

##-------------------------------------------------------
ip addr
vi /etc/resolv.conf
pacman -S gcc make cmake pkg-config libtool git python2  glut  doxygen graphviz opencv ttf-bitstream-vera ttf-dejavu fswebcam unzip php opencv-samples eigen2 python2-numpy lighttpd lua51

#copy   /srv/http/*
systemctl enable lighttpd
systemctl start lighttpd
pacman -S lxde xorg-xinit xf86-video-fbdev  leafpad obconf gpicview gedit
mkdir ~/.config
mkdir  ~/.config/openbox
cp /etc/xdg/openbox/menu.xml /etc/xdg/openbox/rc.xml /etc/xdg/openbox/autostart ~/.config/openbox
xinit /usr/bin/lxsession

vi /etc/ssh/sshd_config
AllowTcpForwarding yes
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes

#copy developping environement

reboot

##-END------------------------------------------------------




2013年1月17日木曜日

Recognizing and Extracting tomatos from a photo digital image.

トマト収穫ロボットを作るためには、画像からのトマト認識が重要です。
その画像認識技術の開発を進めています。
複数の方法を組合せて認識しますが、安定してきたので紹介します。
OpenCVも使っていますが、認識技術の中核は自作しました。

下の写真は、遠目で撮った写真から収穫が可能なトマトの候補を認識した結果です。何故、このような離れた位置からの認識が必要なのかは、長くなるので別な機会に説明します。
まだまだロジックの改良が必要ですが、目標は達成できそうです。
トマト収穫ロボットでは、2000x1500程度の画素数のwebcamを使うので、遠目の撮影を行う為のトマトとの位置関係、そして移動ロボットへの搭載方法を考えています。
元々、Low Cost Robotなので、1台専用にしても良いですが、、、

葉の陰や、重なっていても、それなりに認識しています。
この処理は、ロボットに搭載しているRaspberry Piの性能では、実用上の速度で出来ないので、RDCS上に配置されたi5 2.5GHz のマシンで動く、Space Recognizing Serviceで行います。その結果をロボットに返します。
遠目の撮影で、かつ 影になっているのトマト認識
黄緑色の十字マーカーは、認識した収穫候補のトマトを表します 
(処理対象の画像解像度 3680 × 2760)
画像認識の点で言えば、如何に、一枚の画像から多くの情報を、位相関係も含めて、かつ高速に抽出するのかが、私の一番重要視している点です。
50センチ程度から撮影した画像で行えば、ほぼ位相関係も含めて認識が可能となってきました。実際の収穫対象のトマトを選定する為には、まずは十分です。あとは、画像から推定するトマトの糖度ですが、なんとかなるでしょう。なんたって、サンプルが大量にありますから、実験しながら試行錯誤し、閾値の組合せを作れば良いです。接近したトマト画像の認識処理は、Raspberry Piで処理する目処も立ちました。

ちなみに、このトマトは、フルーツトマトで、糖度が約10以上あります。
私のトマト栽培は、化学合成農薬/肥料や、有害物の混ざり込む可能性のある農業用水を使いません。有用な微生物や安全な水を活用して作っています。
その理由は、自分が化学合成物に少し敏感な体質だからです。安心して食べれる物を作って、普通に食べれるのは、そのような体質の私にとっては大きな幸せです。

あ〜、時間が足りない、プログラムもっと、作りたい、改良したい。
工作の方は、ラジコン飛行機をしていたので、なんとかなりそうです。
そんな事もあり、主要な機能を遠隔から無線で操縦するする物はラジコンだと思っています。ロボットは、対象の作業を自律的に行う装置だと考えています。私は、人手を減らす為に使うので操縦しないですむようにしたいです。

peace!

Value of the Raspberry Pi (1)

自分に取っての、Raspberry Piの価値を考えてみたいと思います。

私は、学生の実習で紙テープでローディングするコンピュータ(HITAC 10-2)に触れてから、かれこれ30年近くコンピュータを使ってきました。自分の仕事の為に、数値計算のプログラムを作ったり、GISのシステムを作ったりしました。また、ソフトウエア商品を作り、多くのユーザに活用していただきました(今も、退職した会社のソリューションビジネスのCore商品です)。担当した事業のグローバルシステムの構築も、多くの国籍の方と作ってきました。その意味で、コンピュータは私の仕事にとっては無くてはならない道具でありました。そしてまた今「自分の農作業を楽にするためのロボット」を開発していますが、それもコンピュータの塊です。
ちょうど、私が過ごしてきた期間は、コンピュータのハード性能が著しく発展した時期であり、同時に産業や社会にコンピュータが密接に組込まれた時期です。そして、今やコンピュータが無ければ、社会生活も成り立たない時期になっています。
その時期を過ごしてきた人間また技術者としてRaspberry Piを、「道具」としてのコンピュータとして、自分なりに考えてみたいと思います。それを通じて、見えてくるコンピュータと人の関係も整理したいと思います。

1. コンピュータは、道具
そもそも、コンピュータは「道具」です。「道具」と言う分類においては、金槌と同じです。家をたてる時に、金槌で釘をうたないと構造材を固定する事が出来ません。釘を手で打つ事は出来ません。また石で打っても10本目には石は割れてしまうでしょう。金槌という道具があり、初めて家を建てる仕事が業として成り立ちます。ただし、物事には何でも極端な例があり、釘を頭で打って、その芸でお金を貰っている人がいます。普通の人には出来ない?、やりたくない事なので、自虐的な芸になっています。金槌が、ハードな事をする道具という、一般のコンテキストの合意によって成り立つ芸です。
自転車は、「道具」と言う分類において、もっとコンピュータに近いかもしれません。自転車という道具を使って、2つの地点を人間が歩くより早くしかも、荷物とともに移動する事が出来ます。コンピュータは、人を送受信する事は重くて出来ませんが、「データ」送受信の端子になれます。また、部品を集めて自分用の自転車を作る事が出来ます。コンピュータも部品を購入して作れます。道具を自分で作る事が出来ます。これも、極端な例があって、「俺は、自転車だ!」と言う人がいるかもしれません。手をグルグル回し、口に車輪をくわえて、パンツにサドルをテープで張っているかもしれません。しかし、私は会った事がありません。でも、それでは他の人を載せれないし、第一、乗っている人だった楽じゃありません。

しかし、ここで大切なのは、道具は、目的を達成するために使われるという事です。
金槌は、構造材を固定する釘をうつ為に、、、
自転車は、早く楽に移動する為に、、、
では、コンピュータという道具を使う目的は何なのでしょうか?

この回答は、非常に難しい事です。それは、「コンピュータ」あまりにも定義をされずに使われてきており、コンピュータを「触った」人の数だけ定義ありそうだからです。
例えば、プログラマーの人は、「飯の種」と答える人もいれば、「世界一、有名になる事を夢見させてくれる道具」と言う人もいるかもしれません。
また、例えば原始林の奥地に済む人で、初めて携帯電話を持った人は、「知らん」と言うでしょが、「携帯電話の中身は、コンピュータだよ」と言えば、「携帯電話」が彼にとってのコンピュータです。金融のディーラーに言えば、「お金を作る道具」と言うかもしれません。小さな利益の取引をコンピュータによる超高速な売買回数により巨額のお金にかえる道具です。
自転車には、道具にそんな多くの定義は無いでしょう。ましてや、金槌にも。。。
「コンピュータが、大好きでも触っていたい」と言う人にとって、一日という時間をつぶす為の「道具」でしかありません。
しかし、あくまでも、コンピュータは道具でしょう。

しかし、いま、このコンピュータが道具であると言う「認識」いえ、「認識する行為」があまりに無くなってきているように思います。
道具という「認識」さえも無くなっているのでは無いでしょうか?
それは、ある意味不幸の始まりかもしれません。
ひょっとすると、地面の裏側には、 過去に地上を破壊して、地中に閉じ込められた大魔王が居て、地上の世界に戻る為に、コンピュータ菌という病気を撒いているのかもしれません。あなたは、最近、下を見て歩いていませんか?

続きは、また。

peace!

2013年1月16日水曜日

An Installation of OpenNI2 on Raspberry Pi. To use a Xtion.


An Installation of OpenNI2.2 on Raspberry Pi ---> Please see a new post.


New Release OpenNI2 (2.1.0.4 branch:develop)
I've built new OpenNI2 driver and modules as following.
This installation time is an hour.

a Xion, a Webcam, and a Webcam on the Raspberry Pi

(1) Buliding Prerequisites
[root@rcmp-r03 ~]# pacman -Syu
[root@rcmp-r03 ~]# pacman -S gcc
[root@rcmp-r03 ~]# pacman -S make cmake pkg-config
[root@rcmp-r03 ~]# pacman -S libusb
[root@rcmp-r03 ~]# pacman -S python2
[root@rcmp-r03 ~]# pacman -S freeglut
[root@rcmp-r03 ~]# pacman -S doxygen
[root@rcmp-r03 ~]# pacman -S graphviz
or
pacman -S gcc make cmake pkg-config 
pacman -S libusb python2 freeglut doxygen graphviz 

(2) Download  & uncompress OpenNI2 source. (branch:develop 2.1.0.4)
(26 Jan, 2013 : Both the 'master' and 'develop' were up-to-date.
It's necessary to confirm the version of  branches.) 
Please download a source zip file form Here.
  Download > OpenNI 2.0 source code is available on GitHub > branch develop
Assuming an installation directory "~/OpenNI2-develop".

(3) Set  compiler options for the ARM1176JZF-S
ARM compiler option web-site. HERE 

[root@rcmp-r03 ~]# cd OpenNI2-develop/ThirdParty/PSCommon/BuildSystem
[root@rcmp-r03 BuildSystem]# vi Platform.Arm
[root@rcmp-r03 BuildSystem]# cat Platform.Arm

ifeq "$(CFG)" "Release"
    # Hardware specifying flags
    #CFLAGS += -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp #-mcpu=cortex-a8
  CFLAGS += -mtune=arm1176jzf-s -mfloat-abi=hard
    # Optimization level, minus currently buggy optimizing methods (which break bit-exact)
    #CFLAGS += -O3 -fno-tree-pre -fno-strict-aliasing
    # More optimization flags
   # CFLAGS += -ftree-vectorize -ffast-math -funsafe-math-optimizations -fsingle-precision-constant
endif

(4) Build
[root@rcmp-r03 OpenNI2-BuildSystem]# cd ../../..
[root@rcmp-r03 OpenNI2-develop]# make                             20-30 minites

(5) Packaging 
[root@rcmp-r03 OpenNI2-develop]# cd Redist
[root@rcmp-r03 Redist]# vi Redist.py
Line : 534
before
compilation_cmd = "make -j" + calc_jobs_number() + " CFG=" + configuration + " PLATFORM=" + platform + " > " + outfile + " 2>&1"
        if compilationMode == 'Rebuild':
after
compilation_cmd = "make -j1" + " CFG=" + configuration + " PLATFORM=" + platform + " > " + outfile + " 2>&1"
        if compilationMode == 'Rebuild':

[root@rcmp-r03 Redist]# ln -s /usr/bin/python2 /usr/bin/python
[root@rcmp-r03 Redist]# python ReleaseVersion.py arm      3 -5 minites
[root@rcmp-r03 Redist]# cd Final
[root@rcmp-r03 Final]# ls
OpenNI-Linux-Arm-2.1.0.tar.bz2

(6) Installation
[root@rcmp-r03 Final]# tar -jxvf OpenNI-Linux-Arm-2.1.0.tar.bz2
[root@rcmp-r03 Final]# cd OpenNI-2.1.0-arm
[root@rcmp-r03 Final]# sh install.sh


(7) Environment variable

[root@rcmp-r03 Final]# export OPENNI_DIR=/root/OpenNI2-develop
[root@rcmp-r03 Final]# export OPENNI2_INCLUDE=$OPENNI_DIR/Include
[root@rcmp-r03 Final]# export OPENNI2_REDIST=$OPENNI_DIR/Redist


(8) Testing
[root@rcmp-r03 Final]# cd Samples/Bin
[root@rcmp-r03 Bin]# SimpleRead
[00000000]        0
[00033369]        0
[00066738]        0
[00100107]        0
[00133477]        0
[00166846]        0
[00200215]        0
[00233584]        0
[00266954]        0
[00300323]        0
[00333692]        0

Success!

peace!