JackPot on Pharoのファイル公開

前期の専門ゼミナールの前半に題材として取り上げたJackPotのソースを公開します。
JackPotは「がまぐ 2011/2」の特集:ゲームデザインで取り上げられている土本さんによるゲームです。
「がまぐ」ではJavaのソースが公開されていますが、これをPharoに移植してゼミで使い、Pharoの使い方やSmalltalk/80の文法などを学びました。

★ステップ1★
最初は配布したソースコードによってゲームの動作を把握します。
配布時ソースコード(Mac版)
配布時ソースコード(Windows版)
動作画面

※Worldメニュー-WorkspaceでWorkspaceを開き、「JackPot new openInWorld」と入力して選択し、コンテキストメニュー-Do itを選んで実行します。
※利用しているPharoのバージョンは1.2.1です。http://www.pharo-project.org よりダウンロードするか、末尾のZIPファイルをダウンロードして展開してください。
※入力キーコードの違いにより、配布時ソースコードをMac版とWindows版に分けています。

★ステップ2★
ゲームに対して簡単な変更を加えます。ステップ1のままではすぐに負けてしまうため、自機のスピードを2倍にします。
変更部分のソースコード(チェンジファイル)
変更の様子と動作画面

変更部分のソースコードは、Worldメニュー-Tools-File BrowserでFile Browserを開き、該当ファイルを選んでFile Inします。

★ステップ3★
ステップ2で簡単になりすぎたゲームを改良します。具体的には宝物を取った時に待つようにします。
変更部分のソースコード(チェンジファイル)
変更の様子と動作画面

★ZIPファイル★
なお、Pharo/Squeakに不慣れなWindowsユーザーのために、ステップ1からステップ3のファイルを同梱し、ステップ1の状態になっているzipファイルを公開します。
JackPot.zip (19,211,251バイト)

Defart4の仮公開

先日行われたロボカップに使用したDefart4システムのソースを公開します。

きちんとビルドするには、公開したソース以外のファイルが必要となりますので、興味のある方はお問い合わせページより、伊藤までご連絡ください。

little smalltalkソース:little015.tgz

ライブラリソース:rmlib012.tgz

正式なものについては追って公開する予定です。

RM-eyeとRCB-3との接続

週末にロボカップが始まるという状況で、ようやくイクシスリサーチのRM-eyeと近藤科学のRCB-3との接続確認を行いました。

RM-eye上のCN3と、RCB3の高速シリアル接続端子とをストレートケーブルで接続します。

CN3をCN2と勘違いしていたため昨日1日つぶしてしまいましたが、きちんと動作確認することができました。

なお、マニュアル(RM-eye 取扱説明書 Ver.1.1)のp11にはクロスケーブルを使用すると記載があるので注意が必要です。

RM-eye-というソフトウェアでは自動実行の手順を書き込むことができるのですが、その内容が保存されないため、毎回設定が必要で、えらく面倒な様子です。
このところのプロトコルも公開されるといいのですが…

サイト停止のお知らせ

ITOLABのサイトをアップグレードするため、下記の期間、一時的にサイトが利用できなくなります。
ご迷惑をおかけしますが、ご協力をお願いいたします。

停止予定期間:3月22日〜3月28日

よろしくお願いいたします。

RM-boardの開発環境整備4

しばらく浅草ギ研のS-Eyeの接続にハマっていました。
ボーレート設定の読み違えという初歩的なミスで、数日間を費やしてしまいました。サポートの方、ごめんなさい。
S-Eyeが接続できることがわかったのと、RM-eyeで二値化画像が得られることがわかったのとで、今度は開発環境整備の方を進めることにしました。
先日のlitte smalltalkはくせ者なのですが、せっかくSmalltalkで書けるのだからと採用を予定しています。

今日はPC上のsqueakとのネットワーク接続を試みました。little smalltalkにTCPの通信機能を実装している暇はないので、単純にstdinとstdoutを置き換える形で実装してみました。これで、squeak上からTCPで接続して、RM-board上のlittle smalltalkを操作できるようになりました。

サーボもつないで動かしてみたのですが、ホームポジションの設定がまずかったらしく、レレレのおじさんのような格好になってしまいます。下半身強化のため足部を外していたのでよかったですが、つながってたらかなり悲惨なことになっていそうです。

これからサーボ制御まわりに取りかかります。

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

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

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

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

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

RM-boardの開発環境整備3

前回は開発環境としてluaの組み込みに成功しましたが、やはりITOLABでの基本言語はSmalltalkだろうということで、RM-boardにSmalltalkを組み込むことに成功しました。

といってもSmalltalk/80の現在の主流であるSqueakやCincomではなく、Little Smalltalkを組み込みました。

Little Smalltalkはsumimさんのブログに詳しいですが、ティモシー・バッドの作成した学習用の実装です。

