2013年12月30日月曜日

I wish you a happy new year.

このブログを、ご覧のみなさん、2013年ありがとうございました。

結構いい加減な、個人的なブログなので、内容も定まらず、

常識に欠ける内容もありましたが、それは、それということで、

お許しください。というか、いやなら、たぶんこの投稿も読まれてないですね。

こんな私に、おつきあい頂きまして、ありがとうございました。

来年は、なんと、Big projectに、巻き込まれることになり、

ひょっとすると、ロボットが、、、、

いえいえ、努力します。

ロボットの継続的な開発と、発表

そして、本業のトマトと、大車輪のように、くるくる回って過ごします。

50歳で、人生のリセットボタンを押して、のんびり農業をしながら、

読み貯めた本を、再度、読みながら生活しようと思いましたが、

結局、なんだかんだとやりだし、この始末。 ちなみに、2万冊ぐらいあるよ。

挙句の果ては、まだ、言えませんが、ぎゃああってなプロジェクトに巻き込まれることになり、

結局、バタバタ。。。

だったら、リセットボタン押さなければよかった??

やりたくない、管理職で、定年まで、、、そんなこと、私にはできない、

だって、自分らしくない。

リセットボタンを押すのは、気合がいるけど、、、、

その後も、いろいろ大変だったけど、

やはり、自分らしく、生きていけるのは、最高のストレスフリー。

一回だけの人生、体力があるうちに、自由に生活するのが、最も贅沢かもと、、、

お金は、サラリーマン時代より減っているけど、ほどほどの生活できるので、良した。

定年になって、いろいろやっても体力は無いし、美味しいもの食べようと思っても、

歳とりゃ、味覚も衰え、だから、味も濃くなり、塩分も濃くなる。

美味しいもは、若いうちに食べるのが一番。

これも、金の無い僻みか、屁のツッパリかもしれませんが、

大方、そんなもんでしょう。それに、人間、いつ死ぬかもわからない。

この歳になれば、それは体験的に理解できるようになる。

「いつ死ぬか、わからない」



今を、MAXで生きるのがいい。でも、それって結局いい方向にいく。

MAXで生きていれば、単位時間当たりの作業量や、人との出会いの量も違うわけで、

結局それが、良い方向に回転する。

趣味なんてするんだったら、仕事をした方が良い。



なんか、年の瀬に変な事書いているけど、、、

しかし、ロボットで農業するなんて、本に書いたり、フェアーでいったり、

良くまぁ、、、って感じですね。でも、言ったらやらなちゃならない、

強烈な自分へのプレッシャーになる。実は、本当にしんどいよ。

僕には、組織も、金もない、

あるのは、これまでの自分の経験と、脳味噌だけ、しょうがないから、

この無料の道具をフル回転させて創るしかない。苦しいよ、苦しいよ。。。。

人がやった事ないことだと、ツールからして、自分で作らないとならない、

何にもないから、そんなところから、大変、、、、、

でも、まだ、他の人が実現出来ていない事を、先に、やった時のの快感は最高!!

この快感を、20代から何回も味わってきた、、、、中毒です。

ただ、今回は、これで最後にしようと、思ったら、

最も遠いところにあった夢のBig Projectが、来ちゃった。

人間の人生は、よくわからない。


人生は、自分の為にある。しかし、お金も必要だし、一人で生きていうわけでは無いから、

生きたいようには生きれない。

しかし、大切なのは、自分の人生は、自分だけのものだし、

かならず、諦めない、自分の生き方を、小さくても、突き通すこと。

目線を上げて、愚直に突き通すこと。そうすれば、自分だけしか見えない

世界が見えてくるし、それを手に入れることができる。

それには、小さいも、大きいもない。

なぜなら、その人しか獲得できない、人生の価値だから。

でも、そのプロセスを実行している人には、良い影響を及ぼす人が現れる。

必ず、吸い寄せられるように、現れる。その結果、ステージが変わる。

そして、次のステージでも同じように繰り返しが起こる。

その人の人生の価値に近づいていく。



来年も、僕は突き通して、生きていく。

だって、僕は、まだ自分の人生の価値を手に入れいない。

そして、その価値が何なのかも、まだわからない。

手に入れるまでは、突き通していくしかない。



2014年、良い年になりますように。

