Android端末からロボットを操縦する


LEGO MindStroms

LOGO社が販売している学習用のロボットのキットです。
これを使ったロボットのコンテストが世界中で開催されています。

Android の傾きセンサで LEGO MindStroms を操縦する
Android と MindStroms の間の通信には Bluetooth を使用した。
Android の傾きセンサーを使って、MindStroms の進む方向を制御する。
Android のプログラムには、JAVA ではなく、App Inventor を使用した。

Pololu m3pi

Pololu社が販売しているマイクロマウス型のロボットです。
マイコンにはNXP社のmbedを使用しています。
NXP社やARM社の展示会でもよくデモをしています。

Android 端末から pololu m3pi を操縦する
Android と m3pi の間の通信には Bluetooth を使用した。
Android のタッチパネルを使って、m3pi の進む方向を制御する。
Android のプログラムには、JAVA を使用した。


MINDdroid – AlphaRex


MINDdroid は、アンドロイドからマインドストームを操縦する LEGO の公式アプリです。

マインドストームでは AlphaRex という2足歩行のロボットを組立ることができます。
MINDdroid には、Shooterbot 以外に、AlphaRex を使ったデモが含まれています。
AlphaRex を歩かせたり、首を回したり、音楽を鳴らしたり、センサーを読み取り、アンドロイド端末にしゃべらせたり出来ます。

このアプリは、標準のマインドストームでは動作しません。
MINDGameZ と同様に leJOS ( Java for LEGO Mindstorms ) という環境で動作します。
マインドストームのOSを入れ替えるようです。

MINDdroid 1.2: New Features
YouTube Preview Image

関連
MINDdroid – Shooterbot
MINDdroid – MINDGameZ
・MINDdroid – AlphaRex


MINDdroid – MINDGameZ


MINDdroid は、アンドロイドからマインドストームを操縦する LEGO の公式アプリです。

MINDdroid には、 Shooterbot 以外に、MINDGameZ というゲームが含まれています。
1台のマインドストームで、9人までのプレーヤーが遊べます。
プレーヤーは紙に描かれた道を操縦してポイントを集めます
マインドストームに光センサーと取り付けて、道の境を検出します。
道をはみ出すとゲームオーバーです。
速さと時間でポイントが決まります。

このゲームは、標準のマインドストームでは動作しません。
leJOS ( Java for LEGO Mindstorms ) という環境で動作します。
マインドストームのOSを入れ替えるようです。

MINDGameZ: First Candidate
YouTube Preview Image


MINDdroid – Shooterbot


MINDdroid は、アンドロイドからマインドストームを操縦する LEGO の公式アプリです。

Shooterbot を傾きセンサで動かします。
Shooterbot controlled with MINDdroid
YouTube Preview Image

ソースコードが github で公開されています。

関連
・MINDdroid – Shooterbot
MINDdroid – MINDGameZ
MINDdroid – AlphaRex


ABC 2012 東北 翌日 – 被災地視察


10月21日(日) に仙台において 日本Androidの会 が主催した被災地視察に参加した。

50名ほどで、大型バスに分乗して、下記の場所を見てきました。
地元でボランティア活動をしている瀧澤さんにガイドして頂きました。
がれき処理が進んでいるとはいえ、まだまだ被害のつめ跡が残っていました。
多くの方が亡くなったことを考えると、言葉を失いました。

(1) 9時 仙台駅前 出発

(2) 石巻市 門脇小学校
海にほど近い場所にある。
ほとんどの児童は、学校裏の高台に避難し、無事だった。
我々も避難路を歩いてみた。

(3) サン・ファンパーク (いしのまき大漁まつり)
ここで昼食。
いしのまき大漁まつりは、毎年 石巻魚市場 で開催されるイベントです。
昨年は中止されたが、今年はサン・ファンパークに会場を移して開催された。
本来は、送迎バスのみで自家用車での来場ができないが、石巻市役所のご好意で大型バスの乗り入れが許可されました。

(4) 女川町 漁港
4階建てのビルが丸ごと横倒しになっており、津波の威力の凄まじさを感じた。

(5) 石巻市 大川小学校
北上川の河口から 5km 上流にある。
津波が想定されておらず、多くの方が亡くなった。