オリジナルのソース:small.v3.tar

これをubuntu上でARM用にクロスコンパイルし、RM-boardに移してsystemImageを構築しました。一部に手直しが必要だっただけで、ほとんどすんなりとコンパイルすることができました。

それからLua用に用意したRM-boardのサーボを制御するルーチンをプリミティブとして実装し、LittleSmalltalkからサーボの制御ができるようになりました。

LittleSmalltalkでどの程度本格的なプログラムが組めるのかまったく未知数ですが、面白そうなのでしばらくはこれで開発を進めてみようと思います。

RM-boardの開発環境整備2

iXsリサーチから提供されているRM-boardの開発環境は、VMWare上のDebianを使ったC言語のクロスコンパイル環境です。

これならRM-boardのパフォーマンスを最大限に生かすプログラムを作れますが、まだ何から手をつけてよいかわからない段階では、いちいちコンパイルして転送して実行するのは面倒くさいです。

何か良い言語がないかと思ったのですが、ゼミでやっているLuaがちょうど良いのではないかと考えました。たしか、4足でJollyPochieチームもLuaを使っていたはずですし。

とりあえず最新の5.1.4をダウンロードすると216Kbyte程度しかありません。シンプルでよいですね。Macではあっけなくコンパイル&実行できました。

次にVirtualBox上のUbuntuに転送し、先に構築したクロス環境でビルドしてみました。そのままではエラーやら出たので、src/Makefileに以下のような行を適当なところに挿入。

CC = arm-linux-gcc
LD = arm-linux-ld

さらにgeneric:の行をコピーして、以下のように変更。
rmboard:
$(MAKE) all MYCFLAGS="-I/usr/arm-linux/include -DLUA_USE_MKSTEMP"

こうしてビルドしてみると見事にluaとluacが出来上がりました。

恐る恐る実機に転送して実行してみると、ちゃんとLuaが起動して実行することができました。

サーボを制御するCモジュールとリンクさせればLuaからコントロールさせることもできそうです。

実験システムとしてはとりあえず満足なのですが、せっかくなので他の手も使えないかと模索中です。これは後ほど。

RM-boardの開発環境整備

ようやく本格的にRM-boardに取り組むことにしました。
以前にやったことをおさらいしながら、最初はRM-boardでサーボを動かすことを目標に進めていきます。

まず必要なのは開発環境です。メインで使っているのがSnowLeopard/MacBookです。iXsリサーチから提供されている開発環境はVMware Player上のDebianです。Debian上の環境をそのままSnowLeopardに持ってくるのは面倒くさそうなので、同様に仮想化ソフトを使おうと思います。

RM-boardの開発環境

普段からVirtualBoxを使っているので、できればその上で開発したいと思います。VirtualBoxではVMware Playerのイメージを直接読み込むことができるので、仮想メディアマネージャでHDDのイメージを追加し、新しい仮想マシンを定義して起動させてみました。

しかし、何度起動させても途中でKernel Panicになってしまいます。/dev/consoleが開けないのが原因のようですが、よくわからないので直接的な起動はあきらめました。

VirtualBoxにはubuntuをインストールしていたので、これに先ほどのイメージをマウントし、ソフトウェアのビルドに必要なファイル一式をコピーして使うことにしました。RM-boardのベースになっているarmadilloに関係するファイルや、サンプルプログラムは/home/user配下にあるのでそのままコピーします。

これだけではarmのコンパイラやライブラリなどが不足するため、findなどでファイルを探しながら、ビルドに必要なソフトを見つけ出しました。必要なものは、/usr/lib/gcc/arm-linux/と/usr/arm-linux/のフォルダ一式と、/usr/bin/以下のarm-で始まるファイルおよび、genext2fsのようです。

これらをubuntuの同じディレクトリにコピーして、サンプルプログラムをビルドすると、test_appというファイルが出来上がりました。

(開発環境上で)
$ cd prog/sample
$ make
arm-linux-gcc -c -o main.o main.c
arm-linux-gcc -c -o sbus.o sbus.c
arm-linux-gcc -c -o rmeye.o rmeye.c
arm-linux-gcc -o test_app main.o sbus.o rmeye.o
$

サーボをつないでいない状態で、scpを使ってコピーし実行させてみると、とりあえず画面に何かしらのメッセージが出るので動いているようです。

(開発環境上で)
$ scp test_app guest@192.168.254.xx:~

(RM-boardにguestでログインした後、suでrootになった後)
$ /home/guest/test_app
SBUS INIT :OK
TEST LOOP [0]
AN0 = 403
AN1 = 489
AN2 = 490
AN3 = 497
AN4 = 464
AN5 = 473
AN6 = 481
AN7 = 469
(Ctrl-Cで停止)

サーボをS23に接続した状態で起動すると、サーボが動き出すことも確認できました。