Scratch Day in Tokyo 2016で展示発表を行いました

2009年から続くScratch Day、伊藤研究室では2010年から参加しています。

今年は Scratch Day in Yamanashi のサポートに続いて、Scratch Day in Tokyoでは学生さんに手伝ってもらって、展示ブースでの活動を行いました。

Retro & Cheap をモットーに、親に連れてこられた小さなお友達を楽しませるような展示発表を目指しています。昨年はAIBO(retro)と小さなロボット(cheap)を使って、ミニサッカーゲーム(要はロボットを操縦してボールをゴールに入れる)を行ったのですが、小さなお友達にかなり公表だったので、今年はロボットを使った迷路抜けをやってみました。

使ったロボットは下のようなものです。

Jpeg
ロボット

今回のロボットはRaspberry piに、「ちっちゃいものくらぶ」の「ちびギアモータ+プーリー・タイヤセット」を付けた簡単なロボットベースに、TrevaとLEDライトを付けた簡単なものです。

TrevaはFeel H用のPHSのイヤホンジャックに差し込むタイプのカメラで、今時では考えられない10万画素の解像度となっています。(今回はTrevaがRetroで、ロボット全体とコースがCheapになります)

15年近く前にいしかわさんがデジQにTrevaを載せており、その頃にジャックを分けて頂いてて、ずっと放置状態だったのですが、Raspberry piに付けるカメラを物色していたところ、解像度はとても低いですが、GPIOだけで接続できるのと消費電力が小さいということで採用しました。ちなみに、会場にはいしかわさんもお見えになったのでTrevaジャックのお礼をしました。

イベントでは、このロボットをScratchで作ったプログラムで操縦して、下のような迷路を抜けさせるミッションを行いました。この迷路はゼミ唯一の女子学生が夜なべをして作ってくれたものです。中の装飾は来場した子ども達と一緒に完成させました。

Jpeg
コース

実際に迷路を抜ける様子のビデオは下の通りです。

ロボットを直接見ながら操縦するのは簡単ですが、Trevaの画像を通してだとかなり難易度が高いです。

Treva の画像取得のスピードが遅いので、のんびりした画像更新になっています。また、子ども達のクリック連打に対応するよう、あまり素早くは動けないようになっています。

使用したロボットは以前から作っていましたが、フィールドやプログラムは5日間くらいで作りあげたもので、それにしては多くの人に楽しんでもらえたと思います。せっかくなのでもう少し改良して、学園祭の展示に使おうと思っています。

また来年も何か考えて出展したいと思います。
ご来場いただいた皆様、ありがとうございました。

ScratchGainerの公開

ScratchDay 2011でデモを行ったScratchGainerのイメージおよびソースファイルを公開します。

http://info.scratch.mit.edu/Source_Code で配布されているBased On Scratchのイメージを上書きすればScratchでGainerを扱うことができるようになります。

インストール方法や使い方についてのご相談はtwitter上のアカウント @nqthm まで遠慮なくどうぞ。

なお、利用される場合は現在進行形のプロジェクトなので予告なく内容が変わることをご了承ください。

ダウンロード

イメージファイル(zip圧縮済): ScratchSourceCode1.4.image.zip
チェンジファイル: ScratchGainer1.6.cs

ライセンス

GPL v3

ScratchによるKHR-1HV(RCB-3)の制御

無事に学園祭が終わりました。今年の目玉の一つはKHR-1HVによるダンスです。おかげさまで、当日かなりの注目を浴びることができました。徹夜でモーションを完成させたロボットチームはお疲れ様でした。

2体のロボットを同時にスタートさせたいというところから、HTHやRCBCommander3では対応していないためにプログラムで制御しようということになり、せっかくだからScratchで制御しようと進んできました。

何とか使えそうなところまできたので公開いたします。

チェンジファイル:DefartNetworkConnection.cs
Scratchソース:Scratch Source Code

なんちゃってVPL Based on Scratch

Scratch Sourceで公開されているソースに手を加え、いくつかの言語ファイルを追加した「なんちゃってVPL」のイメージ、チェンジセット、POファイルを公開します。

なんちゃってVPLソース:Nanchatte-VPL.zip
Scratchソース:Scratch Source Code
Scratch1.4:Scratch Download

動作させるにはScratch 1.4のフォルダにNanchatte-VPL.zipの内容を展開し、ScratchSourceCode1.4.imageをScratchの実行形式(.exe)にドラッグ&ドロップして実行する必要があります。

ScratchSource: Morphの改造

CBlockMorph – CommandBlockMorph – BlockMorph – Morph
 if-thenやforeverなどのブロック

IfElseBlockMorph – CommandBlockMorph – BlockMorph – Morph
 if-then-elseブロック

SetterBlockMorph – CommandBlockMorph – BlockMorph – Morph
 変数のブロック

CommandBlockMorph addLabel
 コマンドや引数のMorphを生成

CommandBlockMorph fixBlockLayout
 生成したMorphの配置?

BlockMorph class initialize
CBlockBracketThickness: CBlockMorphやIfElseBlockMorphのバーの太さ

SetterBlockMorph initChangerForVar: varName
 ’change %v by %n’のブロックを生成?

SetterBlockMorph initSetterForVar: varName
 ’set %v to %n’のブロックを生成?

SerialPort2でのRCB-3制御

ScratchでKHR-1HVを制御できないか奮闘しています。単なるシリアル通信だとバカにしてかかったのですが、思うようにうまくいきません。
付属のソフトでは問題ないのですが、シリアル通信ソフトなどを利用して真似しても通信が再現できません。

ウェブで参考にしていたRubyの例ではうまくいくのでScratchでもOKだと思ったのですが…
近藤科学KHR-2HVをMac OSX Leopardから操作する
ところが上のページのサンプルを別のPCで動かしてみたら動作しませんでした。

どうやらRCB-3のタイミングが結構厳しいようです。
マイコンボードと通信 sizuのセローに乗ってどこにいこう!/ウェブリブログ

そこで今まで試していたサンプルの各所にDelayを埋め込んだところ、なんとか動作させることができました。

port := SerialPort2 new openPortNamed: '/dev/cu.usbserial-KOS1VRMH' baud: 115200.
port nextPut: 13.
Delay waitMSecs: 10.
a := port readByteArray.
port nextPut: 244.
port nextPut: 1.
port nextPut: 0.
port nextPut: 245.
Delay waitMSecs: 10.
b := port readByteArray.
Delay waitMSecs: 100.
port close.

上記はモーションの1番を実行させる例です。

とりあえず前進できてよかったのですが、機種によってDelayの値が変わりそうで怖いです。

ScratchでAIBOを動かす

Scratch v1.4に、Defart/AIBOを搭載したAIBO(ERS-7 or Later)を制御するコマンドを追加してみました。
阿部さんの作成されたネットワーク拡張をもとにして、Defart/AIBOのためのコードを追加したという単純なものです。

これでScratchからAIBOの動きをコントロールできるようになりました。
また、v1.4対応なのでWeDoと組み合わせることができます。傾きセンサーを動かしてAIBOを操縦するコードもちゃんとうごきました。

時間があれば他の機能も制御できるようにしたいと思っています。

チェンジファイル:DefartNetworkConnection.cs
Scratchソース:Scratch Source Code