ありがとう。

2013年12月29日日曜日

Surprised !!

ビックリした!!!

農業でも、ロボットでもないに、お呼びがかかった。

まだ、詳しくは書けないけど、、、、、


宇宙


ぎゃーーーー、取り乱しているだけです。

人との出会いは、本当に不思議です。

出会いは、大切にしなければ、

1月中旬以降に、詳しくご報告を。

Peace!!

2013年12月27日金曜日

Developing new image database

2013年も、いよいよ押し迫り、一方で、畑仕事、2月の講演準備、4月の公開などで、

超大忙しでしゅ。

ところで、いろいろ開発しなければ、ならず、、、、、

今は、画像データベースエンジンの開発。

これは、お決まりのOpenCVと、KD木などを活用した検索エンジンの組合わせ。

テストのデータは、お決まりの

http://www.vision.caltech.edu/Image_Datasets/Caltech101/Caltech101.html

を、感謝しながら使わせていただいております。

ただし、開発初期の段階だけです。

理由は、

(1) 私は農家なので、対象が、トマトなどの作物、虫、雑草など。

      パラメータ設定などが違う。

(2) もう少し、大きなサイズも対象になければならないので、、、

などなど、

結構、データ作成から始まって、大変ね。

流石に、i7  マシンは早いけど、、もちろん対象は、Raspberry Piか

BeagleBone Black だよーん。このチューニングが大変。

大変ね、この画僧?、いえいえ画像データベース。







ところで、この画像データベースは、

もちろん、クエリーは、画像よ。

画像で、画像や、ほかの情報を検索するのね。

I/Fは、開発中なので、今度ね。

Peace!!

2013年12月26日木曜日

How to build an opencv 2.4.7.2 (mingw) on windows 8.1

Windows上に、最新のOpencv2.4.7.2を展開したら、

何ということでしょう? minigw 対応のライブラリーがない。

で、Build のメモ、いろいろかき集めて、メモとして保存。なくなると困りそうなので、、、

opencvは、E:\opencvに展開する。cmakeもインストールしておく。

(1) Download and install MinGW and add to the system PATH with  c:\mingw\bin

(2) Download OpenCV2.4.7.2 Windows version

(3)  Install Opencv to E:\opencv  (README,index.rst and CMakeLists.txt are here with all subfolders)

(4)  Run CMake GUI tool

(5) Choose E:\opencv\sources as source

(6) Choose the destination, E:\opencv\build\x86  where to build the binaries

(7) Press Configure button, choose MinGW Makefiles as the generator. There are some red highlights in the window, choose options as you need. 

(8) Press the Configure button again. Configuring is now done.

(9) Press the Generate button.

(10)  Exit the program when the generating is done.

(11)  Exit the Cmake program.

(12) Run the command line mode (cmd.exe) and go to the destination directory E:\opencv\build\x86

(13) Type "mingw32-make install" (without quotation marks). You will see a progress of building binaries. If the command is not found, you must make sure that the system PATH is added with c:/mingw/bin. The build continues according the chosen options to a completion.

(14) In Windows system PATH (My Computer > Right button click > Properties > Advanced > Environment Variables > Path) add the destination's bin directory, E:\opencv\build\x86\mingw\bin

(15) Go to the Eclipse CDT IDE, create a C++ program using the sample OpenCV code 


(16)  Go to Project > Properties > C/C++ Build > Settings > GCC C++ Compiler > Includes, and add the source OpenCV folder (including quotation marks) "E:\opencv\build\include"

(17) Go to Project > Properties > C/C++ Build > Settings > MinGW C++ Linker > Libraries, and add to the Libraries (-l)ONE BY ONE (this could vary from project to project, you can add all of them if you like or some of them just the ones that you need for your project): 

opencv_calib3d247
opencv_contrib247
opencv_core247
opencv_features2d247
opencv_flann247
opencv_gpu247
opencv_highgui247
opencv_imgproc247
opencv_legacy247
opencv_ml247
opencv_nonfree247
opencv_objdetect247
opencv_photo247
opencv_stitching247
opencv_video247
opencv_videostab247

(18) Add the built OpenCV library folder (including quotation marks),  "E:\opencv\build\x86\mingw\lib" to Library search path (-L)

Peace!!


