リモコンに運動機能を追加2008/01/27 10:50

IXYDIGITAL70で撮影。4枚の写真を1枚に合成してあります。
 昨日のプログラムを更に改良した。
 名付けて、「ロボちゃん運動プログラム」
 「遊びましょう」でリモコンの1を押すとカーンと音がなるのは一緒だが、そこから運動モードに入る。
 運動モードに入った事を示すためにリモコンの左手が挙手される。
 後は、ボタン操作で運動を始める。
 リモコンの2が前進、8が後退、4が左回転、6が右回転、1がベースアップ、2がベースダウン。3が右腕上げ、9が右腕下げ、5がハンドツールオープン、0がハンドツールクローズとなっている。
 行動は、10回ループで繰り返され、それが終わると、最初に戻る。
 結局、リモコン操作の運動になるが、障害物回避のコマンドが実行されているので、狭い道であれば、それを回避して行動するので、不規則な動きになって面白い。
 写真は回転運動をさせているところ。
 以下は、ソースコード(リモコンの番号を0から9まで学習させておく必要がある。
-------------
/**
*
* @author
* @version 1.0
*/

#include "c-like.h"
#include "robot.h"


counter Counter1 = new(counter);
counter Counter2 = new(counter);

declare( behavior(Behavior1) );

void Procedure1();
void Procedure2();

define( behavior(Main))
{
set(Counter1,1);
set(Counter2,1);
lcd_clear();
lcd_write_string(1,1,"watasi wa siawase");
vision_follower(true);
obstacle_avoidance(true);
say_phrase(21);
start(Behavior1);
end();
}

define( behavior(Behavior1) )
{
while (get(Counter1) < 10)
{
inc(Counter1,1);
lcd_write_string(2,1,"@@@");
led_blink(LED_RED_RIGHT);
led_blink(LED_GREEN_LEFT);
head_pan_r(-1);
head_pan_r(1);
head_pan_r(-1);
head_pan_r(1);
local(urc) = wait_for (urc, update);
say_phrase(58);
say_phrase(57);
say_phrase(55);
local(urc) = wait_for (urc, update);
if (urc_compare(&local(urc), 1))
{
say_phrase(92);
head_tilt_r(1);
head_tilt_r(-1);
led_blink(LED_GREEN);
say_phrase(140);
local(urc) = wait_for (urc, update);
if (urc_compare(&local(urc), 1))
{
play_sound(8);
say_phrase(60);
say_phrase(60);
Procedure1();
led_blink(LED_RED);
}
else
{
led_blink(LED_YELLOW);
say_phrase(64);
say_phrase(8);
say_phrase(83);
say_phrase(93);
}
}
else
{
led_on(LED_GREEN);
head_tilt_r(-1);
say_phrase(62);
say_phrase(95);
}
head_tilt_r(1);
led_blink(LED_ALL);
head_tilt_r(-1);
head_tilt_r(1);
led_blink(LED_ALL);
lights(true);
led_off(LED_ALL);
head_tilt_r(-1);
left_arm_r(1);
left_arm_r(1);
left_arm_r(-1);
left_arm_r(-1);
right_arm_r(1);
right_arm_r(1);
right_arm_r(-1);
right_arm_r(-1);
say_phrase(124);
base_up();
say_phrase(61);
say_phrase(70);
base_down();
lights(false);
}
}

void Procedure1()
{
left_arm_r(15);
while (get(Counter2) < 10)
{
inc(Counter2,1);
Procedure2();
}
left_arm_r(-15);
set(Counter2,1);
return;
}

void Procedure2()
{
local(urc) = wait_for (urc, update);
if (urc_compare(&local(urc), 2))
{
say_phrase(27);
move_dist(50,50);
}
else
{
}
if (urc_compare(&local(urc), 8))
{
say_phrase(28);
move_dist(50,-50);
}
else
{
}
if (urc_compare(&local(urc), 4))
{
say_phrase(23);
turn(90,-50);
}
else
{
}
if (urc_compare(&local(urc), 6))
{
say_phrase(24);
turn(90,50);
}
else
{
}
if (urc_compare(&local(urc), 1))
{
say_phrase(25);
base_up();
}
else
{
}
if (urc_compare(&local(urc), 7))
{
say_phrase(26);
base_down();
}
else
{
}
if (urc_compare(&local(urc), 3))
{
right_arm_r(3);
}
else
{
}
if (urc_compare(&local(urc), 9))
{
right_arm_r(-3);
}
else
{
}
if (urc_compare(&local(urc), 5))
{
hand_open();
}
else
{
}
if (urc_compare(&local(urc), 0))
{
hand_close(1);
}
else
{
}
return;
}

ピントが少し甘いかな。2008/01/27 17:53

FZ18で撮影。IAモード
 外は、厳しく寒い毎日だが、鶴見緑地の咲くやこの花館の温室では、熱帯睡蓮が咲き乱れている。
 温室の中は、ムシムシして少し暑い位。
 FZ18のレンズも少し曇ってしまって暫く使えなかった。
 花の写真はピントの設定が難しく、IAモードでは、やりにくい。ピンポイントでフォーカスする事が必要になってくる。
 一眼レフに比べて画面の精細度が低いので、細かな合焦の確認がやりにくい。
 インディケーターでピントが合ったと表示されても実は、地面や水面にピントが合っている場合もあるので、要注意だと思う。
 FZ18になってやはり、質感は良くなった思う。32インチの画面に拡大して詳細をチェックしてみるとFZ7に比べてややノイズが目立つ(フィルムカメラでは、これよりもずっとノイズっぽかった。)が、気にする程ではない。