Chrome App から RAPIRO を動かす


YouTube Preview Image

PC から RAPIRO を動かすには、PC と RAPIRO をUSBケーブルで接続します。
次に、Arduino のシリアルモニタを起動して、コマンドを入力します。
これは、簡単な仕組みでいいのですが。
毎回コマンドを入力するのは面倒です。

Chrome App から制御できるようにしてみました。
ボタンで前進したり、
スライドバーでサーボを動かすことができます。

アプリは Chrome Store からダウンロードできます。

20140428rapiroI_chrome

Chrome App のインストール
(1) Chrome ブラウザ をインストールする。
(2) アプリを Chrome Store からダウンロードする。

アプリの操作
(1) シリアルポートとボーレートを選択する
(2) Open ボタンを押す
表示が Not Connect から Connected に変わる
(3) 矢印ボタンを押すと、RAPIRO が前進します。
(4) Pose ボタンを押すと、ポーズ画面になります。
(5) スライドバーをスライドすると、RAPIRO のサーボが動きます。

20140428rapiro_move20140428rapiro_pose

注意
サーボが壊れやすいです。
初めて動かすときは、スライダーを使わずに、
プラスボタンやマイナスボタンで少しづつ動かしてください。
特に、左右の Hand の稼働域が、70度から110度と狭いので、慎重に。

開発者向け
ソースは github で公開しています。

関連
Android から RAPIRO を動かす
Chrome App から RAPIRO を動かす


3D地図 – 西之島


20140419_3dmap_nishinoshima

国土地理院が地形図の3Dモデルを公開しています。
西之島を3Dプリンタで出力してみました。

出力してみると、ほとんど凹凸がなく、分かりにくいです。
色をつけてみたところ、分かりやすくはなりましたが、汚くなってしまった。(^^;

20140419_3dmap_makerware 20140419_3dmap_replicator

参考
地理院地図 3D
3月22日に撮影した西之島 – 国土地理院
日本全国の3D地図、国土地理院が公開 ダウンロードして3Dプリントも – itmedia
西之島 – wikipedia


Wii リモコン から RAPIRO を動かす


YouTube Preview Image

Nintendo Wii Remote, Python and The Raspberry Pi にて、
Wii リモコン から Raspberry Pi を制御する方法が紹介されています。
少し変更すると、Rapiro を動かすことが出来ます。

(1) RAPIRO に Raspberry Pi を搭載する

(2) Raspberry Pi に Bluetooth ドングルを差します。

(3) Raspberry Pi に Cwiid をインストールします。
Cwiid は C言語で記述された Wii リモコンのドライバーで、Python 用のラッパーがあります。

(4) Python スクリプト を変更します。
上記のサイトにあるサンプルスクリプトに、3行追加します。

# シリアル通信の初期化
com = serial.Serial('/dev/ttyAMA0', 57600, timeout = 10)

while True:
  if (buttons - cwiid.BTN_PLUS - cwiid.BTN_MINUS == 0):
    print '\nClosing connection ...'

    # M0 (停止) コマンドの送信
    com.write("#M0")
 
    wii.rumble = 1
    time.sleep(1)
    wii.rumble = 0
    exit(wii)
    
  if (buttons & cwiid.BTN_UP):
    print 'Up pressed'

    # M1 (前進) コマンドの送信
    com.write("#M1")
    
    time.sleep(button_delay)

(5) Python スクリプトを実行します。

$ python wii_remote_1.py

(6) Wii リモコンの 1 と 2 のボタンを同時に押します。
この動作で Wii リモコンと Raspberry Pi が接続されます。

(7) Wii リモコンのUPボタンを押すと、Rapiro が前進します。

(8) Wii リモコンのプラスとマイナスのボタンを同時に押すと、スクリプトが終了します。


RAPIRO に Raspberry Pi を搭載する


物理的な設定

ケーブル接続は下記を参考にしました
RAPIRO 組み立てにおける注意事項

見本のようにケーブルを差すと、目のところにケーブルの影が出ます。
結構 気になったので。
Raspberry Pi のピンを90度曲げて、横から差すように、変更しました。
20140407rapiro_raspberry

ソフト的な設定

Raspberry Pi では、GPIO の UART は OS のコンソールして使用されています。
これを解除します。
なお、システムファイルの変更なので、間違うと立ち上がらなくなります。

/boot/cmdline.txt の変更
console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 を削除します

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
 ⬇
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

/etc/inittab の変更

T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
 ⬇
# コメントアウトします
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

reboot して正常に立ち上がればOK。

サンプルアプリ

rapiro1.py を作成する

import serial
import time
com = serial.Serial('/dev/ttyAMA0', 57600, timeout = 10)
// 前進
com.write("#M1")
time.sleep(5)
// 停止
com.write("#M0")

GPIO の利用には root 権限が必要です。
sudo コマンドで実行します。

$ sudo python rapiro1.py

参考
Raspberry PiでUART、シリアル通信
RAPIROをpythonで動かしてみました


Android から eVY1 シールドを制御する (キーボード Google Play)


20140402_4inch

Android 端末から eVY1 シールドを制御します。
4インチ用のキーボード・アプリ と、10インチ用 を統合したものです。

Google Play に登録しました。
アプリの使い方は、アプリ紹介 へ。

Google Play に登録するにあたり、1つのアプリで 4インチ、7インチ、10インチに対応しました。
4インチと7インチは、同じ機能なので、レイアウトは共通にして、dimens.xml で大きさを変更した程度ですが。
10インチは、 4インチよりも機能を増やしており、レイアウトのUIパーツも増えています。
そこで、次のようにしました。
(1) 10インチ用のリソース・フォルダを用意する
layout-sw720dp, drawable-sw720dp, values-sw720dp
(2) Configuration#smallestScreenWidthDp にて、画面サイズを判定して、UIパーツの処理を分岐する。

さらに、対応OSを Android 3.1 以降としました。
その過程で、レイアウト・ファイルの記述を変更しました。
打楽器の選択画面にて、dialog_percussion_list_item.xml を使っています。
これの中身は、simple_list_item_1.xml です。
API 17 ( OS 4.2 ) から追加された paddingStart などを使っています。
それ以前の実機では落ちるので、paddingLeft に変更しました。

ソースコードは github に置いています。