2013年9月30日月曜日

An installation of lighttpd which is light http server for my robots.

HTTPサーバは、Monkeyを使っていたのだが、CGI関連が不安定、情報が少ない、

などの点から、この際、lightthpdに変更。

I had used a Monkey HTTP Server. But CGI  processing was instability, less information of community...
So I decided to change to lighttpd.
This post is how to describe  /etc/lighttpd/ligthttpd.conf.

A setting of lighttpd server is easy.

(1) pacman -S lighttpd

(2) edit a /etc/lighttpd/lighttpd.conf file referring /usr/share/doc/lighttpd/config/conf.d/cgi.conf.

# This is a minimal example config
# See /usr/share/doc/lighttpd
# and http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ConfigurationOptions

server.port = 80
server.username = "http"
server.groupname = "http"
server.document-root = "/srv/http"
server.errorlog = "/var/log/lighttpd/error.log"
dir-listing.activate = "enable"
index-file.names = ( "index.html" )
mimetype.assign = ( ".html" => "text/html", ".txt" => "text/plain", ".jpg" => "image/jpeg", ".png" => "image/png", "" => "application/octet-stream" )

server.modules += ( "mod_cgi" )

##
## Plain old CGI handling
##
## For PHP don't forget to set cgi.fix_pathinfo = 1 in the php.ini.
##
cgi.assign                 = ( ".pl"  => "/usr/bin/perl",
                               ".cgi" => "",
                               ".sh"  => "/usr/bin/bash",
                               ".rb"  => "/usr/bin/ruby",
                               ".erb" => "/usr/bin/eruby",
                               ".py"  => "/usr/bin/python" )

Peace!!

2013年9月29日日曜日

Raspberry Pi vs BeagleBone Black, as platform of OpenNI2 and Xtion

ロボットには、Xtionを使っている。

RasPiと、BeagleBone Black どちらが良いか?

ただし、これは、僕が所有しているモノでの比較。

OpenNI2を使って、Xtionから各種のデータを取得するのは、負荷の高い処理である。

従って、両者の性能が直に現れる。

カタログ上では、BBBの方が性能が良いのであるが、

どうも、Raspiの方が、トータルのバランスが良いようだ。

これは、ネットの情報を見ていても、感じるところ。

従って、Xtionで、Stream(Depth, Color)を扱うと、

BBBは、不安定になることが多発する。

たまたま、僕が持っているBBBが、そうなのかもしれないが、、、、、

まぁ、それぞれ、僕が使っているような、ハードな使い方を想定したものではないので、

あくまでも、イレギュラーな使い方かもしれないが、、、、、

しかし、いずれにせよ、無駄なソフトと機能満載の、Windows系のパソコンよりは、

どちらも、Coolなマシンであることは、確か。

マシンの限界付近で、システムを作ることは、創造力がないとできない。

と、自分を励ましながら、苦闘している。

BBBも、RasPiも、、、、

Peace!!

2013年9月28日土曜日

How to set color and depth resolution of Xtion

This post is my memorandum.

// Create Depth stream
openni::VideoMode depth_mode;
depth_mode.setResolution( 320, 240 );
depth_mode.setFps( 30 );
depth_mode.setPixelFormat(openni::PIXEL_FORMAT_DEPTH_1_MM );

rc = depth.create(device, openni::SENSOR_DEPTH);
if (rc == openni::STATUS_OK){
rc = depth.setVideoMode(depth_mode);
rc = depth.start();
if (rc != openni::STATUS_OK){
printf("SimpleViewer: Couldn't start depth stream:\n%s\n",
openni::OpenNI::getExtendedError());
depth.destroy();
}
} else {
printf("SimpleViewer: Couldn't find depth stream:\n%s\n",
openni::OpenNI::getExtendedError());
}

// Create RBG Stream
openni::VideoMode color_mode;
color_mode.setResolution(  320, 240 );
color_mode.setFps( 30 );
color_mode.setPixelFormat(openni::PIXEL_FORMAT_RGB888 );

