.. note:: こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。 **参加する理由は?** - **エキスパートサポート**:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。 - **学び&共有**:ヒントやチュートリアルを交換してスキルを向上させましょう。 - **独占的なプレビュー**:新製品の発表や先行プレビューに早期アクセスしましょう。 - **特別割引**:最新製品の独占割引をお楽しみください。 - **祭りのプロモーションとギフト**:ギフトや祝日のプロモーションに参加しましょう。 👉 私たちと一緒に探索し、創造する準備はできていますか?[|link_sf_facebook|]をクリックして今すぐ参加しましょう! .. _py_cliff: 5. 崖検出 =========================== PiCar-Xに少し自己保護意識を与えて、自身のグレースケールモジュールを使用して崖からの突進を避けるようにしましょう。 この例では、車は休止状態になります。 もし車を崖(段差)のほうへ押すと、緊急的に起動して後退します。 **コードの実行** .. raw:: html .. code-block:: cd ~/picar-x/example sudo python3 5.cliff_detection.py **コード** .. note:: 以下のコードを **変更/リセット/コピー/実行/停止** することができます。しかし、それをする前に、 ``picar-x/example`` のようなソースコードのパスに移動する必要があります。コードを変更した後、直接実行して効果を確認できます。 .. raw:: html .. code-block:: python from picarx import Picarx from time import sleep px = Picarx() # px = Picarx(grayscale_pins=['A0', 'A1', 'A2']) # manual modify reference value px.set_cliff_reference([200, 200, 200]) last_state = "safe" if __name__ == '__main__': try: while True: gm_val_list = px.get_grayscale_data() gm_state = px.get_cliff_status(gm_val_list) # print("cliff status is: %s" % gm_state) if gm_state is False: state = "safe" px.stop() else: state = "danger" px.backward(80) if last_state == "safe": sleep(0.1) last_state = state except KeyboardInterrupt: print("\nKeyboardInterrupt: stop and exit") finally: px.stop() sleep(0.1) **どのように動作するのか?** 崖を検出する機能は次のようになります: * ``get_grayscale_data()``:このメソッドは直接3つのセンサーの読み取り値を出力します。右から左に向かっています。エリアが明るいほど、得られる値が大きくなります。 * ``get_cliff_status(gm_val_list)``:このメソッドは3つのプローブの読み取り値を比較し、結果を出力します。結果が真であれば、車の前方に崖があることが検出されます。