-------------------------------------------------------------------------------------
#include <opencv/cv.h>
#include <opencv/highgui.h>
#include <opencv2/nonfree/nonfree.hpp>
#include <iostream>
//#pragma comment(lib,"opencv_nonfree24.lib");
using namespace std;
    cv::initModule_nonfree();

------------------------------------------------------
//#include <cv.h>
//include <highgui.h>

#include <opencv2/opencv.hpp>
#include <opencv2/legacy/legacy.hpp> // cvCreateKDTree, cvFindFeatures, cvReleaseFeatureTree
#include <opencv2/legacy/compat.hpp> // CvSURFParams, cvExtractSURF
#include <opencv2/nonfree/nonfree.hpp> // cv::initModule_nonfree

//cv::initModule_nonfree();

2013年12月23日月曜日

Release new 4 Dimensions Space Database (2)


RDCSとの関係の補足説明です。

4DSは、

(1) 空間に存在する実体オブジェクトの連続、不連続な時間の状態を管理できます。

(2) オブジェクトの時空にわたる位相関係

(3) RDCS上に実装された物体認識機能などの各種機能により、

      効率的に実体データを生成する。

(3)に感しては、こんな感じ(一般論的だけど)


2次元のGISにしてもそうだし、


特に、空間データを扱う場合には、

そのデータをどのように作るのか、メンテナンスするのか?

それらとセットになってリリースされないと、活用することはできません。

機能だけ、揃えてもだめね。

だから、今は、RDCSと密結合状態。

たぶん、Version2にそれぞれ分離すると思います。

Peace!!

Release new 4 Dimensions Space Database

4次元空間データベース(4DS)のVerion1をリリースします。

といっても、正式発表は、来年の2月ね。

これまでは、GISにしても、基本は2次元。

3次元でも、ある瞬間の切り取り。

4DSは、オブジェクトの連続、不連続な時間の状態を管理できます。

たとえば、

最初の収穫対象

成熟中の 次の収穫対象も合わせて表示



苗の生産した実をすべてみる。

あるトマトの苗の、最初の着果した実から、最後の収穫された実までの

経過を管理することができる。

4DSと、収穫ロボットが連動することにより、自動的にトレーサビリティーを実現できる。

確かに、これまでのようなRDBで管理する方法もあるけど、

4DSは、一つのObjectで時間の中の変異を管理できる。

もちろん、差分管理をしているので不必要にデータが大きくなることもない。

検索は、K-D木とハッシュを使い高速化を図っている。

ということで、やっと、今年も終われる。

補足は、、、、、
http://robot009.blogspot.jp/2013/12/release-new-4-dimensions-space-data-2.html


Peace!!

Memo : OpenSift

Raspberry Piで、OpenSiftを使う時のメモ

Raspberry Piでの、限りなくリアルタイムに近い、物体認識に挑戦。

無謀だなぁ。。。


(1) OpenCV、GTK+2 、インストールする


(2) OpenSiftをダウンロードして、解凍する

http://robwhess.github.io/opensift/


(3) ディレクトリーを作って、次のソースを取り出す

imgfeatures.c  imgfeatures.h  sift.c  sift.h  siftfeat.c  utils.c  utils.h

あと、テスト用のイメージも

(4) Makefileを作る

TARGET = siftfeat
CC = gcc
OBJS = $(TARGET).o imgfeatures.o sift.o utils.o
CFLAGS = -Wall -O2
LDFLAGS = -lm
OPENCVINC = `pkg-config --cflags opencv` -I/usr/include
OPENCVLIB = `pkg-config --libs opencv`
GTKINC = `pkg-config --cflags gtk+-2.0` -I/usr/incude
GTKLIB = `pkg-config --libs gtk+-2.0`

all: $(TARGET)

$(TARGET): $(OBJS)
$(CC) -o $@ $(OBJS) $(LDFLAGS) $(OPENCVLIB) $(GTKLIB)

.cpp.o:
$(CC) -c $< -o $@ $(CFLAGS) $(OPENCVINC) $(GTKINC)

.c.o:
$(CC) -c $< -o $@ $(CFLAGS) $(OPENCVINC) $(GTKINC)

clean:
rm -f $(TARGET) $(OBJS)

(5) makeする

