ラベル トマト収穫ロボット の投稿を表示しています。 すべての投稿を表示
ラベル トマト収穫ロボット の投稿を表示しています。 すべての投稿を表示

2012年10月19日金曜日

Now status:4 legged robot. New robot bench.


I'm developing a motion realtime generation program for my 4 legged robot.
It's very difficult program for me.  I'd like to develop the program in this week.
I made a robot bench.  When I debug a motion realtime  generation program, i use this bench. It took 4 hours to make this bench.
Now I develop a prototype 4 legged robot. This bench is able to use too, when  i will develop a next robot which work in my farm and greenhouse.


 prototype 4 legged robot 
prototype 4 legged robot (front)

robot bench

robot bench

peace!

2012年10月3日水曜日

Performance testing Xtion on Raspberry Pi
Using a capturing server

Raspberry Pi is a good machine. But it don't have a capacity for 3D processing.  For this test, I use a Raspberry Pi as a capturing service (server).  And MacMini is 3D Processing service and viewing.
My test environment diagram is below.

Raspberry Piは、3D処理をするには性能がたりません。従って、Xtionを使ったcaputuring setverとして使い、空間認識などの処理をMacminiで処理します。そのテストをしました。
テストは、RDCS環境を使いまいた。RDCSは、分散コンピューティングをベースにしたロボットプラットフォームです。その機能を使ってテストをしました。
Micminiでpoint cloud処理をしています。さすがに瞬間的な処理です。


 Capturing Service        3D recognizing service
   Xtion
    Raspberry Pi                Mac MIni
----------------------------------------------------  Coordinator Layer
---------------------------------------------------- (Service Control)
             |                                |
----------------------------------------------------      Cooperative Layer
---------------------------------------------------- (Communication Control)

A performance testing was executed on RDCS.

RDCS is a robot platform based on a distributed computing model.
A lots of robot function (hardware, software) is connected by  "Cooperative Control" and "Coordinator".
"Cooperative Control" is a network communication control.  The control  connects computer , actuator, sensor and other robot device.
"Coordinator" offers robot required software. "Coordinator" integrates a lot robot software on RDCS.

This test flow is :

(1) 3D recognized service requests a data set ( image and depth ) to Capturing service.
(2) Capturing service on Raspberry Pi execute to capture image and depth.
(3) 3D recognized service receive a couple of capturing data.
(4) 3D processing and viewing

RESULT (sec)
(1)      0-1
(2)     8-10 (include the time which is Xtion initialize and terminate)
                   A Capture time is 1-2 sec.
(3)      0-1
(4)      0-1


This result means that a single robot don't have all function in it.
Therefore, it's able to develop a lightweight and low cost robot.
There are a lot of kinds wrok in farm. And my farm is large. Thus I need  a lot of robot. To do that,  I have to develop a low cost and multi-function robot.
My robots are structured by base robot and add-in function in order to realize a multi-function of robot.
And these robots have to been set up by commercialized product and builded  by component-based.

Now I'm developing a core component of robot  using 2 or 3 Raspberry Pi.
A core component of robot is structured by  6 components which are robot platform(RDCS), space recognition, obstacle detection, moving, fail-safe and recovery.
An effectivity of RDCS which I have developed was  confirmed by this testing.


この結果は、1台のロボットに全ての機能を集約しなくても良い事を示しています。
従って、軽量なかつ低価格のロボットを作る事ができます。
ロボットプラットフォーム、障害物検知、通信、移動、フェイルセーフと回復機能を持ったシンプルなロボットを、Raspberry Piを2、3個使って作れば良いと思います。その上に、アクチュエータなどのロボットのパーツを載せればよのではないでしょうか?
私の開発している、RDCSのアーキテクチャーの有効性を確認できました。




                                                     3D point cloud

Peace!

2012年9月21日金曜日

An Instllation of Raspberry Pi
Raspberry Pi インストール

I updated this installation manual.
Target image :  archlinux-hf-2012-09-18.img

最新版のインストールマニュアル(archlinux-hf-2013-07-22.img)は下記からどうぞ!
JAPANESE
ENGLISH    (12 Jan, 2013)

-----------------------------------------------------------------------------------------------------
OLD MANUAL

