{"id":107,"date":"2013-11-27T14:36:03","date_gmt":"2013-11-27T14:36:03","guid":{"rendered":"http:\/\/dronesonen.hibu.no\/?p=107"},"modified":"2013-11-28T11:44:47","modified_gmt":"2013-11-28T11:44:47","slug":"oppdatering-smart-car-hardware-siden","status":"publish","type":"post","link":"https:\/\/dronesonen.usn.no\/?p=107","title":{"rendered":"Oppdatering: Smart Car, hardware siden"},"content":{"rendered":"<p>Her er en oppdatering av fremgang p\u00e5 hardware siden for de forrige 2 ukene:<br \/>\n<strong>Uke 11-17 nov. M\u00e5lene for uka var:<\/strong><\/p>\n<ol>\n<li>\u00c5 koble opp den fysiske platformen med arduino og driverkortet drevet fra batteriet, men ikke enn\u00e5 koble sammen raspberry pi og arduino.<\/li>\n<li>Programmere systemet til \u00e5 kj\u00f8re rett frem, rygge, og svinge\/rotere.<\/li>\n<li>Finne avstander i forhold til rotasjon av hjul for \u00e5 kunne beregne kj\u00f8re og svingeavstander basert p\u00e5 feedback fra sensorer n\u00e5r de blir koblet opp.<\/li>\n<\/ol>\n<p>Jeg brukte breadboard vi fikk med i Arduino Nano pakken til \u00e5 splitte str\u00f8m fra batteriet. I starten brukte jeg Arduino Nano til \u00e5 gi b\u00e5de Arduino Mega og driverkortets 5V logikk regulert 5V str\u00f8m. Grunnet en manglende motstand i koblingen til jord og at driverkortet pr\u00f8vde \u00e5 kj\u00f8re p\u00e5 5V slapp Arduino Nanoen fri den bl\u00e5 r\u00f8yken i en diode p\u00e5 undersiden. Jeg fikk tak i en ny Nano, men har valgt \u00e5 ikke bruke den siden da det ikke var noe behov for det. N\u00e5 brukes breadboard bare til \u00e5 sette opp eller splitte koblinger og felles jord. Driverkortet forsyner sin egen 5V logikk med str\u00f8m fra batteri via egen spenningsregulator, og Arduino Mega tar ogs\u00e5 str\u00f8m fra batteriet til sin Vin via en motsand som begrenser str\u00f8mtrekk og regulerer spenning selv. M\u00e5l 1 ble oppfyllt.<\/p>\n<p>N\u00e5r m\u00e5l 1 var oppfylt kj\u00f8rte jeg diverse testprogrammer som satt str\u00f8m p\u00e5 motorene med PWM signal til driverkortet for \u00e5 kontrollere kraft, og kj\u00f8rte blindt siden sensorene ikke var koblet inn enn\u00e5. Metoder for alle \u00f8nskede kj\u00f8rem\u00f8nstrene ble satt opp og fungerte. Det var forskjell i moment\/kraft p\u00e5 motorene og litt feilballansering av vekten til komponentene om bord, s\u00e5 motorene m\u00e5tte ha forskjellig kraft for \u00e5 kj\u00f8re rett, og ved aktiv bremsing (bytte motorene til rygg med full fart) b\u00e5de bremset og svingte buggsteren. M\u00e5l 2 ble oppfylt.<\/p>\n<p>Jeg m\u00e5lte opp diameter p\u00e5 hjulene, avstand mellom hjulene, avstander fra midtpunktet mellom hjulene, og hvor store overheng som var ut fra hjulene og fronthjulet. Ut fra dette regnet jeg ut svingradius (ett hjul i drift), rotasjonsradius(hjulene hver sin vei), og avstand pr hjulrotasjon og pr eike p\u00e5 hjulene. Dette igjen ble brukt til estimater for antall eiker rotasjon p\u00e5 hvert hjul for gitte grader rotasjon. Poenget med \u00e5 m\u00e5le pr eike var \u00e5 bruke dette med transisjoner av sensorverdier som m\u00e5ler eiker som passerer p\u00e5 hjulene for \u00e5 m\u00e5le avstand, fart, svinging osv neste uken. M\u00e5l 3 ble oppfylt.<\/p>\n<p><strong>Uke 18-24 nov. M\u00e5lene for uka var:<\/strong><\/p>\n<ol>\n<li>\u00a0Koble til sensorer for m\u00e5ling av kj\u00f8reavstand, og f\u00e5 brukbar data fra disse.<\/li>\n<li>Bruke m\u00e5linger fra sensorene til \u00e5 se om fysiske m\u00e5l tatt forrige uke stemte, og korrigere disse.<\/li>\n<li>Bruke sensordata i feedback loop til \u00e5 kj\u00f8re rett en gitt avstand, korrigere kurs underveis, og stoppe etter avstanden.<\/li>\n<li>Bruke sensordata i en feedback loop til \u00e5 svinge et gitt antall grader.<\/li>\n<\/ol>\n<p>Grunnet en uoppdaget feilkobling av kabler gikk 5+ timer med til buggtesting av kj\u00f8reavstandssensorene via analoge readouts. Output fra sensorene er analoge data som m\u00e5ler reflektert lys. N\u00e5r feilkoblingen ble oppdaget og en modifikasjon av koblingene med en ekstra motstand mellom sensor output og Arduino input ble sensordata konvertert til et digitalt signal som var b\u00e5de stabilt, responsivt og ganske n\u00f8yaktig. M\u00e5l 1 ble oppfyllt.<\/p>\n<p>Jeg m\u00e5lte opp en meter og dyttet manuelt buggsteren mens Arduinoen telte og dumpet transisjoner av sensordata for begge hjulene til PC over seriell. De fysiske m\u00e5lene s\u00e5 ut til \u00e5 stemme ganske bra fra avstand (ca 4% avvik fra estimert via m\u00e5l med tommestokk), og m\u00e5lingene var s\u00e5 godt i sync som jeg klarte \u00e5 dytte buggsteren rett. M\u00e5l 2 ble oppfylt.<\/p>\n<p>Jeg laget en metode for \u00e5 kj\u00f8re rett og kalibrere med sensordata i en feedback loop. Pga kraftforskjell mellom motorene m\u00e5tte det korrigeres forskjellig PWM dutycycle for hjulene i software for \u00e5 kj\u00f8re rett. P\u00e5 slutten av testing og kalibrering kj\u00f8rte buggsteren 3m rett frem og stoppet innenfor et punkt grovt ca 15cm radius av punktet den var siktet p\u00e5. (dette var grovkalibrering). Punkt 3 oppfylt som forventet, mer kalibrering senere.<br \/>\nGrunnet stor innlevering i et annet fag ble det ikke tid til m\u00e5l 4.<br \/>\nM\u00e5l for denne uka (25 nov &#8211; 1 des):<\/p>\n<ol>\n<li>Bruke sensordata i en feedback loop til \u00e5 svinge et gitt antall grader.<\/li>\n<li>Koble til IR sensor og bruke denne som stopp-trigger for krasjprevensjon.<\/li>\n<li>Koble til ultralyd sensor for avstandsm\u00e5ling, f\u00e5 brukbare sensordata, estimere n\u00f8yaktighet ved avstander, og klargj\u00f8re for sending til Raspberry pi over seriell.<\/li>\n<li>Ta i mot kommandoer for kj\u00f8ring over seriell fra Raspberry pi og eksekvere disse.<\/li>\n<li>Forbedre metoder (ved \u00e5 bruke interrupts?) og jobbe p\u00e5 bedre kalibrering av sensordata sampling\/tolking og feedback loops for mer n\u00f8yaktig navigasjon.<\/li>\n<\/ol>\n<p>(edit med bilder og muligens video av blind kj\u00f8retest fra forrige 2 uker kommer)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Her er en oppdatering av fremgang p\u00e5 hardware siden for de forrige 2 ukene: Uke 11-17 nov. M\u00e5lene for uka var: \u00c5 koble opp den fysiske platformen med arduino og driverkortet drevet fra batteriet, men ikke enn\u00e5 koble sammen raspberry pi og arduino. Programmere systemet til \u00e5 kj\u00f8re rett frem, rygge, og svinge\/rotere. Finne avstander [&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-107","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\/107","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=107"}],"version-history":[{"count":3,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=\/wp\/v2\/posts\/107\/revisions"}],"predecessor-version":[{"id":111,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=\/wp\/v2\/posts\/107\/revisions\/111"}],"wp:attachment":[{"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=107"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=107"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=107"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}