(6) siftfeat イメージファイル

で、、、



(7) 処理が遅いので、プログラムをチューニング

う。。。10時間、

で、2秒で実行OK

Raspberry Piで使えるようになった。


vへへ

なんで、犬。。。。

必要に迫られて、躾けロボットつくらないと、、、、


Peace!!

2013年12月20日金曜日

Our tomatoes don't spoil

私の農場のトマトは、常温保存しても腐りません。

ただ、しぼむだけです。

常温保存4か月
常温保存6か月
その理由は、単純です。

もともと植物は、子孫を残さなければならないので、

できるだけ腐らない様に遺伝子に刻まれています。

ただ、そのためには、トマトが

良い育ちかたと、

収穫時に十分な成長状態が、必要となります。


購入して、常温において、腐るトマトは、

窒素量などのバランスが悪い環境で成長した、

または、未熟な状態で収穫したものです。

つまり、野菜本来のパフォーマンスを発揮でるものではない可能性が高いです。

これは、植物である野菜に共通していえることです。

私のトマトが、腐らないのは、

トマトにとって良い成長環境であること

また、収穫のタイミングが最適だからです。


トマトの成分の数字が独り歩きしています。

しかし、本来のトマトのパワーを享受するには、

このようなトマトを、食することが必要だと思います。

私のトマト収穫ロボットにも、そのような収穫タイミングを

プログラミングしています。

Peace!!

2013年12月18日水曜日

My Future Farm with robots

RDCSは、ちょっと分かりにくいので、こんな絵を作りました。

どばーーと!

将来の僕の農場です。イメージ図ね。

沢山の小型ロボットが、働いているイメージ。

RDCSは、このよな状態の沢山のロボットを統合的に制御して、

ロボットたちを、気持ちよく働かせるシステムね。。。まぁ、いいか

ロボットは、自律ロボットよ、、、

ちょっと多いけど、、、イメージ図ね

本当に、実現できる気になってきた。

実現するよ。
全体図

赤い畝は、露地

白っぽい畝は、ハウスの中の畝

色のついた四角いのは、ロボットね

は、トマト収穫ロボット

水色は、センサーロボット

は、軟弱野菜収穫ロボット

ハウの中を拡大

黄色のは、僕。
違った角度から、、、
 これ、Blenderを使って表示した。

Pythonでスクリプト作って、畝の上にトマトを植える場所を示したり、

ハウスをパイプで表現するのも、結構大変です。

でも、いろいろ覚えたから、良しだ!!

これで、空間データベースの表示、機能としてBlenderが使えるようになった。

やった!!!

Peace!!

2013年12月17日火曜日

The 3D recognition technology to target tomatoes

やっと、実用レベルに達したよ、、、、わーいわーい

 Xtionで取得したDepthとRGB使って、トマトや茎なども認識するようになったよ。

これで、ほぼ正確にターゲットのトマトの認識ができたので、

アクチュエータ動かすもの、トマトもぐのも、超ラクになる。

邪魔になる葉っぱや、葉っぱの束も認識しているよ。

実行時間は、BBBで約10秒だから、RDCSサーバで処理した方が良いかも。

でも、実は、秘密の方法を考えているので、何とかなるかも、、、、

と、いうことで、僕は、むちゃくちゃうれしいのですが、

他の人がみたら、アホか!かもね。それでもいいもん。

で、つぎは、webcamで作ったステレオカメラでやるもんね。

大変だけど。。。(-_-;)

こんな感じのトマトや、葉っぱ達

で、ドーンと、アクチュエータを動かすための

必要な対象認識だよ。。。

3Dデータだから、正面右から見たよ

これは、正面左から見たよ
Peace!!!

2013年12月15日日曜日

Level 1 flowchart of Moving Control

レベル1の移動機能のフローを公開します。

このフローに基づいて、Raspberry Piや、BeagleBone Blackが、処理を行い

ロボットの移動制御をします。

基本的なフロー、2輪駆動でも、4脚移動ロボットも変わりません。


実際には、更に数段のブレークダウンがありますが。

このレベルで、私のロボットの自律移動の考え方が、理解していただけると思います。

ただ、ここには、Failsafe Controlとの関係が記載できていません。

Failsafe Controlは、全体のシステムの基底部分に位置するので