In my case, I use a Raspberry Pi as a robot controller. Therefore, there are some difference between my installation and common installation. For example, I don't install  a window system like 'gnome'. and games,,,

wifiのfirmwareや、Arch Linuxでのパーティション設定を含めて記述しています。
Raspberry Pi のホームページからダウンロードできるOSイメージをインストールすると8GBのSDカードでも、2GBの初期設定がされてしまいます。推奨のRaspbian “wheezy”であれば、初期化作業の時に拡張できますが、Arch Linuxでは自分でする必要があります。私は、Ubuntuで、Gpartedを使いました。
私は、32GBのカードを使っています。SDカードの相性があるので、Raspberry Piのホームページで確認したほうが良いです。
あと、pacmanを使って、glibc関連のエラー(glibc error)が出たときの対処のリンク(link)もあります。私は、この対応で半日つぶしました。

step of installation (for beginner )
1. Prepare SD-card,,,,
2. Install Arch Linux Arm
3. Environment setting
4. Back up setting
5. Add development software and tools

/****************************************************************************/
/* 1.  Preparation                                    */
/***************************************************************************/
1. 準備すること
(1) 相性の良い、SDカードを準備する。
いろいろな不具合を事前に回避するためにも重要。
SanDiskは、おおむね大丈夫のようです。
私の場合は、SILICON POWERで良くエラーが発生しました。
(2) セルフパワーのUSBハブ
RaspberryPiからの、USB電源供給は最小限に抑える。
USBからの供給が、多くなると不安定になる可能性があり、それを防ぐ。
(3) OSを選定する
一般的には、R-Pi推奨のOSを使うほうが良い。
ロボットの開発には、シンプルなArchLinuxArmを導入して、
必要な機能のみをインストールするほうが良い。
(4) ターミナル/ファイルコピーソフト
SSH接続で、他のマシンから操作できる環境を作る必要がある。
たとへば、バックアップなどに使う
Windows: ”Tera term”, “winSCP” 
Ubuntu   : FillZilla

/****************************************************************************/
/* 2.1 RaspberryPi OS用 SDカード作成 (Windows)  */
/****************************************************************************/
(1) カーネルイメージ作成
利用するOSのカーネルイメージをwww.raspberrypi.orgよりdownloadし、解凍する
(2) SDカードへの書き込み
win32diskimager-binaryを使って、SDカードに起動イメージを作成する。
(3) 後処理
Windows上の作業用ファイルを削除する


/****************************************************************************/
/* 2.2 SDカード2GB以上領域の確保 (Gpated on Ubuntu)    */
/****************************************************************************/
RaspberryPIのインストールイメージは、2GBの割当てを行う。30GBのSDカードを使った場合には、残り約30GBが、未使用の状態になる。その約30GBを使う為の処理

私は、普段Windowシステムをつかいません。
お使いの方は、(2)だけを実行してください。
It's need to install a gparted using ubuntu software center.

(1) How to change Ubuntu window system.
/etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT='text"
Using window system change as above "text" to "quiet splash" or blank.
sudo update-grub
sudo start gdm

(2) Gparted (allocate partition and format)
ex.) 32GB SD-card
swap   500MB    
/tmp     2GB
/home  10GB
/data    other
/tmp, /home, /data -> ext3 format

(3) Change CUI Mode.

/****************************************************************************/
/* 2.3   First time system upgrade                                     */
/***************************************************************************/
よほどの問題がない限り、SDカードをR-PIに差込み、電源をいれれば立ち上がる。
起動したOSは、古いので最新版にupgradeする必要がある。OSや、アプリケーションの管理をするソフトが、pacman である。

(1) 起動して、systemのアップグレードを実行する。
pacman -Sy
pacman -S pacman     最初に、Pacmanをアップグレードする。
                                     大きくシステムソフトが変わった場合には、pacmanが
                                     依存するソフトの更新が先になる。
                                     glibcエラーが発生した場合には、下記リンクを確認
                                     http://archlinuxarm.org/forum/viewtopic.php?t=3775&p=21205
