オープンハウス@スイッチサイエンス


2014年9月15日に スイッチサイエンスさんの社内見学会 に参加しました。

社内見学
ずらりと並ぶ商品棚。商品数は約2000点らしい。
20140915_switch_science_shelf_120140915_switch_science_shelf_2

売れ筋の ラズパイB+ は別格。
展示会用の ラピロ たち。
20140915_switch_science_raspi 20140915_switch_science_rapiro

製品組み立て
自社製品の一部は、社内で組み立ているそうです。
基板は FTDI USBシリアル変換アダプター

作業の流れは。
基板を枠に固定する。
はんだペーストを塗る。
チップマウンターで部品を実装する。
リフローマシンでハンダを溶かす。
20140915_switch_science_assembly_120140915_switch_science_assembly_2
20140915_switch_science_assembly_320140915_switch_science_assembly_4

リフローマシン は自家製です。
外側は段ボール。中身はオーブントースター。温度調整のコントローラーは自作。
20140915_switch_science_refolw_120140915_switch_science_refolw_2 20140915_switch_science_refolw_3

リフロー体験会
20140915_switch_science_workshop_12 20140915_switch_science_workshop_1

基板を枠に固定する。
20140915_switch_science_workshop_2 20140915_switch_science_workshop_3

はんだペーストを塗る。
20140915_switch_science_workshop_420140915_switch_science_workshop_5