rc = color.create(device, openni::SENSOR_COLOR);
if (rc == openni::STATUS_OK) {

rc = color.setVideoMode(color_mode);
rc = color.start();
if (rc != openni::STATUS_OK) {
printf("SimpleViewer: Couldn't start color stream:\n%s\n",
openni::OpenNI::getExtendedError());
color.destroy();
}
} else {
printf("SimpleViewer: Couldn't find color stream:\n%s\n",
openni::OpenNI::getExtendedError());
}

2013年9月27日金曜日

Replace wireless router from WZR2-G300N to WZR-450HP-C

最近、ネットがらみのトラブルが多いので、思い切ってルータを更新した。

ネットを検索すると、WRZ-450HP-Cが良さげなので、Amazonでポチ

一日後に、来た。

クライアントのPCの設定を変えたくなかったので、

SSID、
WPA/WPA2 mixed mode - PSK TKIP/AES mixed mode

同じにして、設定。

ネットの速度は、体感的にUp

値段も、こなれていてよかった。

あと、ルータ設定画面の、同じメーカで、基本的に同じだったので、

迷わずに、オペレーションできたのは、とっても良かった。

結構、こういうことで、時間を使うもんね。

Peace!!

2013年9月26日木曜日

BeagleBone Black ethernet troubles libphy

結局、eth0の、ハードエラーでした。海外の通販でしたが、交渉しました。

購入間もなかったので、交換していただきました。

以下の投稿は、eth0 が使えない状態で、

つまり、ネットが使えない状態( pacman が使えない)

で、SDカードに無線LANに必要なモジュールを別途を用意して、

無線LANを立ち上げる方法です。

ということで、あまり参考にならないかもしれません。



[    9.352891] net eth0: phy found : id is : 0x7c0f1
[    9.392877] libphy: PHY 4a101000.mdio:01 not found
[    9.392903] net eth0: phy 4a101000.mdio:01 not found on slave 1
[    9.435351] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready

上記のメッセージが出て、eth0が使えなくった。

ネットで調べても、このエラーの解決策が無いようだ。

ただ、ハードのエラーではないようなので、まぁ、バグが治るまで待つとする。

不思議なもので、忙しい時ほど、このようなエラーが発生する。

これに関連してか、ArchLinuxも起動しなくなり、再インストールすることにした。

しかし、eth0が使えない。

再インストールの時に、ネットが使えないと話にならないので、

次のように無線LANを使えるようにして、環境の再構築を行った。


1. SDカードにイメージを展開する。

これは、ArchLinuxarm.orgのBeagleBone Black (BBB)の手順で作成する。

2.無線LAN用パッケージのダウンロード

http://os.archlinuxarm.org/ より、libnl, wpa_supplicant, wire-toosのパッケージを

ダウンロードする。

3.SDカードに無線LAN用の環境をコピー

2項のパッケージと、各種設定を SDカードにコピーしておく。

/etc/wpa_supplicant/wap_supplicat.conf,  /etc/systemd/system/networkw.service,

/etc/conf.d/network

4. BBBの起動と、パッケージのインストール

SDカードから、ArchLinuxを起動する。次に、上記のパッケージをインストールする。また環境ファイルもインストールする。

5.無線LANを起動

systemctl enable networkw.service
systemctl start networkw.service

6. Update

pacman -Syu

pacman -S wpa_supplicant wireless-tools --force

強制的に、上書きインストールする。

これで、終了。

eth0の件は、様子見。

dhcpcd関連は、決して、いじってはいけない。

peace!


2013年9月22日日曜日

Developing a new robot. Today's photo.


一応、基本となる筐体と機構系が終わり。結構、試行錯誤したなぁ。

大きさは、長さ方向で、40㎝位。このレベルであれば、乾燥しための詰まった木材を

構造材につかって大丈夫。ただ、ちょっとした補強は、必要だけど、

それは、アルミで作っても同じかぁ。

木材といっても、精度は必要だから、木材を「のこぎり」で切るみたいな事はしない。

今回はね。

将来的には、サポート材で補強するので、のこぎりで切っても大丈夫なようになります。

しかし、シンプルにスマートに作るのは、大変だ。でも、それが楽しいのよ。

趣味レベルなら、苦労しないけど、今回は、いろいろ実務で使うので、、、、

これまでも、仕事で製品開発したけど、製品レベルの品質を考えながら作ると大変。

あとは、電子系の搭載と、テストだぁ。