pacman-key --init  
この後は、OSのプロンプトが現れるまで、キーボードからランダムに文字を入力し続ける。なかなか、プロンプトがでてこないので、根気よく続ける。
(2) pacman -Su
pacmanを更新した直後のupgradeは、数十個のソフトのupgradeが行われるので、かなり時間がかかる。SDカードとの相性が悪いと、この段階で、インストールできないなどのエラーで途中終了する。
(3) reboot
reboot後に再度、pacman -Suをしてみて、Upgradeしなければならないソフトがないか?再度確認する。
(4) pacman -S lshw
ArchLinuxは、最小限のドライバーなどしかないので、接続する機器がつながっているのか?確認する為のソフト。
(5) 接続しているHardwareの確認
lsusb, lshwなどで、無線ドングルの確認をする。
lsusb
USB接続している装置が認識されているか確認をする。接続しているのに、表示されない場合には、ハード的なトラブルを疑った方がよい。他のOSで確認する。
lshw
OSにどのように、認識されているのか?確認できる。この情報を元に、driver/firmwareが認識されていない場合には、その対処をする。
この説明では、OSインストール時に、USBをつないでいるが、一通りの環境設定が終ってから、USB接続機器の確認や設定を行っても良い。

/****************************************************************************/
/* 3.1 Wifi設定                                                                     */
/****************************************************************************/
本来は、netcfgなどの機能を使って行う。R-Pi購入初期の時に、数回試したがうまくいかなかったので、現在もこの方法で実施している。いつか、時間があるときに、netcfgに変更する。
与件として、IPアドレスを自動的に割振るDHCPが動いているサーバに接続することを前提にしています。
(1) 関連ソフトの入手
pacman -S wpa_supplicant wireless_tools
(2) wifiの暗号通信の為の設定ファイル作成
/etc/wpa_supplicant/wpa_supplicant.confを編集する。
下の例は、家とモバイルルータの設定をしている。priorityで同じ環境にあった場合の優先順位を決めている。その他は、ひょじゅんてきなWPAPA2-PSKの設定方法であり、ssidとpskの部分を変更すれば、そのまま使える。2つ記述してあるのは、自宅用と、Pockect Wifi用です。
Ppriorityの値で、自宅を優先にしています。

# ----- add my block 19/08/2012 ----------
network={
ssid="環境のESSID"
proto=RSN
priority=1
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
psk="環境で決められているKEY"
}

network={
ssid="環境のESSID"
proto=RSN
priority=10
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
psk="環境で決められているKEY"
}

(3) /etc/rc.d に自動起動のためのシェル(nao)を作る。chmod +x naoを忘れずに
#!/bin/bash
/sbin/ifconfig wlan0 up
/usr/sbin/wpa_supplicant -B -Dwext -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf
/usr/sbin/dhcpcd wlan0
(4) /etc/rc.confのDAEMONSに、networkの後に追加
DAEMONS=(!hwclock syslog-ng network nao openntpd @netfs @crond @sshd)

(5) ファームウェアの設定
ドライバー以外にも、firmwareが必要。現在のLinuxでは、多くのインストール済みがあるが、ない場合、もしくは最新版をインストールする場合に、この処理が必要になる。
lshwで、firmware=N/Aになっている装置があれば、その対応が必要。
メーカからダウンロードして、/lib/firmwareに、所定のfiramwareを置く。
例)
rx2870.binなど

/****************************************************************************/
/* 3.2 ディスクの拡張                                                            */
/****************************************************************************/
2.2で、SDカードには、フォーマットされた領域が確保されている。その領域を実際に使う為の処理である。swapと、通常利用のdisk領域の2つを処理する。
(1) 現在のSDカードの情報確認
SDカードなので、/dev/mmcblk0xxと領域が複数表れる。マウントするdirectoryとdeviceの対応を決める。

#fdisk /dev/mmcblk0
Welcome to fdisk (util-linux 2.21.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): p

Disk /dev/mmcblk0: 16.4 GB, 16437477376 bytes
4 heads, 16 sectors/track, 501632 cylinders, total 32104448 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c21e5

Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1   *        2048      194559       96256    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          194560     3862527     1833984   83  Linux
/dev/mmcblk0p3         3862528     5910527     1024000   82  Linux swap / Solaris
/dev/mmcblk0p4         5910528    32104447    13096960    5  Extended
/dev/mmcblk0p5         5911920    10008494     2048287+  83  Linux
/dev/mmcblk0p6        10008558    32097869    11044656   83  Linux

