検索コード

レッスン7/10: ライン追跡、崖検出 グレースケールセンサーのキャリブレーション Raspberry Pi Picoカー

このレッスンはの一部です: Raspberry Pi Pico 4WDスマートカー

レッスン7/10: ライン追跡、崖検出 グレースケールセンサーのキャリブレーション Raspberry Pi Picoカー

このRaspberry Pi Picoスマートカーコースのレッスンでは、サーボモーター、超音波センサー、モーター制御を組み合わせることで、車が障害物を検出して回避できるようにする自律航法の魅力的な世界を探求します。このプロジェクトは、基本的な四輪駆動キットを、動的な環境をナビゲートできるインテリジェントなロボットへと変貌させ、センサーフュージョンやリアクティブ制御アルゴリズムを学ぶための優れた基盤となります。このプロジェクトの実世界での価値は教室をはるかに超え、家具の周りをナビゲートするロボット掃除機の構築、安全ゾーンをマッピングする警備パトロールロボットの作成、混雑した空間をナビゲートできる自律配送車両のプロトタイプ開発など、実用的なアプリケーションのプラットフォームを提供します。

このプロジェクトの中核は、サーボモーターを使用して超音波センサーを回転させ、シンプルなレーダーシステムを構築することにあります。環境を0度から180度までスキャンすることで、車は障害物までの距離を測定し、前方の最も明確な経路を特定できます。このレッスンでは、このセンサーデータを解釈してインテリジェントな運転判断を行うロジックの実装に関するステップバイステップのガイドを提供します。

ハードウェア/コンポーネント

このプロジェクトは、SunFounder Raspberry Pi Pico四輪駆動カーキットに基づいています。正確なモデルは異なる場合がありますが、必要な主要コンポーネントは以下のとおりです。

  • Raspberry Pi Picoマイクロコントローラーボード
  • SunFounder 4WDスマートカーチャシスキット(または類似品)
  • 超音波距離センサー(例:HC-SR04)
  • サーボモーター(超音波センサーを回転させるため)
  • モータードライバーボード(カーキットに統合)
  • 電源(バッテリー)

配線ガイド

このプロジェクトの配線は、通常SunFounderカーキットの拡張ボード上に事前設定されています。超音波センサーのトリガーおよびエコーピンは、サーボモーターの信号ピンとともに、Raspberry Pi Picoの特定のGPIOピンに接続されています。モータードライバーもPicoに接続され、4つのモーターの方向と速度を制御します。

お使いのキットに固有の詳細な配線図については、SunFounderが提供するドキュメントを参照してください。一般的な回路図は、キットのマニュアルまたは製造元のWebサイトに含まれていることがよくあります。

コードの説明

このレッスンでは、障害物回避プログラム内のロジックとユーザー設定可能なパラメータに焦点を当てます。コードは、超音波センサーからの入力に基づいて車の動作を制御するように構成されています。車のパフォーマンスを微調整するために調整できる主要な変数は、通常スクリプトの先頭で定義されています。

コード内で見つかる主なユーザー設定可能な設定は次のとおりです。

  • レーダー基準距離:これは、障害物が「危険」と見なされるかどうかを決定するしきい値距離(例:20 cm)です。センサーがこの値未満の距離を読み取った場合、車は回避操作を開始します。
  • ステップ角度:これは、環境をスキャンするときにサーボモーターが回転する増分(例:10度)です。ステップ角度が小さいほど詳細なスキャンが可能ですが、時間がかかります。
  • 前進速度:この変数(例:30)は、車が前進するときのモーターの出力レベルを設定します。
  • 旋回速度:この変数(例:50)は、車が旋回するときのモーターの出力レベルを設定します。これは通常、決定的な旋回を確実にするために前進速度よりも高くなります。
  • 前方スキャン角度:この値(例:50度)は、車が前進するときにサーボがスキャンする角度の範囲を設定します。狭いスキャンは高速で、進路の真上の障害物を検出するのに十分です。

これらの変数の使用方法を理解するために、車をもっと慎重に動作させたいと想像してください。RADAR_REFERENCEを25 cmに増やすと、より遠くから障害物を検出して回避できます。逆に、より速くアグレッシブな車にするには、この値を15 cmに減らすことができます。

メインロジックはget_direction()関数を使用してセンサーデータを分析します。この関数は、距離測定値の配列を「1」(空きスペース)と「0」(障害物)の文字列に変換します。次に、この文字列をゼロの位置で分割して、最も広い連続した経路を見つけます。この最も広い経路の位置に基づいて、関数は「左」、「右」、または「前」の方向を返します。メインループは対応する操作を実行します。

ライブプロジェクト/デモンストレーション

(ビデオの02:47で)インストラクターは障害物回避機能のデモンストレーションから始めます。車はサーボを使用して超音波センサーを回転させ、レーダーとして機能させます。車が移動するにつれて、周囲をスキャンして空き経路を見つけます。

(ビデオの03:34で)コードが実行され、車は開けた場所でテストされます。インストラクターはコード構造を説明し、sonarモジュールのget_distance()関数が距離の測定にどのように使用されるかを示します。センサーの読み取り値はシェルに表示され、その精度と制限が示されます。

(ビデオの07:45で)インストラクターは「obstacle_avoid」の例を開き、そのフローチャートを説明します。この視覚的な補助は、意思決定プロセスを説明します:車はスキャンし、危険をチェックし、経路がブロックされている場合、最も広い開いた経路に基づいて最適な旋回方向を決定します。

(ビデオの16:02で)ライブテストが実行されます。車は障害物(箱)を正常に検出し、その周りを操作して左に旋回し、明確な経路を見つけます。インストラクターはシェルに印刷されるリアルタイムデータを説明し、障害物には「0」、空きスペースには「1」が表示されることを示します。

(動画の22:53時点で)最後に、より複雑なデモンストレーションが複数の障害物を配置して行われます。車はコースを走行し、衝突を避けて明確な経路を見つけるために左右の判断を下しながら進み、より困難な環境でのアルゴリズムの有効性を示します。

チャプター

  • [00:00] レッスンの紹介
  • [01:31] コースとキットの概要
  • [02:47] 障害物回避機能のデモンストレーション
  • [03:34] 超音波センサーのテスト
  • [07:45] 障害物回避アルゴリズムの理解
  • [12:49] コード解説:メインループとロジック
  • [16:02] ライブテストとデータ分析
  • [22:53] 複雑な障害物コースのデモンストレーション
コードは添付されていません。

リソースと参考文献

まだリソースはありません。

ファイル📁

ファイルは利用できません。