手作業で部品を実装する。 苦戦しました (^^;
20140915_switch_science_workshop_6 20140915_switch_science_workshop_7

ホットプレート でハンダを溶かす。 その様子に興味津々。
20140915_switch_science_workshop_820140915_switch_science_workshop_9

電池を入れて、動作確認。う〜ん! LEDが1つ光らん。
チップ抵抗にハンダが乗っていなかったので、追加ハンダをしてもらう。
無事 動いた。(^o^)
20140915_switch_science_workshop_1020140915_switch_science_workshop_11


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 を動かす


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 から RAPIRO を動かす


20140302rapiro_move20140302rapiro_pose

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

Android から制御できるようにしてみました。
Rapiro を Android の USB ホストで接続します。
Move コマンドをボタン1つで送信できます。
Pose コマンドを シークバーで送信できます。

ソースは code.google で公開しています。
PhysicaloidLibrary が必要です。 別途ダウンロードしてください。

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


RAPIRO を動かす


20140301rapiro

Rapiro では Arduino のサンプルスケッチが配布されています。
しかしながら、説明書は付いていません。

最初に行うのは、トリム角度の調整です。
これはオンラインマニュアルの最後に書かれています。

// Fine angle adjustments (degrees)
int trim[MAXSN] = { 0,  // Head yaw
                    0,  // Waist yaw
                    0,  // R Sholder roll
                    0,  // R Sholder pitch
                    0,  // R Hand grip
                    0,  // L Sholder roll
                    10,  // L Sholder pitch
                    0,  // L Hand grip
                    5,  // R Foot yaw
                    3,  // R Foot pitch
                    12,  // L Foot yaw
                    14}; // L Foot pitch

ソースを読んでみたところでは、4種類のコマンドが定義されていました。
(1) Move
(2) Pose
(3) Q
(4) C

Move コマンド

#M0 : Stop 停止
#M1 : Forward 前進
#M2 : Back 後退
#M3 : Right 右回り
#M4 : Left 左回り
#M5 : Greed 目を緑色にする
#M6 : Yellow 目を黄色にする
#M7 : Blue 目を青色にする
#M8 : Red 目を赤色にする
#M9 : Push 右腕を前に延ばす

Pose コマンド

#P のあとに5つのサブコマンドがあります。
S : Servo
R : Red
G : Green
B : Blue
T : Time

Servo
SxxAxxx
Sxx はサーボ番号 00 から 11まで
Axxx はサーボ角度 000 から 180 まで

Red Green Blue
Rxxx Gxxx Bxxx
xxx は明度 000 から 255 まで

Time
Txxx
xxx は時間 000 から 999 まで 単位は 0.1秒

使い方
(1) 単発
#PR128T001 のように使います。
サブコマンドの終了には T が必要です。
#PR128 だとエラーになります。
#PR128T000 だと実行されません。

(2) 組合せ
#P S01A100 R128 T001 のように組合せも出来ます。
全てのサーボとLEDをいっぺんに設定するのが、本来の使い方のようです。

Q コマンド

Move や Pose コマンドで設定した動作を実行させます。

C コマンド

T サブコマンドで設定した時間の残り時間を表示させます。

サーボ番号と稼働範囲

00 : Head yaw : 0 – 90 – 180
01 : Waist yaw : 0 – 90 – 180
02 : R Sholder roll : 0 – 0 – 180
03 : R Sholder pitch : 40 – 130 – 130
04 : R Hand grip : 60 – 90- 110
05 : L Sholder roll : 0 – 180 – 180
06 : L Sholder pitch : 50 – 50 – 140
07 : L Hand grip : 60 – 90- 110
08 : R Foot yaw : 70 – 90 – 130
09 : Foot pitch : 70 – 90 – 110
10 : L Foot yaw : 50 – 90 – 110
11 : L Foot pitch : 50 – 90 – 110

数値は、角度の 最小 – 初期値 – 最大

サーボの特性

EMAX ES3103ES08A の動作角度を180度にしたモデルらしい。


RAPIRO の組立て


20140223rapiro_finish

2014年2月23日(日) FabLab Kannai で Rapiro を組み立てました。
RapiroRapberry Pi から制御する小型のロボットです。
KickStarter で約1千万円の資金調達に成功したプロジェクトです。

当初は一人で組み立てるつもりでしたが。
うまくタイミングがあって、Rapberry Pi ユーザグループの太田さんと大内さんと一緒に作業しました。
一人でやっていたら途中で挫けていたかもしれず、大変ありがたかったです。
組立てに6時間、動作確認に1時間ほどかかりました。

箱を開けると、白い筐体のパーツがあります。
しかし、パーツリストも組み立て手順書もついていません。
代わりに、213枚の写真の オンラインマニュアル が用意されています。

20140223rapiro_parts 20140223rapiro_manual

これを1枚づつ確認しながら作業しました。
似たような部品や分かり難いところもあり、これでいいのかと話しながら進めました。
組立て中の写真は GoogePlus で公開しています。

組立てるときのポイント

(1) プラスドライバー
1mm から 4mm くらいのプラスドライバーを数種類用意しておくといいです。
プラスチックにネジ切りしながら止めるので、握りの太いものがいいです。
精密ドライバーで作業していたら、ドライバーが途中で壊れるわ、指の皮が剥けるわ、悲惨な羽目になりました。

20140223rapiro_finger 080803_155727

(2) サーボを初期化する。これ 重要 です。
(3) 足のサーボのネジ止め。
 ドライバーがまっすぐ入りません。ゆっくり回します。
(4) 配線を腹部に収める。
 この頃には疲れてきて、思うように捗りませんが、あせらず作業します。

20140223rapiro_sarvo 20140223rapiro_foot
20140223rapiro_wire IMG_20140223_181415

組立てに6時間ほどかかり、終わる頃には疲労困憊です。
しかし、まだ、確認作業が待っています。
制御ボードは Arduino 互換です。
マイコンボードは Uno を選択して、サンプルスケッチを実行します。
シリアルモニタでコマンドを送ります。
例えば、 #M1 で前進します。
コマンドの定義は、どこにも書かれてなっかたので、こちらのブログ を参考にしました。

前進させると、おもいっきり左に傾きます。
サーボーを取り付ける際に、すこしずれたみたいです。
スケッチの trim を調整して、まっすぐ前進するようになりました。

YouTube Preview Image

今日はここまでです。
この次は、Rapberry Pi から制御してみます。

大切なお知らせ

梱包材のプラスチックは、運搬時に利用できます。
私は捨ててしまった。(^^;

20140223rapiro_carry

参考
Raspberry Piを搭載して遊べるロボット Rapiroが到着した!
RAPIROを組み立てました