シンプルPiロボット - Raspberry Piで2WD自律ローバーを構築
シンプルPiロボットは、Raspberry Piを完全機能する自律移動プラットフォームへ変える実践ガイドです。ホビイストにも教育者にも、コンポーネント選定から制御コード記述、リアルタイム動画ストリーミングまで全ステップを解説します。
パーツリスト
- Raspberry Pi(全モデル対応、Pi B+またはPi Zero推奨)
- 40ピンGPIOリボンケーブル(Pi B+またはPi 2用)
- 標準ブレッドボード
- 2輪シャーシ(例:Ellipzo 2WDキット)
- 超音波距離センサー(HC-SR04)
- Pi用パワーバンク
- 充電式単3電池(2100mAh以上)
- オス/メスジャンパーワイヤー、抵抗
- Wi-Fiアダプター(EDUPまたはEDIMAX)
- 4GB以上microSDカード(OS用)
- L298デュアルモータードライバーボード
- サーボモーター(例:Futaba S3003)
- その他:ケーブルタイ、マウント用フォームテープ
ステップ1 – モータードライバー選定
L298は実績あるコスト効率の良い選択で、モーターとサーボ用に安定した5V供給を提供。速度制御用個別イネーブルピンもサポート。他にRTKモーターコントローラーシールド、Pololu DRV8835、Adafruit DC/ステッピングモーターハット等ありますが、L298のシンプルさが初心者に最適です。
ステップ2 – L298配線
ボードをシャーシに以下接続:
- DCモーターA:
OUT-A+→OUT-A- - DCモーターB:
OUT-B+→OUT-B- - サーボ:
+5V(レギュレート済み) →Servo +、GND→Servo - - イネーブルピン:ジャンパー装着でフル速度、外せばPWM速度制御可能
- 制御入力からPiのGPIOピンへ4本ジャンパーワイヤー接続(ピンアウト図参照)
- サーボ制御線を別GPIOピンに1本接続
ステップ3 – サーボ設定
サーボは定常5V電源とPWM制御信号が必要。本ビルドではFutaba S3003(4.8-6V)使用。DMA経由で信頼性高いサーボ制御可能なRPIO.PWMライブラリを採用:
sudo apt-get install python-setuptools
sudo easy_install -U RPIO
詳細はRPIO.PWM参照。
ステップ4 – シャーシ組み立て
Ellipzo 2WDシャーシキット使用。モーター、パン/チルトサーボマウント、必要ハードウェアすべて同梱。キット指示に従いPi、L298、電源コンポーネント取り付け。
ステップ5 – HC-SR04距離センサー追加
VCCを+5V、GNDをグラウンド接続。TRIGとECHOをGPIOピンへ(例:18と17)。Echoラインに1kΩ抵抗追加でPi保護。距離測定Pythonスニペット:
TRIG = 18
ECHO = 17
# (GPIO初期化と測定実行)
ステップ6 – カメラとライブストリーミング
公式Pi Cameraモジュール装着。VLCでストリーミング:
sudo apt-get install vlc
RTSPでストリーム:
raspivid -o - -t 0 -n | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/}' :demux=h264
任意デバイスでVLC開きrtsp://<PI-IP>:8554/で視聴。
ステップ7 – ピンアウトとPython制御コード
以下フルPythonスクリプトでロボット動作、距離検知、サーボ制御。RPi.GPIOでモーターロジック、RPIO.PWMでサーボPWM使用。
from RPIO import PWM
import RPi.GPIO as GPIO
import time
from subprocess import call
GPIO.setmode(GPIO.BCM)
# GPIOピン設定
GPIO.setup(19, GPIO.OUT)
GPIO.setup(26, GPIO.OUT)
GPIO.setup(16, GPIO.OUT)
GPIO.setup(20, GPIO.OUT)
GPIO.setup(21, GPIO.IN)
GPIO.setup(8, GPIO.OUT)
GPIO.setup(27, GPIO.OUT)
GPIO.setup(9, GPIO.OUT)
TRIG = 18
ECHO = 17
# 移動関数
def fwd():
GPIO.output(19, True)
GPIO.output(26, False)
GPIO.output(16, True)
GPIO.output(20, False)
# (他の移動・センサー関数は簡潔化のため省略)
while True:
inp = raw_input()
if inp == "1":
fwd()
print("robot moving forward")
# ... (他コマンド処理)
GPIO.cleanup()
ステップ8 – 組み立て写真
配線、マウント、最終組み立ての視覚ガイドとして添付画像を参照。
完全なソースコードと追加リソースはオリジナルSimple Pi Robotページで公開。
製造プロセス
- プロフェッショナルなFanucサーボモーター修理サービス
- ジーメンスサーボモーター修理:迅速・信頼性の高いサービス
- サーボモーター修理・トラブルシューティングの専門ガイド
- ArduinoとHC-SR04で作るサーボ駆動障害物回避ロボット
- Joy Robot: ArduinoとESP8266で作るスマートロボット
- Arduino向けスマート屋内ナビゲーションロボットキット
- 遊星ギアボックスがサーボモーター性能を高める理由
- サーボモーターの仕組みと重要性
- サーボモータ減速機の理解:機能、メリット、用途
- 精度最大化:ギアヘッドとサーボモータの最適ペアリング
- ロボット運用を強化する精密サーボモーション技術、選定のポイントと統合メリット