このレベルではまだ、表現されません。

って、感じで、作っています。

でも、実際に作るのは、本当に大変ね。

やればやるほど、人間の体のすごさが分かってくる。

Peace!!

2013年12月14日土曜日

What's AI of my small robot (2)

人工知能といっても、分かりにくいので何をターゲットにしているのか?

簡単に説明します。先の投稿でもルールベースと書きました。

一言でいえば、「ルールの自動生成」です。

ロボットは、Work Control Definition (WCD)によって、自分の作業を行います。

しかし、WCDには、制御の命令をすべて記述することはできません。

その場の情報を読み取り、その場にあった作業をしなければなりません。

また、不足しているデータを推測することが必要です。

それらは学習機能と呼ばれますが、実際はルールを作っている事に

他なりません。従って、ルールを自働生成する機能が開発できれば、

学習をすることができます。

学習とは、既存のルールに新たなルールを追加する事、

もしくは、既存ルールを破棄して、新たなルールを導入する事です。


このルールを自動生成することができれば、

ロボットは自律的に作業を行うことができます。

ただし、私のロボットの場合には、制約条件があります。

(1) 協調作業している人の安全が確保できなルールは生成しない

(2) Raspberry Piまたは、BeagleBone Black単体で動く

これは、大きなチャレンジです。

そのチャレンジの為に、いくつかの工夫をしますが、

それは、別の機会に説明します。



なぜ、複数のロボットが人工知能の開発に必要なのでしょうか?

極論、一台で良いのでないか?

もちろん1台でもできます。

しかし、最も重要な協調作業をしている人の安全を最優先する事を考えると

一台だけで生成できるルールには限界があります。

従って、複数のロボットによりルール生成が重要になります。

単体だけでのルール

チームとしてのルール

この2つのルール生成機能を開発するために、複数のロボットが必要なのです。

Peace!!

How to manage Lipo batteries.

ロボット達のバッテリーは、リチウムポリマーを使ってます。

もともと、趣味が、でラジコン飛行機やラジコンヘリコプターなので、

その関係で、NiMHより小型で容量の大きなLipoを使ってきました

それを、ロボットに流用して開発しています。


バッテリーではないけど、2輪駆動ロボットも少し進化してるよ。

百円均一で買ってきた、ゴムバンドを5㎜幅に切って、

車輪にABS専用の接着剤でくっつけている。

この写真では、2輪ロボットの上に、11.1V   1600mA  と 

写真左下に青い14.8V   4800mAの電池が映っています。

Lipoを充電するのが、右の専用充電器。

(本当は、いろいろな電池を充電できるけど、専用として使ってる)

また、左下の赤いものは、Lipoの充電状態を計測する機器です。

これは、優れもので、セルごとの電圧が計れる。

Lipoは、基本的に3.7Vなので大きな電圧が必要な場合には、

直列に3.7Vのセルを接続してバッテリーを作っている。

その3.7Vのセル毎の電圧や容量を測定できる。

この測定器は、Lipoを扱う上では、必須なのだけど、あまり知らていない。

もし、各セルの電圧の差が大きくなると、充電できなくなる。

それを知って、各セルの電圧を平準化しなければならない。

今は、充電器が、平滑しなが充電をしてくれるけど、やっぱり

どうしても、ばらつきが出来てくる。そういう状態を把握するのは、とっても大事。

その為の測定ができるのが、赤い機器。



ところで、公開しているサンダーバード1号は、14.8V  4800mAの電池。

これだけの容量があれば、ほぼ1日充電無しで稼働できる。

高圧、大容量のLipoを充電したり、放電したりするために、

写真下のようなスイッチング電源が必要となる。




スイッチング電源の上に載っているのは、14.8V 4800mAなどの大容量バッテリーを

2つ同時に充電、放電、そして保管用電圧に調整する機器である。

このような2つ同時にできるような機器が無いと、バッテリーを電源とする

複数のロボットは運用できないと思う。

ちなみに、スイッチング電源は、無線機用のモノを流用している。


一台のロボットを動かすなら、最初の写真のような充電器一台で十分だけど、

複数のロボットを動かすためには、バッテリーと、そしてそれらを管理する

充電器などが複数必要。

ちなみに、我が家には、Lipo充電器が6台ある。

