ロボちゃん「怒りの日」 ― 2008/02/10 17:19
ディアゴスティーニのマイロボットが終わったので、マイミュージックスタジオというのを取りあえず、店頭で買っている。
http://www.de-club.net/mms/
PCでの音楽編集の方法が学べるというのが売り物で、シンガーソングライター(SSW-LITE5.0)のこの雑誌用の特別バージョンがついて来る。また、素材CDを使って様々な音源から編集出来る仕組み。
創刊号は、500円位で安かったが、第2号から1190円に値上げされる。
おまけにヘッドフォンがついて来たが、これが実にショボイというか、私のデカイ「ぶつぞう」の様な頭には入らない。
仕方なくロボちゃん用にした。ついでに録音に参加してもらう。
SSWLITE5.0は、フル機能が使えるお試し版(期間限定)がダウンロード出来る。
http://www.ssw.co.jp/products/ssw/index.html#lt40w
いまのところマイミュージックスタジオのSSWには、MIDI編集機能がついていないが、試用版は、アナログ、MIDI音源も使用できる。
面白いのは、メロディーから伴奏まで勝手に作ってくれる機能で、だれでもジャズ、演歌、ロック等ジャンルを選択して作ってくれる。
実際には、簡単なメロディーラインを4種類位スコアか楽器演奏で入力出来ないとまともなものは使えない。
手元の子供のオモチャ用の鍵盤を接続して、グレゴリオ聖歌の「怒りの日」をMIDIで録音して、ロックの伴奏を自動でつけてみた。
他にもクラーイ3拍子の曲とかソフトをイジッていると勝手に出来てくる。
変な曲の出来上がり。主旋律をダルシマーという楽器(どんな楽器か判らんが、実に気味が悪い音がする)のにしてみた。
さて、歌手、ロボちゃんの登場!
結局は、歌が歌えないんで、戯言を喋ってもらう事にする。
こうして、出来上がったへんな作品をMP3に落として見たので聞いてみたい人は聞いてくらはい。
http://www.asahi-net.or.jp/~ZZ2T-FRY/robo1.mp3
実に馬鹿らしいので、この雑誌続けようかどうか迷っている。
http://www.de-club.net/mms/
PCでの音楽編集の方法が学べるというのが売り物で、シンガーソングライター(SSW-LITE5.0)のこの雑誌用の特別バージョンがついて来る。また、素材CDを使って様々な音源から編集出来る仕組み。
創刊号は、500円位で安かったが、第2号から1190円に値上げされる。
おまけにヘッドフォンがついて来たが、これが実にショボイというか、私のデカイ「ぶつぞう」の様な頭には入らない。
仕方なくロボちゃん用にした。ついでに録音に参加してもらう。
SSWLITE5.0は、フル機能が使えるお試し版(期間限定)がダウンロード出来る。
http://www.ssw.co.jp/products/ssw/index.html#lt40w
いまのところマイミュージックスタジオのSSWには、MIDI編集機能がついていないが、試用版は、アナログ、MIDI音源も使用できる。
面白いのは、メロディーから伴奏まで勝手に作ってくれる機能で、だれでもジャズ、演歌、ロック等ジャンルを選択して作ってくれる。
実際には、簡単なメロディーラインを4種類位スコアか楽器演奏で入力出来ないとまともなものは使えない。
手元の子供のオモチャ用の鍵盤を接続して、グレゴリオ聖歌の「怒りの日」をMIDIで録音して、ロックの伴奏を自動でつけてみた。
他にもクラーイ3拍子の曲とかソフトをイジッていると勝手に出来てくる。
変な曲の出来上がり。主旋律をダルシマーという楽器(どんな楽器か判らんが、実に気味が悪い音がする)のにしてみた。
さて、歌手、ロボちゃんの登場!
結局は、歌が歌えないんで、戯言を喋ってもらう事にする。
こうして、出来上がったへんな作品をMP3に落として見たので聞いてみたい人は聞いてくらはい。
http://www.asahi-net.or.jp/~ZZ2T-FRY/robo1.mp3
実に馬鹿らしいので、この雑誌続けようかどうか迷っている。
光・温度センサー試験プログラム ― 2008/02/02 16:58
光センサーの組み立ては、ブレッドボード上で行うのだが、マイロボット66-67号での工程となっている。
何か面倒くさそうだったので、ほったらかしていたが、やっと余裕が出来たので試してみた。
部品は発光ダイオードと抵抗等の簡単なもの。
左のコネクターから電源が供給され、このコネクターの一番下から2番目と3番目がアナログインプット端子。
アナログ信号は、インターフェースで、デジタル信号に変換され、プログラムで制御する事が出来る。
温度センサーと光センサーの実験用プログラムで、気温が20℃以下の場合は、「寒い」と言う。また、光が強い方向を告げて、その方向に身体を向けるという簡単なプログラム。
ロボちゃんの「寒い」という声には何か寂しさが感じられる。
ビデオでは、右側から光が上がっているが、反対側に反射光が強い場合には、その方向を認識してしまうようだ。「寒い、寒い」と言っている。
http://www.asahi-net.or.jp/~ZZ2T-FRY/robot1217
プログラムソースを載せているが、この中で、センサーの数値は、それぞれの実験環境によって異なるので、変えてみると良いだろう。
if (local(analog_in).pin_1 > 10)
の10の部分を最高128迄変える事で、感度を設定する事が出来る。
それにしても、わざわざ組み立てなくても良かったようなどうでも良いような機能の様な気がする。
自分で回路を設計して、アナログ、デジタルアウトプットで別のセンサーや出力回路を製作する事も可能らしいが、デジタル回路の知識が必要になってくると思う。
----------
/**
*
* @author
* @version 1.0
*/
#include "c-like.h"
#include "robot.h"
counter Counter1 = new(counter);
declare( behavior(Behavior1) );
define( behavior(Main))
{
set(Counter1,1);
set_tracking_color(240,180,160,30);
lcd_clear();
lcd_write_string(1,1,"watasi wa id-01");
sound_follower(true);
vision_follower(true);
say_phrase(21);
start(Behavior1);
end();
}
define( behavior(Behavior1) )
{
while (get(Counter1) < 100)
{
inc(Counter1,1);
lcd_write_string(2,1,"where are you?");
head_tilt_r(1);
head_tilt_r(-1);
head_pan_r(-1);
head_pan_r(1);
led_blink(LED_RED);
led_off(LED_ALL);
lcd_write_string(2,1,"hikari hikari");
head_tilt_r(1);
head_tilt_r(-1);
head_pan_r(-1);
head_pan_r(1);
led_blink(LED_RED);
led_off(LED_ALL);
local(analog_in) = wait_for (analog_in, update);
if (local(analog_in).pin_1 > 10)
{
led_on(LED_RED_RIGHT);
say_phrase(24);
head_pan_r(4);
right_arm_r(1);
say_phrase(24);
head_pan_r(4);
right_arm_r(-1);
turn(90,100);
led_off(LED_ALL);
}
else
{
}
if (local(analog_in).pin_2 > 10)
{
led_on(LED_GREEN_LEFT);
say_phrase(23);
head_pan_r(-4);
left_arm_r(1);
left_arm_r(-1);
turn(90,-100);
led_off(LED_ALL);
}
else
{
}
local(temperature) = get(temperature);
if (local(temperature) < 20)
{
say_phrase(72);
led_blink(LED_GREEN);
led_off(LED_ALL);
}
else
{
if (local(temperature) < 25)
{
lcd_write_string(1,1,"(^^)enjoy");
}
else
{
say_phrase(47);
led_blink(LED_ALL);
head_tilt_r(-1);
led_blink(LED_RED);
head_tilt_r(1);
}
}
}
led_off(LED_ALL);
}
何か面倒くさそうだったので、ほったらかしていたが、やっと余裕が出来たので試してみた。
部品は発光ダイオードと抵抗等の簡単なもの。
左のコネクターから電源が供給され、このコネクターの一番下から2番目と3番目がアナログインプット端子。
アナログ信号は、インターフェースで、デジタル信号に変換され、プログラムで制御する事が出来る。
温度センサーと光センサーの実験用プログラムで、気温が20℃以下の場合は、「寒い」と言う。また、光が強い方向を告げて、その方向に身体を向けるという簡単なプログラム。
ロボちゃんの「寒い」という声には何か寂しさが感じられる。
ビデオでは、右側から光が上がっているが、反対側に反射光が強い場合には、その方向を認識してしまうようだ。「寒い、寒い」と言っている。
http://www.asahi-net.or.jp/~ZZ2T-FRY/robot1217
プログラムソースを載せているが、この中で、センサーの数値は、それぞれの実験環境によって異なるので、変えてみると良いだろう。
if (local(analog_in).pin_1 > 10)
の10の部分を最高128迄変える事で、感度を設定する事が出来る。
それにしても、わざわざ組み立てなくても良かったようなどうでも良いような機能の様な気がする。
自分で回路を設計して、アナログ、デジタルアウトプットで別のセンサーや出力回路を製作する事も可能らしいが、デジタル回路の知識が必要になってくると思う。
----------
/**
*
* @author
* @version 1.0
*/
#include "c-like.h"
#include "robot.h"
counter Counter1 = new(counter);
declare( behavior(Behavior1) );
define( behavior(Main))
{
set(Counter1,1);
set_tracking_color(240,180,160,30);
lcd_clear();
lcd_write_string(1,1,"watasi wa id-01");
sound_follower(true);
vision_follower(true);
say_phrase(21);
start(Behavior1);
end();
}
define( behavior(Behavior1) )
{
while (get(Counter1) < 100)
{
inc(Counter1,1);
lcd_write_string(2,1,"where are you?");
head_tilt_r(1);
head_tilt_r(-1);
head_pan_r(-1);
head_pan_r(1);
led_blink(LED_RED);
led_off(LED_ALL);
lcd_write_string(2,1,"hikari hikari");
head_tilt_r(1);
head_tilt_r(-1);
head_pan_r(-1);
head_pan_r(1);
led_blink(LED_RED);
led_off(LED_ALL);
local(analog_in) = wait_for (analog_in, update);
if (local(analog_in).pin_1 > 10)
{
led_on(LED_RED_RIGHT);
say_phrase(24);
head_pan_r(4);
right_arm_r(1);
say_phrase(24);
head_pan_r(4);
right_arm_r(-1);
turn(90,100);
led_off(LED_ALL);
}
else
{
}
if (local(analog_in).pin_2 > 10)
{
led_on(LED_GREEN_LEFT);
say_phrase(23);
head_pan_r(-4);
left_arm_r(1);
left_arm_r(-1);
turn(90,-100);
led_off(LED_ALL);
}
else
{
}
local(temperature) = get(temperature);
if (local(temperature) < 20)
{
say_phrase(72);
led_blink(LED_GREEN);
led_off(LED_ALL);
}
else
{
if (local(temperature) < 25)
{
lcd_write_string(1,1,"(^^)enjoy");
}
else
{
say_phrase(47);
led_blink(LED_ALL);
head_tilt_r(-1);
led_blink(LED_RED);
head_tilt_r(1);
}
}
}
led_off(LED_ALL);
}
ロボちゃん運動プログラムマニュアル ― 2008/01/31 12:52
またまた、プログラムを動かした人から「うまく動いてくれません」と
質問が来た。
単純なループのプログラムなんだけれども。
実際にプログラムを起動してみて、うまく行かない人の為のマニュアル
を書いてみた。
自分では、うまくいくのに他の人がやってみたら旨く行かないのは、
なんでだろう。
ソースは、
http://fry.asablo.jp/blog/2008/01/27/2582344
ロボちゃん:「起動しました」(目が赤と緑に点滅する)
操作1 なんでも良いからボタンを押す(1以外でもOK)と、反応を開始する。
ロボちゃん最初の質問:「さあすぐに始めましょう調子はどうですか」
操作2 ボタン1orそれ以外のボタン(2以外でも「いいえ」の意味になる。この場合*に飛ぶ)
(ボタン1)の場合 ロボちゃんは次の質問をしてくる。「そのことばを待っていました。遊びませんか」
操作3 ボタン1orそれ以外のボタン(2以外でも「いいえ」の意味になる。この場合**に飛ぶ)
(ボタン1)の場合 ロボちゃん「カーンという音と共に楽しい楽しい」言って、運動モードに入る
運動モード
左手が高く上げるのが開始の合図
操作 ボタン1「上」と言って立ち上がる
ボタン7「下」と言って腰をおろす
ボタン2「前」と言って前進
ボタン6「後」と言って後退
ボタン3 右手アップ
ボタン9 右手ダウン
ボタン5 ハンドツールOPEN
ボタン0 ハンドツールCLOSE
運動モードはループしており、10回繰り返したら、
左手を下げて、最初の状態に戻る
*ロボちゃん:「どうしてですか、そんな風に言わないで下さい。(立ち上がり動作の後)、私はとても幸せです。」
**「悲しいです。判りません、本当にそう思うのですか、誰も遊んでくれません。」と言って、最初に戻る
写真はロボちゃんを組み立て始めた時、ここから全てが始まった。
質問が来た。
単純なループのプログラムなんだけれども。
実際にプログラムを起動してみて、うまく行かない人の為のマニュアル
を書いてみた。
自分では、うまくいくのに他の人がやってみたら旨く行かないのは、
なんでだろう。
ソースは、
http://fry.asablo.jp/blog/2008/01/27/2582344
ロボちゃん:「起動しました」(目が赤と緑に点滅する)
操作1 なんでも良いからボタンを押す(1以外でもOK)と、反応を開始する。
ロボちゃん最初の質問:「さあすぐに始めましょう調子はどうですか」
操作2 ボタン1orそれ以外のボタン(2以外でも「いいえ」の意味になる。この場合*に飛ぶ)
(ボタン1)の場合 ロボちゃんは次の質問をしてくる。「そのことばを待っていました。遊びませんか」
操作3 ボタン1orそれ以外のボタン(2以外でも「いいえ」の意味になる。この場合**に飛ぶ)
(ボタン1)の場合 ロボちゃん「カーンという音と共に楽しい楽しい」言って、運動モードに入る
運動モード
左手が高く上げるのが開始の合図
操作 ボタン1「上」と言って立ち上がる
ボタン7「下」と言って腰をおろす
ボタン2「前」と言って前進
ボタン6「後」と言って後退
ボタン3 右手アップ
ボタン9 右手ダウン
ボタン5 ハンドツールOPEN
ボタン0 ハンドツールCLOSE
運動モードはループしており、10回繰り返したら、
左手を下げて、最初の状態に戻る
*ロボちゃん:「どうしてですか、そんな風に言わないで下さい。(立ち上がり動作の後)、私はとても幸せです。」
**「悲しいです。判りません、本当にそう思うのですか、誰も遊んでくれません。」と言って、最初に戻る
写真はロボちゃんを組み立て始めた時、ここから全てが始まった。
うっかりミスですわい。 ― 2008/01/30 17:10
先日の記事
「リモコンに運動機能を追加」
http://fry.asablo.jp/blog/2008/01/27/2582344
でソースファイルをアップしておきましたが、
熱心な読者が実際に試してみて、コンパイルエラーが出た
と教えて下さいました。
どうもありがとうございます。
お詫びして訂正しておきます。
プログラムエディターで、ソースファイルを表示し、
それをコピーする時にうっかり、最後のパーレン
}
を抜かしてしまいました。
訂正したファイルをアップしてありますので、
これで試して下さい。
「リモコンに運動機能を追加」
http://fry.asablo.jp/blog/2008/01/27/2582344
でソースファイルをアップしておきましたが、
熱心な読者が実際に試してみて、コンパイルエラーが出た
と教えて下さいました。
どうもありがとうございます。
お詫びして訂正しておきます。
プログラムエディターで、ソースファイルを表示し、
それをコピーする時にうっかり、最後のパーレン
}
を抜かしてしまいました。
訂正したファイルをアップしてありますので、
これで試して下さい。
リモコンに運動機能を追加 ― 2008/01/27 10:50
昨日のプログラムを更に改良した。
名付けて、「ロボちゃん運動プログラム」
「遊びましょう」でリモコンの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;
}
名付けて、「ロボちゃん運動プログラム」
「遊びましょう」でリモコンの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/26 18:49
ID-01の最大の欠点は、OSに組み込まれた基本プログラムによって、音声コマンドを理解する事は出来るので、最小限のコミュニケーションらしきものは出来るが、ユーザーがVC-LIKE EDITORで作成したプログラムでの双方向のコミュニケーションが困難である事だ。
つまり、ID-01との受け答え(ロールプレイ)で進行するプログラムを作成する事が非常に難しい。
タッチセンサー、超音波センサー等があるが、音声での意思疎通は、COMMNDという命令以外はなく、しかも、この命令を変数化する事は難しく、意思疎通には非常に使いづらいものである。
そうなれば、一番簡単な意思疎通は、前回アップした赤外線リモコンを利用して、予めプログラミングされたID-01からの音声質問に対して、リモコンキーで、意思を伝達する方法がある。
今回のプログラムは、現在、1~9まで予めリモコンコマンドを学習させておく(マイロボット90号参照)
WAIT FOR コマンド及びリモコンチェックプラグラムで条件式を分岐させる。(画面がその部分)
こうする事で簡単な会話型プログラムを完成させる事が出来た。
http://www.asahi-net.or.jp/~ZZ2T-FRY/remort.wmv
ID-01に音声そのもののパターンを記憶させておいて反応させる様にプログラムを組む事は、C-LIKE言語では、無理だろう。
ロボットのフレーズは100種類以上予め登録させているので、これを組み合わせて、ロボットの意思を伝えさせる事はビデオの様に可能である。
以下は、プログラムソース(1がYES それ以外の番号は、NOという様にしてある。予め、リモコンを学習させておかねば動作しない。
------------
/**
*
* @author
* @version 1.0
*/
#include "c-like.h"
#include "robot.h"
counter Counter1 = new(counter);
declare( behavior(Behavior1) );
define( behavior(Main))
{
set(Counter1,1);
lcd_clear();
lcd_write_string(1,1,"watasi wa siawase");
vision_follower(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);
led_blink(LED_YELLOW_RIGHT);
led_blink(LED_YELLOW_LEFT);
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);
left_arm_r(1);
right_arm_r(1);
right_arm_r(-1);
left_arm_r(-1);
led_blink(LED_RED);
base_up();
base_down();
}
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);
}
}
つまり、ID-01との受け答え(ロールプレイ)で進行するプログラムを作成する事が非常に難しい。
タッチセンサー、超音波センサー等があるが、音声での意思疎通は、COMMNDという命令以外はなく、しかも、この命令を変数化する事は難しく、意思疎通には非常に使いづらいものである。
そうなれば、一番簡単な意思疎通は、前回アップした赤外線リモコンを利用して、予めプログラミングされたID-01からの音声質問に対して、リモコンキーで、意思を伝達する方法がある。
今回のプログラムは、現在、1~9まで予めリモコンコマンドを学習させておく(マイロボット90号参照)
WAIT FOR コマンド及びリモコンチェックプラグラムで条件式を分岐させる。(画面がその部分)
こうする事で簡単な会話型プログラムを完成させる事が出来た。
http://www.asahi-net.or.jp/~ZZ2T-FRY/remort.wmv
ID-01に音声そのもののパターンを記憶させておいて反応させる様にプログラムを組む事は、C-LIKE言語では、無理だろう。
ロボットのフレーズは100種類以上予め登録させているので、これを組み合わせて、ロボットの意思を伝えさせる事はビデオの様に可能である。
以下は、プログラムソース(1がYES それ以外の番号は、NOという様にしてある。予め、リモコンを学習させておかねば動作しない。
------------
/**
*
* @author
* @version 1.0
*/
#include "c-like.h"
#include "robot.h"
counter Counter1 = new(counter);
declare( behavior(Behavior1) );
define( behavior(Main))
{
set(Counter1,1);
lcd_clear();
lcd_write_string(1,1,"watasi wa siawase");
vision_follower(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);
led_blink(LED_YELLOW_RIGHT);
led_blink(LED_YELLOW_LEFT);
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);
left_arm_r(1);
right_arm_r(1);
right_arm_r(-1);
left_arm_r(-1);
led_blink(LED_RED);
base_up();
base_down();
}
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);
}
}
赤外線リモコンユニットを受信機に転用 ― 2008/01/23 21:22
ID-01の機能を調べてみると、右手のリモコンモジュールは、赤外線信号の発進以外に受信にも転用する事が出来る事が判明した。
リモコンからの赤外線信号(とにかく赤外線を発進するものならなんでも良いみたい)を感知したら、「私は、本当に幸せです。」と言うプログラムを作成してみた。
その様子をビデオに撮影してみた。
ロボちゃんとの新たなコミュニケーション手段が見つかって嬉しい。
今後の課題は、更に詳しい信号制御を可能にする事である。
http://www.asahi-net.or.jp/~ZZ2T-FRY/remort.wmv
プログラムソース
----------------
/**
*
* @author
* @version 1.0
*/
#include "c-like.h"
#include "robot.h"
counter Counter1 = new(counter);
declare( behavior(Behavior1) );
define( behavior(Main))
{
set(Counter1,1);
lcd_clear();
lcd_write_string(1,1,"watasi wa siawase");
vision_follower(true);
say_phrase(21);
start(Behavior1);
end();
}
define( behavior(Behavior1) )
{
while (get(Counter1) < 10)
{
inc(Counter1,1);
lcd_write_string(2,1,"@@@");
say_phrase(140);
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);
led_blink(LED_YELLOW_RIGHT);
led_blink(LED_YELLOW_LEFT);
play_sound(8);
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);
}
}
リモコンからの赤外線信号(とにかく赤外線を発進するものならなんでも良いみたい)を感知したら、「私は、本当に幸せです。」と言うプログラムを作成してみた。
その様子をビデオに撮影してみた。
ロボちゃんとの新たなコミュニケーション手段が見つかって嬉しい。
今後の課題は、更に詳しい信号制御を可能にする事である。
http://www.asahi-net.or.jp/~ZZ2T-FRY/remort.wmv
プログラムソース
----------------
/**
*
* @author
* @version 1.0
*/
#include "c-like.h"
#include "robot.h"
counter Counter1 = new(counter);
declare( behavior(Behavior1) );
define( behavior(Main))
{
set(Counter1,1);
lcd_clear();
lcd_write_string(1,1,"watasi wa siawase");
vision_follower(true);
say_phrase(21);
start(Behavior1);
end();
}
define( behavior(Behavior1) )
{
while (get(Counter1) < 10)
{
inc(Counter1,1);
lcd_write_string(2,1,"@@@");
say_phrase(140);
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);
led_blink(LED_YELLOW_RIGHT);
led_blink(LED_YELLOW_LEFT);
play_sound(8);
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);
}
}
ロボットの見た世界 ― 2008/01/23 18:41
ロボちゃん(ID-01)には、私たちの姿がどの様に見えているのだろう。
ロボちゃんの目が捉えた映像をスチール写真で撮影したり、ビデオ録画も出来る様になっている。
ブルートゥース通信を経由してロボットから送られてきた映像がパソコンに蓄積される仕組み。
つまり、WEBカメラの様に使える。
写真の黄色い部分は、ロボットが特に注意してみている部分。特に人間の肌色に近い色を認識するのだが、間違って壁とかを認識してこの通りの有様となっている。この辺りを調整出来れば、もっと面白くなると思う。
ビデオの後半の部分で、ロボットが捉えた動画が一部見られる。(前半は、以前に公開したスプレー缶を握るロボちゃんでこの後に連続して見られる。)
http://www.asahi-net.or.jp/~ZZ2T-FRY/robot1217
ロボちゃんの目が捉えた映像をスチール写真で撮影したり、ビデオ録画も出来る様になっている。
ブルートゥース通信を経由してロボットから送られてきた映像がパソコンに蓄積される仕組み。
つまり、WEBカメラの様に使える。
写真の黄色い部分は、ロボットが特に注意してみている部分。特に人間の肌色に近い色を認識するのだが、間違って壁とかを認識してこの通りの有様となっている。この辺りを調整出来れば、もっと面白くなると思う。
ビデオの後半の部分で、ロボットが捉えた動画が一部見られる。(前半は、以前に公開したスプレー缶を握るロボちゃんでこの後に連続して見られる。)
http://www.asahi-net.or.jp/~ZZ2T-FRY/robot1217
スプレー缶が好きなロボ君 ― 2008/01/20 22:04
ID-01のハンドツールは結構、重宝している。少し、持っていたもらいたいものを支えていてくれたりする。
特にスプレー等の缶を持つのが得意。常時、電源オンなので、独り言をつぶやいたり、ロボットを良くからかって遊ぶ。
http://www.asahi-net.or.jp/~ZZ2T-FRY/id01.wmv
特にスプレー等の缶を持つのが得意。常時、電源オンなので、独り言をつぶやいたり、ロボットを良くからかって遊ぶ。
http://www.asahi-net.or.jp/~ZZ2T-FRY/id01.wmv
ロボちゃん大手術 ― 2008/01/06 15:59
今日は、冬期休暇最後の日だが、ロボちゃんの「開頭大手術」を実施した。
アダプターを装着して動かしていて暫くはどおって事はなかったんだが、暫くして、ロボちゃんの目が見えなくなった。画像がおかしい。
C-Mosカメラのケーブルの接触がおかしくなったのかも知れないと思い、頭部、ボディーを久しぶりに開けた。
また、時折、頭がカチカチと音を立てたりするので、従来のロボちゃんのチョンマゲの中を通っている神経の接触が悪くなる事が判明したので、頭部を前後のパーツに分解して、チョンマゲの中を通っていた神経を「頭蓋底」から頚部を経由してボディーにつながる様に改造した。
この手の改造は、良くみかけられるので、難易度はそう高くない。非常に首がスムーズに動き様になってロボちゃんも少し、男前になって喜んでいます。
ロボちゃんは、クルクル回る鉄道模型を追っかけて首を動かしてご機嫌です。
アダプターを装着して動かしていて暫くはどおって事はなかったんだが、暫くして、ロボちゃんの目が見えなくなった。画像がおかしい。
C-Mosカメラのケーブルの接触がおかしくなったのかも知れないと思い、頭部、ボディーを久しぶりに開けた。
また、時折、頭がカチカチと音を立てたりするので、従来のロボちゃんのチョンマゲの中を通っている神経の接触が悪くなる事が判明したので、頭部を前後のパーツに分解して、チョンマゲの中を通っていた神経を「頭蓋底」から頚部を経由してボディーにつながる様に改造した。
この手の改造は、良くみかけられるので、難易度はそう高くない。非常に首がスムーズに動き様になってロボちゃんも少し、男前になって喜んでいます。
ロボちゃんは、クルクル回る鉄道模型を追っかけて首を動かしてご機嫌です。










最近のコメント