Tento návod je súčasťou: Inteligentná súprava do auta SunFounder Rasberry Pi Pico Pico 4WD
Súbory súvisiace s touto skupinou sa zobrazia spolu. Odkazy na ďalšie videá nájdete pod týmto článkom.
Kurz Lekcia 9 z 10: Vyhýbanie sa prekážkam pomocou inteligentného auta Raspberry Pi Pico 4WD
Úvod
Táto príručka, založená na lekcii 9 z 10 kurzu od Robojax, ukazuje, ako postaviť robota vyhýbajúceho sa prekážkam pomocou súpravy SunFounder Raspberry Pi Pico 4WD Smart Car. Projekt kombinuje servo riadený ultrazvukový senzor s riadením motorov, aby vytvoril robota, ktorý dokáže autonómne navigovať vo svojom prostredí. Snímač sa pohybuje ako radar, auto deteguje prekážky a inteligentne si vyberie voľnú cestu, čo z neho robí ideálny úvod do robotiky, integrácie senzorov a autonómnej navigácie.
Tento projekt nie je len hračka; je základom pre mnoho praktických aplikácií. Tu je niekoľko nápadov na inšpiráciu:
- Autonómny prieskumný robot: Postavte robota, ktorý dokáže mapovať a preskúmať miestnosť alebo vonkajší priestor bez zásahu človeka.
- Inteligentný vysávač: Použite rovnaké princípy na vytvorenie robota, ktorý naviguje v miestnosti, vyhýba sa nábytku a stenám počas upratovania.
- Bezpečnostný hliadkovací bot: Naprogramujte auto na hliadkovanie po obvode a použite ultrazvukový senzor na detekciu a hlásenie neočakávaných prekážok alebo narušení.
- Vzdelávacia platforma pre AI: Použite tento projekt ako odrazový mostík na učenie sa zložitejších algoritmov, ako je hľadanie cesty a súčasná lokalizácia a mapovanie (SLAM).
Táto lekcia sa zameriava na základnú logiku a kód, ktoré umožňujú autu robiť rozhodnutia. Auto používa servo motor na otáčanie ultrazvukového senzora, ktorý funguje ako radar na meranie vzdialeností od 0 do 180 stupňov. Kód analyzuje tieto údaje, aby našiel najširšiu voľnú cestu, a podľa toho nasmeruje auto dopredu, doľava alebo doprava. Video demonštruje celý proces, od testovania jednotlivých komponentov až po spustenie finálneho algoritmu vyhýbania sa prekážkam v reálnom bludisku.
Hardvér/Komponenty
Tento projekt je založený na súprave SunFounder Raspberry Pi Pico 4WD Smart Car. Základné komponenty použité v tejto lekcii sú:
- Mikrokontrolér Raspberry Pi Pico
- Podvozok SunFounder 4WD Smart Car so štyrmi motormi
- Doska ovládača motorov
- Ultrazvukový senzor vzdialenosti (typ HC-SR04)
- Servo motor (na otáčanie ultrazvukového senzora)
- Napájanie (batérie pre auto)
Sprievodca zapojením
Súprava SunFounder je navrhnutá na jednoduchú montáž a zapojenie je zvyčajne predpripojené cez špeciálnu rozširujúcu dosku. Ultrazvukový senzor je namontovaný na servo motore, ktorý je potom pripojený k hlavnej riadiacej doske. Toto nastavenie umožňuje otáčať senzorom na skenovanie prostredia. Pre podrobnú schému zapojenia špecifickú pre vašu súpravu si pozrite oficiálnu dokumentáciu SunFounder.
Základné pripojenia zahŕňajú piny trigger a echo ultrazvukového senzora a signálny pin servo motora, všetky pripojené na špecifické GPIO piny na Raspberry Pi Pico. Ovládač motorov je tiež pripojený k Pico na riadenie štyroch hnacích motorov. Video spomína, že kompletná dokumentácia vrátane schém zapojenia je k dispozícii na stiahnutie so súpravou.
Vysvetlenie kódu
Táto lekcia sa zameriava na logiku v príklade `obstacle_avoid`. Kód je napísaný v MicroPythone. Zatiaľ čo celý program je k dispozícii na stiahnutie, zameriame sa na kľúčové, používateľom konfigurovateľné parametre, ktoré riadia správanie auta. Tie sa zvyčajne nachádzajú na začiatku skriptu.
Tu sú hlavné premenné, ktoré môžete upraviť na doladenie výkonu vášho robota:
# Parametre radaru a pohybu
radar_reference = 20 # Minimálna vzdialenosť v cm považovaná za bezpečnú
step_angle = 10 # Prírastok uhla pre každý krok radarového skenovania
forward_speed = 30 # Rýchlosť motora pri pohybe vpred (0-100)
turn_speed = 50 # Rýchlosť motora pri otáčaní (0-100)
forward_scan_angle = 50 # Uhol, ktorý servo skenuje, keď nie je detegovaná žiadna prekážka
- radar_reference: Toto je kľúčová bezpečnostná vzdialenosť v centimetroch. Ak je prekážka detegovaná bližšie ako táto hodnota, auto ju považuje za "nebezpečenstvo" a spustí manéver vyhýbania sa. Vo videu je nastavená na 20 cm.
- step_angle: Toto definuje rozlíšenie radarového skenovania. Menšia hodnota (napr. 10 stupňov) znamená podrobnejšie skenovanie, ale trvá dlhšie. Väčšia hodnota by bola rýchlejšia, ale mohla by prehliadnuť úzke prekážky.
- forward_speed & turn_speed: Tieto riadia výkon posielaný do motorov. Môžete ich upraviť na zmenu celkovej rýchlosti a obratnosti auta. Rýchlosť otáčania je často nastavená vyššie, aby sa zabezpečilo, že sa auto dokáže efektívne otočiť.
- forward_scan_angle: Keď bezprostredné nebezpečenstvo nie je vpredu, auto zúži svoje skenovanie na tento uhol (vycentrovaný dopredu), aby častejšie kontrolovalo prekážky v priamej dráhe, čo umožňuje plynulejší pohyb vpred.
Video tiež vysvetľuje hlavnú logiku rozhodovania. Funkcia `get_direction()` analyzuje zoznam nameraných vzdialeností (prevedených na 1 a 0 pre bezpečné/nebezpečné), aby našla najširšiu súvislú cestu jednotiek "1". Na základe toho, kde sa táto najširšia cesta nachádza, funkcia vráti smer: "dopredu", "doľava" alebo "doprava". Hlavná slučka potom vykoná príslušnú akciu, otočí auto a znova skenuje, až kým nie je cesta vpred voľná.
Živý projekt/demonštrácia
Video poskytuje dôkladnú demonštráciu projektu. Začína testovaním samotného ultrazvukového senzora, aby ukázalo, ako meria vzdialenosť a vypisuje hodnoty do terminálu. Inštruktor potom vysvetľuje algoritmus vyhýbania sa prekážkam pomocou vývojového diagramu, pričom podrobne opisuje proces rozhodovania pri zatáčaní doľava a doprava. Nakoniec je auto umiestnené do malého bludiska vytvoreného z krabíc, aby demonštrovalo úplné správanie pri vyhýbaní sa prekážkam v praxi. Auto úspešne prechádza bludiskom, zatáča doľava a doprava, aby našlo voľnú cestu vpred.
Kapitoly videa
- [00:00] Úvod do vyhýbania sa prekážkam
- [01:31] Prehľad súpravy SunFounder Smart Car Kit a jej funkcií
- [02:47] Ako funguje funkcia vyhýbania sa prekážkam
- [03:34] Testovanie ultrazvukového senzora
- [07:45] Vysvetlenie algoritmu vyhýbania sa prekážkam a vývojového diagramu
- [12:49] Analýza hlavného kódu vyhýbania sa prekážkam
- [15:43] Živá demonštrácia logiky vyhýbania sa prekážkam
- [22:53] Záverečná demonštrácia s bludiskom prekážok
- [24:35] Záver a ďalšie kroky
Tento návod je súčasťou: Inteligentná súprava do auta SunFounder Rasberry Pi Pico Pico 4WD
- Kurz Lekcia 1 z 10: Raspberry Pi Pico 4WD Smart Car Kit od SunFounder od Robojax
- Kurz Lekcia 2 z 10: Základný Python na ovládanie 4WD Smart Car Kitu s Raspberry Pi Pico
- Kurz Lekcia 3 z 10: Zostavenie Raspberry Pi Pico 4WD Smart Car Kit od SunFounder od Robojax
- Kurz Lekcia 4 z 10: Rozširujúca doska Raspberry Pi Pico pre 4WD Smart Car Kit
- Kurz Lekcia 5 z 10: Ovládanie RGB LED WS2812B pomocou Raspberry Pi Pico
- Kurz Lekcia 6 z 10: Ovládanie jednosmerných motorov pomocou Raspberry Pi Pico 4WD Smart Car Kit
- Lekcia 7 z 10: Sledovanie čiary, detekcia útesu Kalibrácia stupňa šede senzora Raspberry Pi Pico auto
- Kurz Lekcia 8 z 10: Raspberry Pi Pico Smart Car – Lekcia 8: Servomotor a sledovanie objektov
- Kurz Lekcia 10 z 10: Ovládanie Raspberry Pi Pico 4WD Smart Car Kit pomocou mobilnej aplikácie
# Lesson 9/10 Pi Car Pico 4WD: Obstacle avoid
# Download and resource page https://robojax.com/RJT631
import pico_4wd as car
import time
car.RADAR_REFERENCE = 20
car.RADAR_STEP_ANGLE = 10
MOTOR_FORWARD_POWER = 30
MOTOR_TURNING_POWER = 50
FORWARD_SCAN_ANGLE = 50
car.set_radar_scan_angle(FORWARD_SCAN_ANGLE)
status = "Danger"
def get_dir(radar_data):
# get scan status of 0, 1
# print(radar_data)
radar_data = [str(i) for i in radar_data]
radar_data = "".join(radar_data)
# Split 0, leaves the free path
paths = radar_data.split("0")
# print(paths)
# print("paths: %s" % paths)
length_list = []
# Calculate where is the widest
for path in paths:
length_list.append(len(path))
if max(length_list) < 4:
return "left"
# Calculate the direction of the widest
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:
return "left"
elif pos > 2 * delta:
return "right"
else:
return "forward"
def main():
global status
# General
while True:
radar_data = car.radar_scan()
# print("radar_data: %s" % radar_data)
# If radar data return a int, means scan not finished, and the int is current angle status
if isinstance(radar_data, int):
if radar_data == 0 and status != "Danger":
print("Danger!")
status = "Danger"
car.move("stop")
car.set_radar_scan_angle(180)
continue
else:
status = "Save"
direction = get_dir(radar_data)
if direction == "left":
print("turn left")
distance = car.get_radar_distance_at(-FORWARD_SCAN_ANGLE/2)
time.sleep(0.5)
car.move("left", MOTOR_TURNING_POWER)
while True:
distance = car.get_radar_distance_at(-FORWARD_SCAN_ANGLE/2)
status = car.get_radar_status(distance)
if status == 1:
break
car.move("stop")
car.set_radar_scan_angle(FORWARD_SCAN_ANGLE)
elif direction == "right":
print("turn right")
distance = car.get_radar_distance_at(FORWARD_SCAN_ANGLE/2)
time.sleep(0.5)
car.move("right", MOTOR_TURNING_POWER)
while True:
distance = car.get_radar_distance_at(FORWARD_SCAN_ANGLE/2)
status = car.get_radar_status(distance)
if status == 1:
break
car.move("stop")
car.set_radar_scan_angle(FORWARD_SCAN_ANGLE)
else:
print("forward")
car.set_radar_scan_angle(FORWARD_SCAN_ANGLE)
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
Veci, ktoré by ste mohli potrebovať
-
eBay
-
AliExpressPurchase SunFounder Pico 4WD Smart Car Kit from AliExpresss.click.aliexpress.com
Zdroje a referencie
Zatiaľ žiadne zdroje.
Súbory📁
Kód pre Raspberry Pi
-
Sunfounder's Raspberry Pi Pico 4WD card codesall the codes for the Sunfounder's Raspberry Pi Pico 4WD
pico_4wd_car-main.zip0.02 MB