20132013年10月10日木曜日enchantMOONで三輪オムニロボットを操作してみたはじめにenchantMOONで三輪オムニロボットを操作してみました。OSで三輪ロボットを操作するという実験を行いました。OSと通信を行う、というものでした。OS+JavaScriptという組み合わせで操作できるなら、enchantMOON+JavaScriptでもいけるのでは?というのが今回の着想です。それほど簡単ではなかったので、以下に注意点をまとめます。注意点enchantMOONで動かすsocket.io.jsはesmasuiさんが手を加えたものを用います公式のsocket.io.jsでは通信ができませんでした。サーバーであるロボット側は前回はwebsocket.ioを用いましたが、enchantMOONに合わせてサーバー側もsocket.io.jsを用いるように変更しました(こちらは公式のものでOK)。(r1880)以上を用いるこれより前のバージョンでは、つながったりつながらなかったりと、通信が不安定でしたが、ver.2.6.0では安定しています。2.6.0で改善されたからだそうです。esmasuiさん、ありがとうございます。ソースの構成などenchantMOON側のソースの構成は下記のようにしました。esmasuiさんのものlib/enchant.jsタッチイベントを使いたかったので、parachesさんの『enchantMOONで「簡易版とことんぷよぷよ」を遊べるようにしてみた』を参考にenchant.jsを使ってみました。//ここにタッチエリアに応じた処理を書く。//コンマ区切りの数値を送っている。//socket.send('90,0,0,0');}コントロール画面はこんな感じです。やっつけで書きました。絵心がある人だったら、面白いコントロール画面を描けると思います。今回参考にさせて頂いたサイトenchantMOONでSocket.IOを使ってみるenchantMOONで「簡易版とことんぷよぷよ」を遊べるようにしてみた皆さんに感謝です。ビルドを試してみました。ビルド法を公開した当時とは色々と状況が変わっているので、変更点などをメモ。ついでにビルド済みファイルを公開。OSのビルド法を公開しました。OSをビルドしてみたこのビルド法は、下記の構成でソースを取得してビルドするようになっていました。上のままでは正しい解像度でのビルドができなくなっていました。正しくない解像度(7月以降)このあたりのコミットとかこのあたりのコメントを追っていくと情報が得られますが、gaiaでの簡易的な高解像度端末への対応を削除して、gecko(masterとv1.1.0hdブランチ)の高解像度端末への対応度を高めていくということのようです。S2はビルド法を下記の構成に変更しました。9この2つは素直な端末なのか、トラブルは少ないです。OSのバージョンでいうと1.1ですね。9のままにしておきたかったからです。JCROMの方は下記のようにしています。9基本的には上記の方法でビルドするのですが、下記のように、端末ごとにいくつか例外があります。v1.1.0hdでの解像度の取り扱いがうまくいっていないようなので、geckoをgecko-18、gaiaを6月末の時点のものに固定していくつか修正を加えます。JCROMは下記の通りです。v1.1.0hdでの解像度の取扱いがうまくいっておらず、さらにgecko-18でも8月以降、起動が途中で止まってしまうコードが入っているようで、gecko-18の7月末頃のコードを利用します。JCROMも同様です。9ビルド済みパッケージ公開についてせっかくなので今日の時点でのビルド済みファイルをダウンロード可能にしました。下記の各端末のページでダウンロード可能です。OSをビルドしてみたなお、アップデートは無効にしてあるので、OTAアップデートは飛んできません。これは、海外から「OTAアップデートしたらカメラが使えた!」というコメントが多くて困ったためです。OTAアップデートすると解像度が狂ったり、こちらで修正した問題点が復活したりするのでOTAアップデートすべきではないです。そもそも非公式端末にOTAアップデートが降ってきて適用できること自体問題だと思います。S3でビルド時のトラブルが多いです。作業に手を付けるのはいつになるか、わかりません。1.2にするのは難しそうだし、このあたりが限界かも?という気がしてきました。いうわけで、おしまい。