Nota

Ciao, benvenuto nella community di appassionati di SunFounder Raspberry Pi & Arduino & ESP32 su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.

Perché unirti a noi?

  • Supporto esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra community e del nostro team.

  • Impara e condividi: Scambia suggerimenti e tutorial per migliorare le tue competenze.

  • Anteprime esclusive: Ottieni accesso anticipato ai nuovi annunci di prodotto e anteprime esclusive.

  • Sconti speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni festive e giveaway: Partecipa a promozioni e omaggi durante le festività.

👉 Sei pronto a esplorare e creare con noi? Clicca [here] e unisciti oggi stesso!

6. Rilevamento del Burrone

Diamo al PiCar-X un po” di consapevolezza di autoconservazione e insegniamogli a utilizzare il proprio modulo grayscale per evitare di precipitare da un burrone.

In questo esempio, l’auto rimarrà inattiva. Se la spingi verso un burrone, si sveglierà immediatamente, arretrerà e dirà «pericolo».

Esegui il Codice

cd ~/picar-x/example
sudo python3 6.cliff_detection.py

Codice

Nota

Puoi Modificare/Reset/Scopiare/Eseguire/Fermare il codice qui sotto. Prima di ciò, devi andare al percorso del codice sorgente come picar-x/example. Dopo aver modificato il codice, puoi eseguirlo direttamente per vedere l’effetto.

from picarx import Picarx
from time import sleep
from robot_hat import TTS

tts = TTS()
tts.lang("en-US")

px = Picarx()
# px = Picarx(grayscale_pins=['A0', 'A1', 'A2'])
# modifica manuale del valore di riferimento
px.set_cliff_reference([200, 200, 200])

current_state = None
px_power = 10
offset = 20
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("lo stato del burrone è:  %s"%gm_state)

            if gm_state is False:
                state = "safe"
                px.stop()
            else:
                state = "danger"
                px.backward(80)
                if last_state == "safe":
                    tts.say("danger")
                    sleep(0.1)
            last_state = state

    finally:
        px.stop()
        print("stop and exit")
        sleep(0.1)

Come funziona?

La funzione per rilevare il burrone è simile a questa:

  • get_grayscale_data(): Questo metodo restituisce direttamente le letture dei tre sensori, da destra a sinistra. Più luminosa è l’area, maggiore sarà il valore ottenuto.

  • get_cliff_status(gm_val_list): Questo metodo confronta le letture delle tre sonde e restituisce un risultato. Se il risultato è vero, viene rilevato che c’è un burrone davanti all’auto.