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.