Stap 5: Object vermijden
Om autonoom rijden, moet het voertuig te kunnen controleren en vermijd obstakels die zoals het drijft wordt aangetroffen. Ik omgaan met een ultrasone sensor "ping" en sommige computer logica.
Het is een eenvoudige ultrasone sensor. Ik dat in combinatie met de Arduino NewPing bibliotheek, die een grote verbetering ten opzichte het oorspronkelijke Ping-bibliotheek is (o.a., het vereist alleen een enkele gedeelde pin voor zowel verzenden & ontvangen).
De sensor is vrij basic, en heeft een zeer smalle gezichtsveld. Voor dit project, ben ik alleen met behulp van een interne sensor met een vaste positie (niet een ingrijpende "radar" type uitvoering).
Ik de sensor aan de voorbumper van het voertuig met sommige Surgu gemonteerd. Dit was mijn eerste keer met behulp van het product, en het werkt erg goed. Ik heb alleen gebruikt een interne 3,5 g-pakket, en dat was voldoende voor dit doel.
De sensor heeft de neiging om terug te keren de occasionele oneven of willekeurige waarde... niet zeker waarom. In zijn uitstekende reeks artikelen, Miguel Grinberg biedt een eenvoudige oplossing: gebruik een zwevend gemiddelde. Ik aangenomen zijn klasse van de MovingAverage aan het project met goede resultaten.
De checkSonar()-routine houdt voortdurend nieuwe metingen, het toevoegen van elke nieuwe meting tot de bewegende gemiddelde; het gemiddelde wordt dan gebruikt voor programmalogica.
Als een object wordt gedetecteerd, wordt de volgende logica wordt toegepast:
- Rustig aan
- Als het voertuig gaat rechte (niet draaien), schakelt u in de richting dichtst bij onze waypoint (technisch, zich het dichtst bij de cursus naar onze waypoint).
- Als het voertuig al draaien is, schakelt u in de tegenovergestelde richting om te proberen te voorkomen van het object.
- Als wij binnen een definieerbare afstand (TOO_CLOSE) van het object krijgen, stoppen, back-up en probeer het opnieuw.
Als we eenmaal een duidelijk pad vooruit, hervat normale navigatie.