Sumobot を Scratch から制御する


20160801_sumobot_scrach

Scratch と Python の連携 の応用として、
Sumobot を Scratch から制御します。

作成したプログラムは Github で公開しました。

主な作成手順
(1) MAC にて、Scratch プロジェクトを作成します。
画像をクリックすると、broadcast メッセージを送信する。
画像とメッセージの対応
– 上向き (forward) : “f”
– 下向き (backward) : “b”
– 左回り (left) : “l”
– 右回り (right) : “r”
– 停止 (stop) : “s”

(2) MAC にて、Python プログラムを作成します。
broadcast メッセージを受信して、Sumobot を移動する。
3秒後に停止する。

(3) Rapberry Pi (Sumobot) に転送します。

操作
(1) MAC から Rapberry Pi に VNC で接続します。
(2) Scratch プロジェクトを起動します。
(3) Python プログラムを起動します。
(4) Scratch の画像をクリックすると、Sumobot が移動します。


ラズパイ sumobot turn


sumobot turn は、Sumobot が左回転と右回転を繰り返すプログラムです。
sumobot_turn.py と sumobot_turn_check.py の2つがあります。
後者は、前者に、ピンの状態をチェックする処理を追加したものです。

インストール
Github から持ってきて、ラズパイの好きな場所 (例えば /home/pi/sumobot/ ) に置きます。

起動

$ sudo python /home/pi/sumobot/sumobot_turn.py

Sumobot が左回転と右回転を繰り返します。

注意
無線LANでログインして起動してください。
有線LANだと、LANケーブルが絡まります。

自動起動
電源を投入したときに、自動的に起動するようにします。
しかし、常に Sumobot が動き出すと、扱いにくいのです。
sumobot_turn_check.py を使用します。
これは、特定のピン (P13) の状態をチェックして、Sumobot を動かさずに、プログラムを終了する処理を追加したものです。

自動起動するには、/etc/rc.local を変更します。
exit 0 の前に、1行追加します。

$ sudo nano /etc/rc.local
...
# add
python /home/pi/sumobot/sumobot_turn_check.py
exit 0 

ハードの設定
P13(GPIO27) と P17(3.3V) の間に10KΩの抵抗を入れます。
プログラムが自動起動して、Sumobot は動き続けます。
P17(3.3V) に代わりに P14(GND) につなぐと、プログラムは終了して、Sumobot Jr は停止したままです。
20160505_raspi_circuit_p13


ラズパイ Sumobot Jr


20160505_raspi_completion

Arduino に続いて、ラズパイで Sumobot Jr を制御します。

部品
Raspberry Pi 2 B
モバイルバッテリ
・連続回転サーボ SM-S4303R x 2個
16mm ボール
・ネジとナット M2.6x10mm x 12本、M2.6x15mm x 2本
・結索バンド 20cm x 2本
・ゴムバンド #25 3mm幅 x 2本
・線材 少々

加工品
レーザー加工機
・車体 (設計データ) Arduino版と同じです
20160501_sumobot_laser_body

3Dプリンタ
・ボールキャスタ (設計データ) Arduino版と同じです
20160501_sumobot_3d_printer_ball_caster

サーボの動作確認
サーボが所望の動作をするか確認します。
特に、停止を指定したときに、ちゃんと停止しているか。

参考
ラズパイ WiringPi 連続回転サーボ
ラズパイ 連続回転サーボ

車体の組み立て
車体の作り方は、Arduino版 と同じです。
違うのは、上板に Arduino ではなくラズパイを固定すること。
20160505_raspi_upper

配線
20160505_raspi_curuit

(1) オスとメスのジャンパー線を半田付けして、オス2口とメス1口のジャンパー線にします。
20160505_raspi_wiring

(2) モバイルバッテリーを車体に入れます。
モバイルバッテリーの上下に厚紙を入れると、ほどよい感じで固定されます。
20160505_raspi_battery_back

(3) ラズパイと2個のサーボを結線します。ラズパイとモバイルバッテリーを結線します。
20160505_raspi_battery_wire

プログラム
ラズパイにプログラム sumobot_turn を設定します。
電源を入れます。
Sumobot Jr が左回転と右回転を繰り返せば、OKです。

課題
スペーサが3mm厚では足りなかった。
10mmくらい必要です。

(1) 上板にラズパイを固定すると、コネクタの足があたり、基板がしなります。
どうやら、木材のスペーサだと、締め付けると、潰れるようです。
20160505_raspi_problem_1

(2) ラズパイに電源ケーブルを挿す時に、横板が邪魔になり、ケーブルが挿さりません。
応急処置として、横板を切断しました。
20160505_raspi_problem_2_2

YouTube Preview Image

Sumobot Jr


20160501_sumobot_completion

Sumobot Jr はオープンソースのロボットカーのキットです。

オリジナルから設計データを少し変更しています。
設計データやプログラムなど Github で公開しました。

部品
Arduino Uno
電池ボックス (単三x4本)
・単三電池 x 4本
・連続回転サーボ SM-S4303R x 2個
16mm ボール
・ネジとナット M2.6x10mm x 12本、M2.6x15mm x 2本
・結索バンド 20cm x 2本
・ゴムバンド #25 3mm幅 x 2本
・線材 少々
20160501_sumobot_parts_2

加工品
レーザー加工機
・車体 (設計データ)
20160501_sumobot_laser_body

3Dプリンタ
・ボールキャスタ (設計データ)
20160501_sumobot_3d_printer_ball_caster

サーボの動作確認
サーボが所望の動作をするか確認します。
特に、停止を指定したときに、ちゃんと停止しているか。
参考: Arduino 連続回転サーボ

車体の組み立て
動画が公開されています。
Sumobot Jr Assembly video for Nodebots Day 7/27

(1) ボールキャスタの穴をキリでM2.6のネジが入るように大きくします。
20160501_sumobot_ball_hall_blue

(2) ボールキャスタを底板にネジで固定します。
20160501_sumobot_ball_calter_blue

(3) サーボホーン (サーボの付属品) の穴をキリでM2.6のネジが入るように大きくします。
20160501_sumobot_servo_horn_holl

(4) サーボホーンを車輪にネジで固定します。
20160501_sumobot_servo_horn

(5) サーボを底板に結索バンドで固定します。
20160501_sumobot_servo_mount_2

(6) Arduino を上板にスペーサーをかましてネジで固定します。
20160501_sumobot_srduino_parts20160501_sumobot_arduino

(7) 上板を車体に取り付けます。
20160501_sumobot_upper

(8) 車輪を車体に木ネジ (サーボの付属品) で取り付けます。
20160501_sumobot_wheel_2

(9) 前板を車体に取り付けます。
20160501_sumobot_front_2

(10) ボールをボールキャスタにはめ込みます。
20160501_sumobot_ball_mount_blue

配線
20160501_sumobot_circuit

(11) 電池ボックスにメスのジャンパー線を半田付けします。
(12) オスのジャンパー線を半田付けして、4つ口にします。
20160501_sumobot_soldering

(13) Arduinoと電池ボックスと2個のサーボを結線します。
20160501_sumobot_wiring

(14) 電池ボックスを車体に入れます。
電池ボックスの上下に厚紙を入れると、ほどよい感じで固定されます。
20160501_sumobot_battery

(15) 完成です。
20160501_sumobot_completion

プログラム
Arduino にスケッチ sumobot_turn を書き込みます。
電源を入れます。
Sumobot Jr が左回転と右回転を繰り返せば、OKです。

課題
ゴムバンドがすぐに車輪から外れる。
20160501_sumobot_wheel_and_rubber

YouTube Preview Image