このチュートリアルはの一部です: SunFounder Rasberry Pi Pico Pico 4WD スマートカーキット
このグループに関連するファイルはまとめて表示されます。他の動画へのリンクはこの記事の下にあります。
コース レッスン8/10: Raspberry Pi Pico スマートカー – レッスン8: サーボモーターと物体追従
ハードウェアと部品
このプロジェクトはSunFounder Raspberry Pi Pico 4WDカーキットに基づいています。このレッスンで使用する主要部品は以下の通りです。
- Raspberry Pi Picoボード
- モーター付き4WDスマートカーシャーシ
- サーボモーター(耐久性のため、理想的にはメタルギアサーボ)
- 超音波距離センサー(HC-SR04)
- モータードライバーボード(カーキットの一部)
- RGB LED(視覚的フィードバック用)
- 電源(車用バッテリーパック)
サーボモーターはこのレッスンの機能の中核です。連続回転する標準的なDCモーターとは異なり、サーボモーターは特定の角度位置(通常0度から180度)に回転して保持するように設計されています。これにより、超音波センサーを正確に向けるのに最適です。サーボの品質は、ギアの材質(プラスチックか金属か)とトルクによって決まることが多く、トルクは強度と耐久性を左右します。
動作原理
以下のチャートはコードの動作を説明しています。
配線ガイド
このレッスンの配線は、組み立て済みのカーキットを基にしているため簡単です。重要な接続はサーボモーターで、Picoの特定のGPIOピンに接続する必要があります。
ビデオでは、インストラクターがサーボをRaspberry Pi Picoのピン番号18に接続しています。超音波センサーはサーボホーンの上に取り付けられ、左右に回転して周囲をスキャンできます。モーター、RGB LED、電源に関するその他の配線は、コースの以前のレッスンから事前に接続されているものと想定されています。
詳細な視覚的ガイドについては、以下の配線図を参照してください。
コードの説明
このレッスンのPythonコードは、複雑なハードウェア操作を簡素化するカスタムpico_4wdライブラリを中心に構築されています。ユーザーが設定可能な部分はスクリプトの上部にあり、車の動作を制御します。
ロボットの「手に追従する」動作をカスタマイズするために調整できる主要な変数は以下の通りです。
car.RADAR_REFERENCE = 25: これはセンサーが「認識」する最大距離(センチメートル)です。この距離を超える物体は無視されます。この値を大きくすると車の感度が上がり、小さくするとより近い物体が必要になります。car.RADAR_MAX_ANGLE = 45およびcar.RADAR_MIN_ANGLE = -45: これらはサーボがスキャンする最左角度(45)と最右角度(-45)を定義します。これにより、車の前方に90度の視野が作成されます。car.RADAR_STEP_ANGLE = 10: これはサーボがスキャンポイント間を移動する際の増分(度)です。ステップを小さく(例:5)すると解像度が細かくなりますが、完全なスキャンに時間がかかります。ステップを大きく(例:15)するとスキャンは速くなりますが、精度は低くなります。MOTOR_FORWARD_POWER = 40: これは検出された物体に向かって車が前進する際に使用されるモーターパワー(0〜100)を設定します。これを調整して車の追跡速度を変更できます。MOTOR_TURNING_POWER = 40: これは車が物体に向きを変える際に使用されるモーターパワーを設定します。値を高くすると、車はより積極的に旋回します。
main()関数のメインロジックは連続ループです。まずcar.radar_scan()を呼び出し、各スキャン角度で物体が検出されたかどうかを表す'1'と'0'の文字列を返します('1'は物体が基準距離内にあることを意味します)。次にコードはこの文字列を分析して、連続する'1'の最大グループを見つけます。これは検出された物体の中心を示します。スキャンフィールド内でこの中心がどこにあるかに基づいて、車は物体に合わせて左折、右折、または前進するように命令され、物体を追従します。
ライブプロジェクトデモ
この動画では、プロジェクトの動作を明確に実演しています。講師はまずテストスクリプトを実行し、サーボモーターを90度、0度、-90度といった正確な角度に動かせることを示します。これはサーボの可動範囲を理解し、超音波センサーを正しく取り付けるために重要です。
センサーを取り付けた後、「手に追従する」機能が紹介されます。講師が車の前で手を動かすと、サーボに取り付けられたセンサーが左右にスキャンします。車のロジックがセンサーデータを処理し、検出した手の方向へ車輪を回転させて操舵し、床の上で効果的に手を追跡します。このデモでは、物体が移動する際に車がそれを追跡し、それに応じて進行方向を調整する様子が強調されています。また、2つ目のプロジェクトも紹介されており、物体が10〜20センチメートルの距離で検出された場合に車が接近して押し出し、物体が近すぎる場合(10センチメートル未満)には後退するようにプログラムされています。
重要なポイント
このレッスンは、インタラクティブなロボット動作を作成するためのサーボモーターの使用法を学ぶ優れた入門編です。サーボと距離センサーを組み合わせることで、環境を積極的に追跡し応答できる「視覚」を持つロボットを構築できます。スキャン角度、ステップサイズ、モーター出力などのパラメーターを調整できることで、ロボットの動作を細かく制御でき、これはあらゆるロボットプロジェクトにおいて重要なスキルです。
チャプター
- [00:00] サーボモーターと物体追従の紹介
- [01:48] コースキットの特徴と機能
- [03:08] サーボモーターの動作の理解
- [06:08] Pythonコードによるサーボモーターのテスト
- [09:59] 「手に追従する」機能の説明
- [10:49] 「手に追従する」機能の実演
- [15:37] プロジェクト:物体の押し出しと後退
- [18:40] 物体押し出しプロジェクトの実演
- [19:25] まとめと次のステップ
このチュートリアルはの一部です: SunFounder Rasberry Pi Pico Pico 4WD スマートカーキット
- コース レッスン1/10: SunFounder製Raspberry Pi Pico 4WDスマートカーキット(Robojax提供)
- コース レッスン2/10: Raspberry Pi Pico 4WDスマートカーキットを動かすためのPython基礎
- コース レッスン3/10:RobojaxによるSunFounder Raspberry Pi Pico 4WDスマートカーキットの組み立て
- コース レッスン4/10: 4WDスマートカーキット用Raspberry Pi Pico拡張ボード
- コース レッスン5/10: Raspberry Pi Picoを使用したRGB LED WS2812Bの制御
- コース レッスン6/10: Raspberry Pi Pico 4WDスマートカーキットを使用したDCモーターの制御
- レッスン7/10: ライン追跡、崖検知 グレースケールセンサーの較正 Raspberry Pi Picoカー
- コース レッスン9/10: Raspberry Pi Pico 4WDスマートカーを使用した障害物回避
- コース レッスン10/10:モバイルアプリでRaspberry Pi Pico 4WDスマートカーキットを制御する
# Lesson 8/10 Pi Car Pico 4WD: Follow hand
# Download and resource page https://robojax.com/RJT630
import pico_4wd as car
car.RADAR_REFERENCE = 25
car.RADAR_MAX_ANGLE = 45
car.RADAR_MIN_ANGLE = -45
car.RADAR_STEP_ANGLE = 10
MOTOR_FORWARD_POWER = 40
MOTOR_TURNING_POWER = 40
def main():
while True:
radar_data = car.radar_scan()
if isinstance(radar_data, int):
continue
radar_data = [str(i) for i in radar_data]
radar_data = "".join(radar_data)
paths = radar_data.split("1")
length_list = []
for path in paths:
length_list.append(len(path))
if max(length_list) == 0:
car.move("stop")
else:
i = length_list.index(max(length_list))
pos = radar_data.index(paths[i])
pos += (len(paths[i]) - 1) / 2
delta = len(radar_data) / 3
if pos < delta:
car.move("right", MOTOR_TURNING_POWER)
elif pos > 2 * delta:
car.move("left", MOTOR_TURNING_POWER)
else:
#if radar_data[int(len(radar_data)/2-1)] == "0":
# car.move("stop")
#else:
car.move("forward", MOTOR_FORWARD_POWER)
try:
main()
finally:
car.move("stop")
car.set_light_off()
Common Course Links
- Purchase SunFounder Pico 4WD Smart Car Kit from AliExpress
- Purchase SunFounder Pico 4WD Smart Car Kit from eBay
- Amazon Canada: Purchase Pico 4WD Smart Car Kit by SunFounder
- Amazon France: Purchase Pico 4WD Smart Car Kit by SunFounder
- Amazon Germany: Purchase Pico 4WD Smart Car Kit by SunFounder
- Amazon Italy: Purchase Pico 4WD Smart Car Kit by SunFounder
- Amazon Japan: Purchase Pico 4WD Smart Car Kit by SunFounder
- Amazon Spain: Purchase Pico 4WD Smart Car Kit by SunFounder
- Amazon UK: Purchase Pico 4WD Smart Car Kit by SunFounder
- Amazon USA: Purchase Pico 4WD Smart Car Kit buy SunFounder
- Purchase Pico 4WD Smart Car Kit from SunFounder.com
- SunFounder Pico-4wd Car Kit Documentation
- Video Play List of 10 lesson on SunFounder Pico 4WD Smart Car Kit
リソースと参考文献
まだリソースはありません。
ファイル📁
ファイルは利用できません。