(6) 17時 仙台駅前 解散

関連
ABC 2012 東北 前日
ABC 2012 東北 当日
・ABC 2012 東北 翌日 – 被災地視察


ABC 2012 東北 当日


2012年10月20日(土)に仙台の東北大学で開催された ABC 2012 東北 にスタッフとして参加した。

朝7時から深夜26時までとハードな1日でした。
丸一日 裏方として動いていたので、
カンファレンスは1つも聞いていないです。
バザールは合間に少して見て回った程度です。
懇親会は遅れていったら 食べ物が残っていなかった。

では、一日の流れを。
朝7時にホテルでピックアップして貰う。
15分ほどで東北大学に着く。
講義棟で昨夜バンに積み込んだ荷物を下ろす。

8時に萩ホールへ移動する。
40名ほどのスタッフが集まっていた。
スタッフの受付をして、緑のスタッフパーカーを受け取る。
9時には全員 緑色になっていた。

9時半に萩ホールでの受付が開始した。
講義棟に移動して、バザールの準備をする。
1時半ほどで事前に送られた荷物が一通り片付いた。
この日は快晴。 講義棟での受付も始まった。

11時に萩ホールに移動する。
基調講演を行っている時間だが、2階の即売会場を見て回る。
仙台もくもく勉強会のアクセサリがかわいい。
OESF のTシャツを買いそびれた。
秋葉原支部 のNFCセットはあっという間に売れ切れたそうだ。

12時に自分の荷物を持って講義棟に移動する。
あとは撤収まで事務局部屋から移動せず。
12時半に いしのまキッチン からお弁当が届く。

13時から講義棟でのカンファレンスが開始する。
今回は1つのセッションに2つの講演を行う形式である。
予想したとおり後半の講師が来ないところがある。
講師は受付を通っているか、講師控え室にいるか、誰か講師を知っている人はいないかなど、講師探しが始める。
これがカンファレンス終了まで続いた。

合間にバザールを見て回る。
ドロイド君1号 (Gclue) と ドロイド君2号 (OESF) が大活躍していた。
フィンランド語が書かれた Angry Birds のグミもあった。

18時にカンファレンスが終了する。
手の空いたスタッフをバザール会場の後片付けに回す。
18時15分ごろに懇親会が始まったらしい。
19時に事務局部屋を撤収する。

学生食堂に移動して、懇親会に参加する。
食べ物が残っていなかった。 飲み物も焼酎しかなかった。
ビンゴの景品は豪華でした。
20時に懇親会は終了した。

東北大学から仙台駅前にタクシーで移動する。
洒楽 にてスタッフ慰労会に参加する。
50名ほど参加していて、混沌にしていて、誰が誰だが分からない。
23時に慰労会が終了した。

まだまだ仙台の夜は続くぞと、繁華街である国分町までタクシーで移動する。
とらのあな にて10名ほどで3次会。 やっと顔と素性が把握できた。
26時に3次会が終了した。

まだまだ行くぞという声を振り切って、タクシーでホテルに帰る。
明日は 被災地視察ツアー なのだ。

参考
いしのまキッチン
石巻市役所の一階にある食堂。
震災復興のひとつとして、地元のお母さんやお父さんを雇用している。

関連
ABC 2012 東北 前日
・ABC 2012 東北 当日
ABC 2012 東北 翌日 – 被災地視察


ABC 2012 東北 前日


翌日の ABC東北 の準備のため、仙台に行った。
午後4時くらいに横浜を出て、夜9時ごろに仙台に到着した。
東京駅で、東北新幹線の はやて が全席指定ということを知る。
2時間先まで満席ということで、諦めて やまびこ で行く。

仙台駅がやたら広くてちょっと迷う。
徒歩5分ほどで、ホテル セントラル仙台 に着いた。

現地スタッフとのミーティングに参加した。
30名ほど参加していて、誰が誰だが分からないうちに終了した。
知らぬ間に、明日の役割が、バザール担当から、カンファレンス取りまとめに変わっていた。

荷物運びを手伝う。
クラウドガーデン からドロイド君を運び出す。
スポンジなので見かけの割に軽い。
底に穴が空いているので、上下 逆さに持っています。

