{"id":125,"date":"2013-12-06T10:17:16","date_gmt":"2013-12-06T10:17:16","guid":{"rendered":"http:\/\/dronesonen.hibu.no\/?p=125"},"modified":"2013-12-06T13:02:25","modified_gmt":"2013-12-06T13:02:25","slug":"smart-car-siste-hardware-oppdatering","status":"publish","type":"post","link":"https:\/\/dronesonen.usn.no\/?p=125","title":{"rendered":"Smart car, siste hardware oppdatering"},"content":{"rendered":"<p>Fremgang siste uken p\u00e5 hardware siden:<br \/>\nM\u00e5l for den siste uka:<br \/>\n1. Bli kvitt det siste av elektriske problemer og f\u00e5 p\u00e5 plass sikker og tilstrekkelig str\u00f8mforsyning p\u00e5 batteri.<br \/>\n2. Opprette protokoll\/encoding for mottak av kommandoer og sending av sensordata til\/fra raspberry pi, og implementere metoder som h\u00e5ndterer dette.<br \/>\n3. Koble raspberry Pi til systemet og f\u00e5 alt til \u00e5 fungere p\u00e5 batteristr\u00f8m.<br \/>\n4. Forbedre oppl\u00f8sning og sikkerhet for metoder for kj\u00f8ring og m\u00e5ling ved interrupts og timing.<br \/>\n5. Samle alle m\u00e5linger, kildekode, kilder, og annen dokumentasjon, rydde disse, og lage en zip-fil av det som kan lastes opp til bloggen.<\/p>\n<p>12V (11.2V) batteri kom ikke i tide, s\u00e5 vi hadde ikke batteristr\u00f8m til Raspberry Pi. Det hadde ikke noe \u00e5 si siden RPi ikke hadde serial interface implementert p\u00e5 sin side. Aruino serial er fullstendig implementert. Ellers fungerer et 9V batteri som str\u00f8mleveranse for logikk og et 6V batteri drar driverkortet og motorene. Det var ikke nok spenning\/str\u00f8m fra 5V regulert ut fra Arduino Mega til \u00e5 dra IR sensorer for hjul, 4 IR-switcher for krasjprevensjon og ultralyd modulen i konfigurasjonen som var satt opp, s\u00e5 jeg droppet 3 av IR switchene og beholdt en i front for krasjprevensjon ved kj\u00f8ring fremover. Ellers ser de elektriske problemene ut til \u00e5 v\u00e6re under kontroll. M\u00e5l 1 oppfylt tilstrekkelig.<\/p>\n<p>Arduino siden av serial koblingen er fullstendig implementert, og output kommer tydelig ut. Pga prioriteringer og liten tid til \u00e5 gj\u00f8re alt sendes m\u00e5ledata for kj\u00f8rt avstand i form av transisjoner i stedet for mm, \u00e5 fikse dette burde ikke ta mange timer (1-3 avhengig av uforutsette problemer eller omstrukturering av kode). Ultralyd m\u00e5ledata oppgies i cm, mens hastighet er i mm\/s og input for kj\u00f8rekommandoer er i mm distanse for frem\/bak og grader for vinkler (10 grader oppl\u00f8sning). Data dumpes for \u00f8yeblikket med samme frekvens som navigasjon rekalkulerer (bruker feedback til \u00e5 korrigere rettning\/hastighet), men kan gj\u00f8res uavhengig med egen timer relativt enkelt. M\u00e5l 2 annsees som oppfylt tilstrekkelig fra hardware (arduino og bil) siden.<\/p>\n<p>Pga ting nevnt over ble ikke raspberry Pi koblet til. M\u00e5l 3 gikk bort.<\/p>\n<p>M\u00e5ling av hjul ble forbedret med en 32-fase rotary encoder og bruk av interrupts og timing i stedet for sampling. Resultatene ble mye mer presise, men pga slerk i det fysiske systemet (hjulene har litt d\u00f8dgang p\u00e5 festet) og suboptimal plassering av sensoren for \u00e5 sikre at transisjoner ble m\u00e5lt forekom spikes i hastighet. Disse ble h\u00e5ndtert av conditional bruk av sample ved interrupt ved \u00e5 se p\u00e5 delta timestamp. Alle transisjoner ble timestampet og lagret i et lite array som dumpes n\u00e5r det n\u00e6rmer seg fullt eller hvert sekund. Det ble brukt en liten sirkelbuffer for \u00e5 snitte de forrige hastighetene som ble m\u00e5lt, og snittet av denne bufferen ble brukt til navigasjonsalgoritmene (hastighet som feedback til power n\u00e5r et hjul kj\u00f8rer lenger enn det andre). Det var ikke nok tid til \u00e5 tweake ut tid\/hastighet spikes som forekommer, men ved tiltakene nevnt over ble dataene stabile nok til at det ikke var noe stort praktisk problem. M\u00e5l 4 ble oppfylt som forventet.<\/p>\n<p>Dump av kildekode, kilder brukt, diverse oppm\u00e5linger og utregninger, samt annen relatert\/relevant info legges ved i zip linket fra public dropbox folder: https:\/\/dl.dropboxusercontent.com\/u\/58332293\/smart_car_hardware_dokumentasjon_dump.zip<br \/>\nTidligere bilder som ikke er lastet opp : https:\/\/dl.dropboxusercontent.com\/u\/58332293\/smart_car_picture_dump.zip<br \/>\nM\u00e5l 5 oppfylt, men det kunne v\u00e6rt ryddet\/sortert bedre. Arduino kildekoden er bare samlet i en stor fil, faktorisering i klasser og rydding ble prioritert lavere enn \u00e5 f\u00e5 p\u00e5 plass funksjonalitet og f\u00e5 denne til en brukelig n\u00f8yaktighet.<\/p>\n<p>Utfordringer og feilkilder underveis:<br \/>\nHardware ankom \/ ble utlevert sent, og store obliger i andre fag i andre halvdel av semesteret (spesielt siste tredjedel) ga et veldig arbeids\/tids-press p\u00e5 slutten av semesteret. Med mer tid kunne systemet blitt forbedret en del og gjort mer ryddig.<\/p>\n<p>Det var mange elektriske problemer underveis, fra \u00e5 finne koblingsskjemaer og implementere disse riktig, til kortsluttning og jordfeil (ikke lurt \u00e5 putte ledninger i feil hull :P), og str\u00f8mforsyningsproblemer fra batteri\/arduino. En Arduino Nano (diode som er vanskelig \u00e5 bytte ut i praksis) og et par ledninger st\u00f8k med i prosessen (men det var mer irriterende og litt bortkastet tid enn en stor hindring), og veldig mange timer gikk med til feils\u00f8king av elektro-problemer.<\/p>\n<p>Motorene er ikke veldig n\u00f8yaktige eller likt balansert p\u00e5 kraft\/moment, og festet til hjulene har slerk som gj\u00f8r sensorplassering suboptimal. Dette gir utfordringer rundt n\u00f8yaktigheten og uniformheten til m\u00e5linger.<br \/>\nIR trigger sensorene er oppgitt til 3-30cm rekkevidde, men i praksis er grensen rundt 15cm og da ikke p\u00e5litelig f\u00f8r n\u00e6rmere 10cm. Dette gjorde at en aktiv brems ved \u00e5 flippe motor-rettning og gi full kraft var n\u00f8dvendig for \u00e5 ikke krasje med ting ved toppfart. Kjeglen denne ser er mindre enn tverrsnittet til bilen, s\u00e5 den kan fortsatt krasje med ting som ikke synes rett frem.<\/p>\n<p>Ultralyd sensoren (slik konfigurert her) hadde problemer med \u00e5 oppdage tynne objekter, og kjeglen den ser er s\u00e5pass stor at det er vanskelig \u00e5 plassere ting uten \u00e5 st\u00e5 like inntil dem eller stoppe og gj\u00f8re en \u00absweep\u00bb, og det var det ikke tid til \u00e5 implementere med resten av utfordringene. Om det er flere objekter innenfor kjeglen kan ogs\u00e5 m\u00e5lingene hoppe mellom disse (avhengig av plassering), som er en ekstra ting \u00e5 ta hensyn til n\u00e5r man ser p\u00e5 sensordata.<\/p>\n<p>EDIT: glemte \u00e5 bruke tilkoblede LEDs til status i siste arduino kode, det har blitt brukt under buggtesting med batteristr\u00f8m.<\/p>\n<p>EDIT2: google slides presentasjon: https:\/\/docs.google.com\/presentation\/d\/1nMYsaW7r1FLqMec0sWzp_F4ibfNtGwAnRnCxrrlolq8\/edit?usp=sharing<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Fremgang siste uken p\u00e5 hardware siden: M\u00e5l for den siste uka: 1. Bli kvitt det siste av elektriske problemer og f\u00e5 p\u00e5 plass sikker og tilstrekkelig str\u00f8mforsyning p\u00e5 batteri. 2. Opprette protokoll\/encoding for mottak av kommandoer og sending av sensordata til\/fra raspberry pi, og implementere metoder som h\u00e5ndterer dette. 3. Koble raspberry Pi til systemet [&hellip;]<\/p>\n","protected":false},"author":19,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-125","post","type-post","status-publish","format-standard","hentry","category-smart-systems-smart-car2013"],"_links":{"self":[{"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=\/wp\/v2\/posts\/125","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=\/wp\/v2\/users\/19"}],"replies":[{"embeddable":true,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=125"}],"version-history":[{"count":6,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=\/wp\/v2\/posts\/125\/revisions"}],"predecessor-version":[{"id":215,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=\/wp\/v2\/posts\/125\/revisions\/215"}],"wp:attachment":[{"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=125"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=125"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=125"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}