Bodyも作らないと、、、いろいろあるなぁ。

3D Printerの出番は、これから、、、、


ところで、ロボットは、次の要素が必要だけど、これでは、一台を動かすだけ。

・機構設計、筐体設計・開発

・電子部品設計・開発

・制御ソフトウェア設計・開発

僕は、仕事を楽にするために作っているので、これだけでは役に立たない。

論理的には数万台のロボットが、それぞれの役割を理解して、

協調作業してもらわないとならない。

それを実現するために、RDCSと呼ぶロボット運用プラットフォームを開発している。

RDCSの基本となるアイディアは、2000年に発表し、

それに基づく、最初の製品は、2007年には数百社の上場企業に導入されている。

さらに、そのノウハウを、含めて、ロボット運用を実現できるようにした。

僕は、こういう、ミドルウェアというか、プラットフォームシステムの開発が

一番楽しい。考えれば、そんなことばかりしていた。

ただし、僕の専門は、ITじゃなけど。専門は、もっと社会科学的な事。

最近の日本は、アメリカのミドルウェア上のアプリケーションを作るだけのソフト開発が多い。

だから、アンドロイドのアプリケーション屋、SAP屋、 XX屋さんさんが多い。

これから、ずーっと、日本のIT業界はそれでよいのだろうか?

僕の経験でいえば、アプリケーションであれば、シンガポールでITエンジニアをhireして、

一騎に開発した方が、早くて、安くて、品質が良い。中国でもそうだなぁ。

日本のIT業界や、IT技術者は、どこに向かうのだろ。

優秀なIT技術者は、どんどん日本を出ていく。

僕は、重要なIT技術を開発をした米国企業の日本の会社にいた。

だから、米国流のITビジネスや、開発手法を学ぶ機会を得られた。

実際に実践もしたし、やはり、最高に良かった。そして、今もその作法で開発している。

それを、知っているから、優秀なITエンジニアは、米国のIT業界で腕を磨くべきだと思う。

でも、そういう人は、日本に帰ってこないのよね。

話、ずれたなぁ。こういうときは、疲れている。寝よう。

でも、日本のIT業界は、どうなるんだろうね。

そうそう、ミドルウェアや、プラットフォームを開発するには、

その前に決めておかなければならない大切な事がある。

Peace!

2013年9月20日金曜日

Assembled robots parts using servo, wood and 3D printer products

いろいろ、仕事がありロボット作りも、遅れ気味。

ロボットは、材料の入手性や加工性を考えて、乾燥した木材を構造材に使っている

ある大きさのロボットまでは、木材で十分。

木材の材料力学的な特性は、よく理解されていないが、圧縮以外は、

金属などと比べて大きな問題にはならない。だって、大きな木造構造物が、

数百年も建っているいるでしょ?

このパーツは、足の部品。

サーボへの外力の負荷を極力少なくするように、作った。今の時点で、、、

木材と、ABS樹脂の特性を組み合わせ、All Weather Typeを意識するとこんな感じ。

All Weatherを意識しなければ、もっと簡単だよ。

少し、頑張らねば。。。

ところで、3D Printerでの出力は、infill指定のため合計で4時間。



ついでに、ボディー

どうしても、尾翼が欲しい。

Peace!!

2013年9月13日金曜日

Testing parameters of MakerWare which generate 3D printer data from Blender stl data.

 現在、ロボットの為に、いろいろな部品を作っているが、どうも、思ったようにできない。



特に、100%樹脂で内部が充填された部品が作れない。

よく考えてみると、Belenderとの設定と、そのデータから3D Printerのデータを生成する

MakerWareの設定との関係を整理していないことに、気づき取り急ぎ検証をした。

最初に出力したモノは、悲惨な状態であった。

その理由は、Blenderで表面の厚みの設定を指定していなかったからだ。

よって、Parameter > add Modifier > solidify で厚さを設定することによって、

厚みを持ったモノの出力ができるようになった。

ところが、軸材の出力をしようとして、厚さをWireframe画面をみながら設定しても、

内部が充填されたものができない。

テスト内容

Blenderの、Solidify設定値と、MakerWareのInfill, Number of shells, Layer Heightの関係を

調べる。このうち、Layer Heightは、射出される樹脂の太さ理解できるので、

