Smart Car, hardware update


Oppdatering av fremgang på hardware siden og plan (for hardware) for den siste uka:
Uke 25 november – 1 desember. Mål for uka:

  1. bruke sensordata i en feedback loop til å svinge et gitt antall grader.
  2. koble til IR sensor og bruke denne som stopp-trigger for krasjprevensjon.
  3. koble til ultralyd sensor for avstandsmåling, få brukbare sensordata, estimere nøyaktighet ved avstander, og klargjøre for sending til Raspberry pi over seriell.
  4. ta i mot kommandoer for kjøring over seriell fra Raspberry pi og eksekvere disse.
  5. Forbedre metoder (ved å bruke interrupts?) og jobbe på bedre kalibrering av sensordata sampling/tolking og feedback loops for mer nøyaktig navigasjon.

Jeg satt opp en metode som svingte et gitt antall grader i ønsket retning og brukte feedback fra sensorene på hjulene til å bestemme grader. Etter litt tweaking ble resultatet mulighet for å stå stille og rotere i steg på ca 20 grader med nøyaktighet på ca 2 grader. Begrensningen for størrelse på steg og nøyaktighet var avstanden mellom eikene  og ikke bruk av timing for målinger. Det bør være mulig å øke nøyaktighet og gjøre metoden mer finkornet med bruk av interrupts og timing kontroll. Mål 1 ble oppfylt, med rom for forbedring.

For krasj-prevensjon ble det først brukt 1 IR sensor i front, og så montert en bak og en på hver side i front for å oppdage hinder under rotasjon. Disse fungerte bra i rett linje med kort avstand, men er ikke tilstrekkelig til å fange opp små hinder som ikke kommer direkte forran dem. Avstanden var også kortere enn ønsket, men det er en begrensning ved selve sensorene. For å klare å stoppe i tide ved å kutte motorkraft er det ikke trygt å kjøre med full motorkraft. En løsning kan være aktiv bremsing, men vil kreve mer jobb og ta hensyn til timing. Mål 2 ble oppfylt som satt opp.

Ultralyd sensoren ble koblet til. Målinger virket riktige og ganske nøyaktige. Med en innlagt usikkerhet på 1cm som slingringsmonn for målinger ble målingene stabile. Brukbar avstand for målinger var ut til ca 1 meter. Dersom det var fler objekter innen «line of sight» (LOS) hoppet målingene mellom disse, så det ble lagt inn delta avstand mellom målinger for å identifisere dette (threshold satt til 10cm). Testing ble foretatt med 10-50 hz sample rate, nærmere 50 hz ga bedre resultater ved bevegelse men mer hopping mellom objekter. Vinkelnøyaktigheten og sensitiviteten på målinger var ikke høy nok til å identifisere stol/bordben, og kjeglen med LOS gjorde at resultatene ikke er pålitelige til å plassere objekter ved større avstander enn 20-40cm så lenge sensoren er statisk montert. Mål 3 ble oppfylt som forventet.

Grunnet buggtesting og fiksing av elektriske problemer som oppstod rundt batteridrift gikk mye tid med, og mål 4 og 5 ble ikke gjort mer enn planlegging og kildesøk. Det var problemer rundt spenning og strømmengde fra Arduino Mega sin 5V regulerte output ved drift fra 6V batteri når fler sensorer var i bruk samtidig. Bruk av et 9V batteri til å drive Arduinoen og 6V til driverkortet for motoren ble problemet mindre men ikke helt løst. Ved å fjerne en motstand for spenningsbegrensning for å sikre Arduino Mega mot for mye trekk (etter rådføring med Dag) ble problemet nesten løst.

Mål for den siste uka:

  1. Bli kvitt det siste av elektriske problemer og få på plass sikker og tilstrekkelig strømforsyning på batteri.
  2. Opprette protokoll/encoding for mottak av kommandoer og sending av sensordata til/fra raspberry pi, og implementere metoder som håndterer dette.
  3. Koble raspberry Pi til systemet og få alt til å fungere på batteristrøm.
  4. Forbedre oppløsning og sikkerhet for metoder for kjøring og måling ved interrupts og timing.
  5. Samle alle målinger, kildekode, kilder, og annen dokumentasjon, rydde disse, og lage en zip-fil av det som kan lastes opp til bloggen.

Leave a Reply