(2) swapの作成とマウント
/sbin/mkswap /dev/mmcblk0p3
/sbin/mkswap -L swap /dev/mmcblk0p3
/sbin/swapon -L swap
cat /proc/swaps

(3)vi /etc/rc.local に次の行を加える。
           /sbin/swapon -L swap

(4) /etc/fstab の修正
vi /etc/fstab 下記のswap, /tmp, /homeを付け加える
#
# /etc/fstab: static file system information
#
# <file system>    <dir>      <type>    <options>   <dump> <pass>
devpts             /dev/pts   devpts    defaults       0      0
shm                /dev/shm   tmpfs     nodev,nosuid   0      0
/dev/mmcblk0p1     /boot      vfat      defaults       0      0
/dev/mmcblk0p5     /tmp       ext3      defaults       0      0
/dev/mmcblk0p6     /home      ext3      defaults       0      0
/dev/mmcblk0p7     /data      ext3      defaults       0      0
LABEL=swap1        swap       swap      defaults       0      0

これで、rebootしても、大丈夫

/****************************************************************************/
/* 3.3 ユーザ登録                                                                  */
/****************************************************************************/
これまでの作業は、rootで行ってきたが、システムに対して危険なのでsudoを導入する。
(1) pacman -S sudo
(2) adduserで、ユーザを登録。グループは、wheel、uucpを指定。
Login name.......:  nao
UID..............:  100
Initial group....:  wheel
Additional groups:  uucp
Home directory...:  /home/nao
Shell............:  /bin/bash
Expiry date......:  [ Never ]

(3) visudoで、上記ユーザがいちいちパスワードを入力しないように変更
pacman -S sudo
## Same thing without a password
%wheel ALL=(ALL) NOPASSWD: ALL

/*******************************************************************************/
/* 4.1 Back Up                                                                        */
/*******************************************************************************/

I use a Macmini (1.5GHz, i5, 8GB) as a server.
I do backup data from Raspberry Pi to server(Mac) on a daily basis.
very easy way.

(1) generate RAS key (Macmini)
ssh-keygen

(2) copy RAS key  to Raspberry Pi
copy  ~/.ssh/id_rsa.pub (Macmini) to  /LOGIN USER HOME/.ssh/authorized_keys (Raspberry Pi).

(3) make backup shells (Macmini, Raspberry Pi)


ex)
Macmini
#!/bin/bash
ssh nao@192.168.11.xxx /home/nao/bin/mk_tar.sh
scp nao@192.168.11.xxx:/tmp/r-*.tar  /Users/nao/q/Rapi

Raspberry Pi
mk_tar.sh

#!/bin/bash
tar cvf /tmp/r-pi01.tar /home/nao/rcs > /dev/null

/****************************************************************************/
/* 5.1 Additional Software                                                   */
 /*          developing tools for robots only.                           */
/****************************************************************************/
pacman -S gcc
pacman -S makecmake
pacman -S pkg-config

pacman -S libusb
pacman -S openCV

openNI  (driver, openNI, Nite)
PCL
openKinect

pacman -S nginx

pacman -S fswabcam

pacman -S ttf-bitstream-vera ttf-dejavu

Peace!

Developing Robots on Raspberry Pi
 Raspberry Piを使ったロボット開発の考え方


I use Raspberry Pi as robot controllers based on Robot Distributed Computing System  (RDCS). RDCS is an architecture to develop a robot system efficiently and simply.
An agricultural work is a combination of variety of tasks. In large farms, only one robot cannot execute many agricultural tasks. Therefore, we have to control many robots and sensors. For this purpose, we designed  RDCS that is a new robot system architecture. RDCS offer one cohesive integrated control for robots, sensors and variety  of agriculture informations.
RDCS have a databese called 4DS.  4DS is a 4 Dimension database. 4 Dimension data is a very important data for agriculture. 4DS  manage   variety information to require for agricutural production . For example,  geospatial data, growing data, cost data, other many data.
Robots use 4DS information as self-control data, and store a variety of data that is scanned  by robots in work.