この値は、0.40mmと固定した。

残りのパラメータで、組合わせを考えて、テストを行った結果が下の写真である。

1cm四方の立体をパラメータを設定して出力する。

テストのため、Z軸方向で半分程度(0.5cm)で中断して断面を確認する。


確認できたこと。

(1) MakerWareは、厚みで指定された部分に対して、Infillパラメータの値を設定する。
(2) Shell設定は、ロボット部品の様に精度が必要な場合には、”2”を固定値とする
(3) 全体を充填する場合には、Solidifyを指定せずに、Infill 100%とすれば、
      精度の良い成果物が得られる。

その他、沢山、沢山   あ~ぁ 疲れた。


今回のテストは、遅きに失したのであるが、重要なポイントである。

反省しながら、前に進む。

Peace!!

Resolved an initial failure of Replicator 2X

実は、いくつかの初期不良があって、MakerBotのサポートとメールでやり取りをしていた。

たとえば、最初の写真。

これは、ヘッドの回りにあるセラミックの欠片。

最初から、欠けているのは、反則でしょう。

で、

Shippingした連絡があったので、やっと届いた。

開けてビックリ、ヘッドが丸ごと。

とっても、得した気分。。。だって、分かるでしょ!

ワイルドとは、この事か?

ワンコも、びっくりしてヘッドの上に駆け上がった。



Peace!!

2013年9月10日火曜日

Context DB. It's my Knowledge Process Bank.

いろいろな開発をすると、日常的にいろいろなアイディアが生まれ、

それを、記録したりする。ほとんどは、メモだし、断片的だし、実際に使うのは、

そのうちのほんのわずか。

でも、実は、そのメモが発生するプロセスが大事だと思っている。

大げさに言えば、発想の過程。

それに、歳をとると、記憶力も落ちて、あっ、なんだっけ。

なんて、日常茶飯事。

それで、文脈データベースを作って、自分なりに解決することにした。

で、Nexus7の高性能によって、実現した。

結果、20年以上使っていた手書きの手帳と、万年筆にお別れを告げることになった。


これまでの、手帳に書いていたものを、

Nexus7で手書きで書くと、内容を解析して、

Contentだけではなく、Contextにも着目して、

文脈を可視化する。

文脈を俯瞰もできるので、Contextをたどれる。

Contentも見れる。

ロボットを設計する発想の過程を可視化したものが、上の図。

だから、「あれ、なんだったけ」と、いうことも、もうない。

忘れても、大丈夫。

もう、ぼけた。なんて言わせないぞ。なんちゃって。

//peace!


How to use MakerBot Replicator 2X (4)

今回のロボットのコンセプトは、All weather and Anywhere

つまり、雨から、電子部品を保護する必要がある。

特に、足部分のサーボなどの保護が重要になる。

そうなると、やはり部品の見直しが必要になるし、

部品の形状に合わせて、設計も変えないとならない。

コンセプト(設計要件)に対して、このような試行錯誤が、

これまで設計開発の大変なところだった。


写真のような部品を作るのでも、寸法を変えながら調整していくと

大変な工数。でも、3D Printerなら、Blenderで変えて、ほいっと出力するだけ。。

実際のモノがあれば、考えるもの、ものすごくラク。

だから、余計な事を考えなくて、設計もスピードアップ。

良い方向に回転する。

やっぱ、3D Printerは、すごいぞ。

それに、Blenderもすごいぞ、、、

Peace!!

2013年9月9日月曜日

We will show our robots at Kansai Open Forum 2013.

11月8、9日に、関西オープンフォーラムに出展します。

場所は、大阪南港ATC 10F です。ご興味があれば、お越しください。

https://k-of.jp/2013/session/440

出展内容は、Maker Faire Tokyo 2013と同じです。

Peace!

2013年9月8日日曜日

Strength assessment of a small part made by 3D printer

僕は、ロボット開発の生産性を高めるために、3D Printerを使う。

それは、設計方法、および生産方法ともに、3D Printerを使った方が、

生産性向上につながるからだ。

気になるのは、作った部品の力学的強度。

で、小さな部品を作って、試してみた。う~ん、スゲー。

僕のロボットには、十分だ!!