バッテリーも、容量は様々だけど、30本位ある。

それが、フル回転してます。

結構大変なのよね。

複数のロボットを動かすって、、、へへ

Peace!!

2013年12月12日木曜日

What's AI of my small robot

Googleが、実現しようとしているのは、巨大な人工知能だと思う。

地球上のすべてのデータを収集して解析して、、、、

確かに、計算物理学という分野があるのだから、、、

巨大なデータベースを使った人工知能を作ることはできる思う。

まさに、現代的な人工知能だ。

しかし、写真のような小さなロボットには、常にネットに接続しているわけでもないし、

農場では、ネットが届かない部分もある。

そのような状態においても、実行可能な人工知能が必要になってくる。

つまり、Raspberry Pi上で、ロボット制御システムと、組合わせて動く人工知能。


ロボットを何台も作っていると、

彼らに、知能を持たせたくなる。

その意味でいうと、Contentを前提にしたデータベース、もしくは従来型でない

ルールベースのAIが必要になると思う。

ルールベースというと、どうも平面的なモノになるけど、

抽象的だけど、漆黒の宇宙空間を漂う数万のクラゲのような感じのAI。

それが、ある時に、もぞもぞっと動いて、ぽんっと何かが出てくる。

そんな人工知能って、作れないのだろうか。。。



ふと考えると、10年前に特許出願した内容。文書の文脈を解析する手法。

なんか、昔やっていた事が、つながってくる。

これは、Googleのアプローチとも違うし、独自の考え方。


この考え方で、人工知能を考えてみたい。

それに、RDCSのノウハウや、空間DBを使った

ルールベースの人工知能を、なんか、出来そうな感じがしてきた。


夕方に、「明日も頼むよ」と、いうと、

「明日は、収量が多そうなので、4時から収穫します。」と言ってくれる。

それを実現する人工知能を。。。

そして、究極、

「なぜ?」と、問える人工知能を、、、


変な、投稿で、ごめんなさい。

でも、Peace!!

2013年12月11日水曜日

My Favorite Robot


最近、いろいろな方面から、ご関心をいただているRDCSですが、

そのプロモーションビデオ用に6台のロボットを作っています。

その中でも、この2輪駆動ロボット、すごく気に入っています。

構造もシンプルで、軽快に動くし、製作費も安い、作りやすいし、

沢山作って、いろいろな実験ができると思います。

プロモーションビデオ製作が終わったら、

あと、10台位作って、ロボット用の人工知能の開発に使います。

車輪の直径が10cmなので、本当に小型です。でもパワーあります。

従って、、5Vで2Aは最低でも必要なので、Lipoが必要です。

あと、3㎝長さ方向があるタッパーがあれば、

もっとおさまりよくなるので、探しています。

重量配分も、前方にギアシステムを積んでいるのちょうど良い感じです。

全体像

車輪の直径は10cmです。

Raspberry Pi Cameraを積んでいます。


車輪は、結局こういう形状に落ち着きました。

下が、滑る時には、穴を利用して滑り止めのゴムを

装着します。

後ろ姿

タッパーのふたを加工したくなかったので、

出っ張ってしまう、SDカードの穴から、

Cameraのケーブルを入れています。

真横から、

後ろのタイヤは、Legoの部品です。

前から、前方のギアボックスが透けて見えます。

ギア比は、114.7:1で使っています。

3Vのモータに5Vかけて使っています。

モータは、大人買いして、大量の予備があります。

秋月電子通商の170円のI2Cモータドライバー使っています。

一筋縄では、行かなかったです。

おかげで、I2Cの事が良く分かりました。

はんだ付けは、」時間がとられるので、小さなブレッドボード上に


実装しています。


でも、やっぱりクリンがお気に入りです。

毛の無い、クリンに、マントを着せています。 


人と、ロボットが共同して作業をするロボットシステムを研究開発をするなら、

とにかく複数のロボットが必要になります。

その時は、2足、4脚、車輪は関係ありません。

つまり、機構の話ではなくて、

結局、重要なのは、ロボットの人工知能開発になるから、、、

そう、RDCSは、結局、ロボット運用システムの人工知能なのだと、

最近、強く気づいてきました。


可愛いロボットにPeace!!

2013年12月10日火曜日

