このPixy Camera は一見パーツむき出しのWebカメラみたいな感じですが、NXPのプロセッサが載っていて、単体で色検出やパターン(形状)検出を行えるようになっています。ちなみに価格は69ドルくらいです。
わりと可愛い感じのパッケージに入っています。
今回は通販の送料もかかるので、LEGO用アダプタも一緒に注文しましたが、
IchigoStorms ではLEGOアダプタは使いません。
このPixy Camera は設定で色々なインタフェースに対応できます。SPI、I2C、UART、LEGO用I2C(っていうのがあるってことは、LEGOのI2Cはやっぱり独自仕様ってことか・・・)に対応する他、アナログ電圧出力まであります。今回はIchigoJamで一番扱いやすそうなアナログ電圧出力(検出した最大の対象のX軸をアナログ電圧でリニアに出力)をANA(0)端子で拾います。
前回のタンクのEV3 Sensor Adaptor for NXT + EV3 超音波センサ を Pixy Camera に載せ替えて、
手近にあった名刺入れがはっきりとした赤色だったので、これを棒の先にくっつけてターゲットに。
ソースは以下の通り。110円のマイコンに69ドルのセンサっていうのもどうかと思いますが、ロボット向けの画像処理が簡単にできてしまうPixy Cameraはなかなか面白いです。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
10 CLT:CLV:A=#64:B=#65:C=#67:D=#68:E=0:F=0:S=512 | |
20 L=0:R=0:gosub 110 | |
99 goto 410 | |
100 ' Set motor speed. | |
110 E=-R:F=-L | |
150 if E<0 then O=1 else O=2 | |
160 if E=0 then O=0 | |
170 O=O+(ABS(E)-5)<<2 | |
180 if F<0 then P=1 else P=2 | |
190 if F=0 then P=0 | |
200 P=P+(ABS(F)-5)<<2 | |
270 poke #700, 0, O, P | |
280 I=i2cw(A,#700,1,#701,1) | |
290 I=i2cw(B,#700,1,#702,1) | |
320 return | |
400 ' | |
410 if IN(4)=0 goto 490 | |
420 S=ANA(0) | |
430 if S<340 goto 460 | |
440 if S<680 goto 470 | |
450 goto 480 | |
460 L=50:R=-50:gosub 110:goto 410 | |
470 L=50:R=50:gosub 110:goto 410 | |
480 L=-50:R=50:gosub 110:goto 410 | |
490 L=25:R=-25:gosub 110:goto 410 |