小さな部品に、2Kgの重りをつけて、3時間。。。

途中で、犬は、寝床に行った。


 

Peace!!

New design. All weather and Anywhere

Below snapshot is a new design of robot which exhibit at Maker Faire Tokyo 2013.


A design concept is "All weather and Anywhere".

Peace!

2013年9月7日土曜日

Harvest red peppers.

Today it was our last harvesting of red peppers.



Peace!

We will show our robots at Maker Faire Tokyo 2013

Maker Fiare Tokyo 2013 にロボットを出展します。

11月3日、4日 日本科学未来館、 タイム24ビルです。

出展の審査を通ったの、うれしいーーぃです。

プレゼンテーションもするかもしれません。

展示するロボットは、こんな感じ
http://robot009.blogspot.jp/2013/09/new-design-all-weather-and-anywhere.html

あと、トマト栽培情報取集ロボットも展示するよ。

あと、RDCSも、、、、、

peace!!

2013年9月5日木曜日

New robot project

We started a new robot project.

A feature of this project  is "All Weather, Anywhere".

And  the project code is "AWA".

なんちゃって、

と、いうことで、新しいロボットの開発を、始めます。

部品も買ったし、設計もちゃんとしているよ。(^^)/



peace!!

2013年9月4日水曜日

A collection of Videos and Photos

This post is a collection of my robot videos and photos.


1. Video

(1)  4 Legged root   (7 Dec. 2012)

https://www.youtube.com/watch?v=9fNWJ6P22lk

(2) Comming soon

2. Photo

















2013年9月3日火曜日

How to use a MakerBot Replicator 2X (3) Raspberry Pi Supporter

僕は、一台のロボットに複数個のRaspberry Piを使う。

ホコリ対策もあり、ケースに入れるけど、ご承知のようにかさばる。

また、この図のようなロボットを作るには、限られた筐体のなかにRasPiを格納しなければらない。

11月に発表します。ウヒヒィ、、、
そのために、固定用のサポータを作った。


これは、45度の角度。GPIOピンをいじれるようにしてある。
ロボットに使うので、HDMIは使わない。でも、90度傾けると使えるようになっている。
下の紙は、座標計算した紙です。
RasPiを斜めに立てているけど、下の部分をネジや両面テープで、どこにでも固定できる。

上記のロボットの内部のふたの裏に、さかさまにして固定している。

たとえば、机の下とかにRaspiをくっつけることもできる。斜めに立てるので、限られた場所に

複数格納ですることが可能。

こういう場合には、60度くらいがいいかも。でも、複数いれられるので、
ロボットがコンパクトになった。
(1) 手書きで、デザインを決めて、基本となる座標計算をする。

(2) Blenderに入力して、検証をしながら、STLデータを作成

(3) MakerWareで、プリンターデータに変換する。

(4) Replicator 2X で、出力する。

Blemderで、データ作成。これはレンダリングしている。
本当は、レンダリングは、必要ない。
こんな感じ、所要時間は、2時間

「あったら、便利」 が、すぐできちゃうなんて、やっぱりすごい。

3D Printer の、本当の価値は、この「機動性」にある。

自分の家が、工場になるって、やっぱ、3D Printer すごい。

Peace!

2013年9月2日月曜日

Google で、" トマト農家 " と検索すると、、、、

Googleで、”トマト農家”と検索すると、

なんと、このブログが1ページ目に、出現する。

ご覧いただいている、みなさんのおかげです。

ありがとうございます。

僕も、トマトを作っているので、、、、

でも、複雑な感じ、

僕のtomato-farm.comは、出現しない。。。

正直に、うれしい、と、しておこう。

このブログは、一度、中国と韓国からの攻撃(大量のアクセス)がありました。

RDCSの資料や、一部のpostの非公開をし、一時投稿も少なくしました。

攻撃的なアクセスは減少してきましたが、気持ちが悪いので、

ロボットネタは少なめにしています。

その分、日々の出来事や、ロボット開発のための技術について書いています。

率直に書いているので、ちょっと過激な内容もありますが。ご容赦ください。

11月には、ロボットを発表しようと思っています。

今後とも、よろしくお願いいたします。

peace!


2013年9月1日日曜日

How to use a MakerBot Replicator 2X (2)