memo : I2C motor driver 8830 manufactured by IT

IT製のI2C対応モータドライバー8830のテスト

ストロベリーリナックスで、すでにモジュール化されている製品を購入すれば良いのだが、

小さい筐体に実装するために基板に配置するために、

秋月さんの170円の8830を購入した。

それを動かすために、テスト。



Raspberry Pi からの制御はOK。

右下の8830は、VCCとGND間違え配線して、一発で壊れたものです。

自分への戒めのために、写しました。

一番苦労したのは、左したの電流検出抵抗です。1㎜ x 2㎜程度のチップ型なので

ちょっと慣れていない私には、曲者でした。

回路図は、秋月さんのDRV8830の説明書の通りです。

後は、基板に実装します。

Peace!!

Technology Selection : Inter-Integrated Circuit I2C

ソフトウェア製品を開発する場合には、図ようなプロセスで進めていきます。

トップレベルのフローです。実際は、さらに細かくブレークダウンされます。

例えば、I/Fデザインや、共通化などは、この下位レイヤーで定義されます。

各企業によって、若干の相違はありますが、大きな流れは違っていないと思います。

このTopレベルの図に現れる、アーキテクチャーは、ハードウェアだけでなく、

ソフトウェア製品を開発する場合にも

とても重要です。アーキテクチャーは、ビジネスを定義すことと、同義だからです。



このTopレベルでアーキテクチャは決定される必要があります。

それが、それ以降の機能や下位レイヤーを規定するからです。

ということで、私のロボットアーキテクチャは、いろいろ決めてきまいした。



そのアーキテクチャーに基づいた、技術選択をしてきました。しかし、今回

デバイ制御の技術選択を変更することにしました。

ロボットを構成するデバイスをI2Cバス仕様に基づいて実装する」という点です。

これに伴い、ソフトウェア設計や実装に大きな変更が発生します。

しかし、これまでいろいろ検証した結果、開発工数の大幅な削減と、実装のシンプル化が

図れることが判明したので、あえて変更をします。

I2Cバスは、フィリップスが策定したデバイス間制御のBus使用です。

これにより、9台の機器を接続することが可能となります。

I2C仕様に準拠したデバイスであれば、たとえばモータドライバーであれば、

Raspberry Piから8台を制御することができます。

これまでは、マイコンを間に置く必要がありましたが、もっとシンプルに実現できます。

これまでの、USB接続によるシリアル通信制御から、I2C制御に移行することにしました。

とはいっても、これまでの資産もありますので、徐々に移行します。

I2Cの仕様書は下記アドレスです。



ということで、私が不勉強であっために、手間が増えましたが、

シンプルな構造を目指すために、努力します。

Peace!!

How to make wheels of a small 2-wheel robot.

3Dプリンターで部品を作っていますが、今回は車輪の作り方。

車軸を受ける分と、車輪の部分は、求められる性能が違うので、

異なる充填率で出力します。それを組み合わせて車輪を作ります。

(1) Blenderで、デザインして

(2) MakerWareで、3D Printer データ作って、

(3) プリントします。

(4) 加工と組立てをして完成。

一連の手順の紹介です。

3Dプリンターブームの割には、、、

実際にどう使うのか、あまり紹介されていません。

4月1日のマニュアルにも必要なので、記述しておきます。

3D Printerを使いこなすには、設計の知識が必要だと思います。


まずは、出来上がりです。

こういう車輪をつくります。直径は10cmです。

45度単位で中抜きをしています。

Blenderで設計します。

2つに分けているのは、車軸を通す左の部品は、

出力時に100%充填の指定します。全体の厚さは、10mm

これを右の部品の真ん中にはめ込みます。

一方で、右は、軽くするために、40%の充填で作ります。

車輪の厚さは、3㎜です。

右の部品を作るBlenderのオペレーションは、

Boolean機能で抜きます。抜く型を作ってから、

それを45度づつ、r(Rotate), z(z軸固定)、45 の順で入力します。

出力指定が違うので、別々のSTLデータを作成します。

それぞれのデータを別々に処理します。

STLデータ読み込んで、2つ作るのでDuplicateします。

位置は、重ならない程度に使づけます。

軸を受ける部分なので、Infill指定は100%です。

一度、プリントのシミレーションをします。