Raspberry Pi は、いろいろな所で取り上げられているので、ここでは私のrobot開発における利用方法の概要を記述します。

私のロボットは、「分散コンピューティング上にハードウェアを置く」と、いう考え方で作っています。
これは、これまでのハード中心のロボット作りとは、考え方がまったくことなります。しかし、実際の農場での運用を考えると、そのような考え方に立脚しないと展開できないと考えています。robotが、単機能として物を運ぶ、果実を収穫すると言うのは、大事な機能です。しかし、農場では様々な仕事があり、かつそれぞれの仕事が連動しています。そのような状況のなかで、複数のロボットやセンサーなどを使う為には、全体を統合的に制御できるarchitectureが必要になります。

その分散コンピューティングのノードコンピュータとして、Raspberry Piを位置づけています。これまでは、H8などのマイコンボードをLegacy PCで制御するような構造になっていたと思います。マイコン+Legacy PCをRaspberry Piで置き換える考え方です。それにより、ロボット開発には多くのメリットがあります。軽量化、原価低減、電源の最小化などなど多くの効果が期待できます。これまでも、ARMベースの低価格コンピュータが販売されていましたが、一気に1/3の価格になってしまいまいた。また、GPIOがあるのでデバイスに直接につなげます。
ロボット開発において、軽量化は大変重要です。私は、これまで、Dell mini9を使っていましたが、それにしても2Kg程度あります。それがバッテリー込みで、500g位になります。収穫用のactuatorは、ロボットシステム全体からみると、ひとつのApplicationとして独立していますが、Actuator専用にRaspberry Piを割当てる事も容易にできます。

システム構造です。まだ、案レベルで、実装しながら変更します。
上の図は、私のRobot Distributed Computing Model (RDCM)の構造図です。
この構造モデルに従って、全ての機能が実装されます。この図では、ControllerにARMのCPUを使うこと以外は、デバイスの規定はありません。従って、柔軟に組合わせることができます。
また、このArchitectureでは、他のコンピュータシステムと連携させることができます。例えば、農業生産管理システムとの連携も、簡単にできます。distributed computingモデルを基本にしているという事は、そのような意味です。
これまでの、ロボットは、ロボット中心の考え方をしていますが、私のロボットは、業務で人間と同等の役割を担う事を前提にしています。従って、role-definitionがあります。それらを延長した形で、私のロボットはWork Control Definition(WCD)に基づいて動きます。

温度センサーにしても、「温度を計測する」roleに基づいて役割を実行して、全体業務に貢献します。これは、別な意味で重要で、定義された役割を実行するので、それは、同一の経営体のなかであれば、どこでもいいわけです。もちろん、そのための作り方はあるわけですが、STMの評価ボード、XBee、温度センサーと単三電池を組みわせれば良いだけです。市販のおんどxxなどに比べれば、格安にかつ自由度の高い構成がとれます。

Raspberry Piは、そのような中で、Nodo Computerとして重要な役割を担っています。しかし、Raspberry Piがないと動かないわけでありません。

私のように、640KBの世界で3D-CADプログラムを開発していた人間から見れば、256MBのメモリーの世界は、はかりしれない可能性を持ちます。

人は、欲張りになりすぎました。これはコンピュータの世界だけでなく、全てす。
もっと、Simplifyに、構造化して認識することが大切です。

Simplify、いい言葉です。
ところで、Raspberry PiのOSは、Arch Linuxです。SimplifyなOSです。私は、Raspberry PiでGUIは使いません。Raspberry Piにはその必要性がありません。画像を見たければ、distributed computing上のAndroidで見れば十分です。
Simplifyです。


2012年9月19日水曜日

はじめまーす


脱サラ、トマト農家のトマト作業用 ロボット開発の記録です。

トマト収穫ロボット や、その他いろいろな 農業ロボット を開発する予定です。

今まで、ホームページに書いていたのですが、こちらに引っ越します。
最初に、10万円台の、トマト収穫ロボット の開発を目指しています。
あり得ないと、多くの方から言われておりますが、挑戦しないと始まりません。
さてさて、どうなることやら、、、

事の顛末を、ご覧下さい。