MakerBotのReplicator 2X のマニュアルも最小限の事しか書いていない。

マニュアルは、はっきり言って初めて触る人が理解できるように、書いていない。

自分なり整理の第二弾。

3D Printerのモデリングデータ(.stl)が、できた後の手順と設定を自分なりに整理。



説明のデータは、MakerBotのThingiverseから、ダウンロードした下記のデータです。

It's Miku!   by teamtestbot, published 

このデータを使ったのは、友達がミクが欲しいと言っていたので、

誕生日プレゼントで出力する必要があったから。

基本的な手順は、次の3つ。

手順1 MakerWareで、3D Printerデータ生成

手順2 Riplacator 2Xで出力

手順3 Raft、Supports の除去


手順1
 MakerWareに、STLデータを読み込んで、出力設定をする。


起動して、データを読み込むところまでは、省略します。

画面の「M」ボタンを押下すると、上の設定画面が現れます。

大切な項目は、Raft、Supports、Layer Heightの3つ。

"Raft" と "Supports"を指定しています。

Resolutionという意味とは、まったく関係ない項目。

Raft は、出力する”モノ”を置く、敷物みたいなものを、出力するか、しないかの指定。

下の写真の一番したの平べったいもの。

これが結構大事で、ABSの場合、直接Plateに出力するより、この上に出力した方が良い。

直接Plateに出力すると、Plateの熱により剥がれたりして、悲惨なことになる。

僕は、経験上(4日だけど)、必ず指定している。Plateが冷めてから、Raftを摘まんで

少しづつ出力した”モノ”をはがしながら、取り出す

出力直後は、Plateに密着している。冷めてから、丁寧に剥がす。

Supports は、Plateと、出力する”モノ”の間に支持する部分をソフトで生成するときに設定する。

下の写真は、出力するデータを横からみもの。

この場合、Plateに接しているのは、右下のみである。

下から、3D Printしたときに、左部分が作成できなし、全体が出力する前に、倒れてしまう。

そうならないように左したに支持する部分を作らないとならない。

もちろん、モデリング時点で作ることも可能であるが、

そんなことをするより、Supportsで指定すれば自動的に作ってくれるので、手間がかからない。

また、モデリングも本来のデータだけで済む。

MakerWareの画面。よくできたソフトウェア
このような、ソフトウェア含めて、MakerBotのノウハウは、他のメーカには無いと思う
もちろん、ピラミッドのような、底面がPlate全体に接するものは、必要ない。

この2点が、マニュアルには書いていないが、実際の出力をするときには大切な事。

Layer Heightは、ヘッドから射出するABSの厚さ。この厚さが、薄ければ表面はなめらになり。

値が大きければ、表面は段差が付くようになる。下の写真では、判別しにくいかもしれないが、

下の写真は、上の写真のLayer Heightの、2倍の値で指定しているので、顔のひだが少ない。

つまり、荒い。

時間も、ほぼ2倍かかる。従って、0.1mmと、0.2mmと、フィギュアなどの時に使うくらいか、

その方が、着色前の表面の研磨が楽になると思う。

ロボットの部品は、比較的直線も多く、大きいので0.4mm以上で良いのではないかと思う。

ただし、強度の関係があるので、そこま経験的にノウハウを蓄積する必要がある。

Layer Height  0.2mm     出力2時間
Layer Height 0.4mm    出力1時間

これ以外の項目は、大体わかるし、変更する必要もない。

私は最初に、この3つを理解していなかったので、2日間試行錯誤した。

手順2 Replicator 2X で出力

これは、もう単純で、MakerWareが作成した、4データをSDカードにいれて出力指示するだけ。

ただし、出力の最初3分から5分くらいは、見ていた方が良い。おかしかったら、cancelする。

手順3 Raft、Supports の除去

ABSの場合には、Plateが110度に加熱されているので、冷めるのをまってPlateから

丁寧に剥がす。その後は、以下の写真を参照して、Raft、Supportを取り除いて下さい。

よく切れる道具を使ってください。


Raft と、 supports が付いている
垂れ下がっているように見えるのが、 supports
Raft (right)
supports を取り除く
とりあえず、こんな感じ、
着色するためには、研磨する必要がある。
Peace!!