OKであれば、データを作って、出力します。

出力した2つを組み合わせるために、加工をします。

この時は、上記のようなしっかりしたカッターを使います

通常のカッターでは、刃が折れます。

また、しっかり力が入らなので、危険です。

接着するので、多少、ゆるくてもかまいません。

ABS専用の接着剤を使います。

たっぷり塗ります。


専用接着剤なので、十分な強度を発揮します。

模型売り場などで、売っています。

接着した車輪の真ん中に穴の位置をマーキングします。

真ん中に印ができるように、工夫してください。

直角にドリルで、穴をあけます。

直角に開けることが、重要です。

タミヤのギアーであれば、2.8mmのドリルを使います。
この一連の作業で出来上がりです。

設計は、30分

プリント時間は、2つのパーツを合わせて30分

加工は、15分

Peace!!

2013年12月8日日曜日

A small 2 wheel robot

空間認識して、自律的に動くロボットを、短期間に5台作るって大変、、、、

農業もあるし、、、

部品代を削減しているので、手作業多いし。

でも、プロモーションビデをで、6台のロボット使うから、早く作らないと。。。

ということで、いつものラクするためには、、、、、

あっ!

ボディーの3D printerやめました。

で使っているのが、100均で売っているタッパー。

ぴったり!!

ボディーこれにしよう!!

材料費は、下を参照してね。


左は、3D Printerでボディーを作りました。

右は、タッパーの中に、モータ、ギアー、

Raspberry Pi、レギュレータ、モータドライバーを

入れました。

前から、、

後ろから、、

後輪は、後から、、

電池は、交換しやすいように、ふたの上。


この大きさは、満足だぁ。。。

そうそう、小さくても、

ラジコンではありません。あくまでも僕のロボットは、空間認識をする

自律型ロボットでしゅ

多数の空間認識できるロボットを使った実験なんて、

まだ、どこの研究機関でもないよ。、、、米軍関連以外は、、、、


1.主な構成

1) Raspberry Pi

2) Raspberry Pi Camera

3) タミヤのギアー              約700円

4) モータドライバー 2個      約500円

5) レギュレータ                    650円

6) タイヤ                             350円

7) その他電子部品           約200円

8) タッパー                           33円

9) USB Micro-B                   100円

10) カメラ台                        200円 (3DPrinter)

11) 電池  11.1V   360mA            既存品で、値段は忘れちゃった。

2.製作時間(後輪なし)

4時間

とりあえず、メモも兼ねて、、、、

Peace!!

memo : How to make a supply cable for small robot using a Raspberry Pi

ロボットに搭載するRaspberry Piのマイクロ USB用電源ケーブル作成のメモです。

小さなロボットは、配線も工夫が必要、こういう小技が欠かせない。

関係ないけど、作業台の上。

ぐちゃうちゃ。

Kong Lives の缶バッチ知っている人、かなりのマニア


昔、松下電器、Universal Studiosを買収したときに、

怒ったファンが、Universal Studios Hollywoodの

Kongのamusementに放火した。

その修復が終わった時に、数日間配られたもの。

当時、LAにいたので、もらいに行った。

悲しいね。 

ケーブルは、100円均一で買った巻き取り式を使う。

必要な長さに切断して、電力線を出す。

でも、どっちが、プラスかマイナスかわからない。

また、細すぎて、被覆を手作業では剥がせない。

ライターの火で、焼いちゃう

残った方も、使うのでしまっておきます。

QIコネクターを使って、接続部分を作って、

プラスの方に赤い目印をつけておく。

QIコネクターは、下を参照してね。

ただし、僕は、耐熱ビニル絶縁電線で巻いています。

http://blog.digit-parts.com/archives/51796900.html

コネクター部分を可能な限り削って、

断面積を小さくする。

最後のチェック。

方法は、各自で、、、

今回は、RDCS用のロボットのモータがあったので、

それで確かめました。

くれぐれも、いきなりRaspberry Piにつながないように。。。

最後は、こんな感じです。

これで、ロボットの中でも、取り回しがラクになります。

電源供給は、USBに直付けや、GPIOからなど、

いろいろ方法があるけど、

僕は、あまりRaspberry Piをいじりたくないので、

このようにしています。

自分用のメモでした。

Peace!!