東北みち会議 にバザール用の荷物が大量に届いていた。
これをバンに積み込む。
1時間くらいで終わるかと思ったが、荷物が多く2時間以上かかった。

0時すぎに夜食の牛丼を食べる。
予定では牛タンを食べに行くはずだったのに。(^^;

翌朝7時 (すでに日は変わっていたが) にピックアップしてもらうことにして、
ホテルまで送って貰った。

関連
・ABC 2012 東北 前日
ABC 2012 東北 当日
ABC 2012 東北 翌日 – 被災地視察


MAC で Windows 8 を動かす (デスクトップクラウド)


1. お名前.com デスクトップクラウド
お名前.com の有償サービスです。
今回は、デ部の勉強会のために、GMOさんのご好意で無償でお借りしています。
(1) 申請して、ユーザ名とパスワードを貰う。

2. Microsoft Remote Desktop
Mac から Windows ベースの PC を遠隔操作する無償のソフトです。
(1) ダウンロードして、インストールする。

3. 使い方
(1) アプリを起動する。
(2) デスクトップクラウドのURLをを入力する。
(3) ログイン画面になるので、ユーザ名とパスワードを入力する。
(4) Windows 8 のデスクトップ画面になる。

参考
お名前.com デスクトップクラウド
Microsoft Remote Desktop
第14回 デ部 ミーティング + Windows8


MAC で Windows 8 を動かす (VirtualBox)


1. VirtualBox
無料の仮想化ソフトです。

(1) VirtualBox をダウンロードして、インストールする。
(2) Windows 8 用の仮想マシンを設定する。
 HDD 80GB, メモリ4GB

2. Windows 8 Release Preview
無料の開発者バージョンです。

(1) ISO イメージをダウンロードする。
(2) Windows 7 環境で DVD に焼く。
(3) MAC に DVD を挿入する。
(4) 1-(2) で作成した仮想マシンを起動する。
(5) 以降、Windows 8 のインストール画面になるので、インストール作業を継続する。

参考
VirtualBox
Windows 8 Release Preview


PIC-ADK を Android 4.1 対応にする


Android 4.1 から ADK の protocol version が1から 2 にバージョンアップしました。
それに伴い PIC-ADK も protocol version 2 に対応にする必要があります。
変更するのは下記の2つのファイルです。

main.c

 
BOOL USB_ApplicationEventHandler( BYTE address, USB_EVENT event, void *data, DWORD size )
{
	...
	case EVENT_ANDROID_DETACH:
		device_attached = FALSE;

		// Reinit the device if a detach is detected
		USBInitialize(0);
		AndroidAppStart(&myDeviceInfo);
 
		return TRUE;
		break;

usb_host_android.c

 
static ANDROID_PROTOCOL_VERSION protocolVersions[] =
{
	{
		1,
		...
	},
	{
 		2,
		AndroidAppWrite_Pv1,
		AndroidAppIsWriteComplete_Pv1,
		AndroidAppRead_Pv1,
		AndroidAppIsReadComplete_Pv1,
		AndroidInitialize_Pv1,
		AndroidTasks_Pv1,
		AndroidAppEventHandler_Pv1,
		AndroidAppDataEventHandler_Pv1
	}
};

BOOL AndroidAppEventHandler( BYTE address, USB_EVENT event, void *data, DWORD size )
{
	...
	case EVENT_TRANSFER:
		...  
		if(j >= (sizeof(protocolVersions)/sizeof(ANDROID_PROTOCOL_VERSION)))
		{
			//If we don't support that protocol version, use the next best version

			//Override the protocol version specified by the device                       
			devices[i].protocol = protocolVersions[j-1].versionNumber;                       

			devices[i].state = READY;                       
			devices[i].protocolHandle = protocolVersions[j-1].init(devices[i].address,devices[i].flags, devices[i].clientDriverID);                   
		}

修正したファイルは code.google にあります。

参考
PIC24F ADK device not working on Android Jelly Bean (Nexus 7 Tablet)
ADK 1.0 devices fail to work with Jelly Bean, why?

関連
PIC24FJ64GB002のADK開発環境
ADK 2012