{"id":208,"date":"2013-12-06T12:13:38","date_gmt":"2013-12-06T12:13:38","guid":{"rendered":"http:\/\/dronesonen.hibu.no\/?p=208"},"modified":"2013-12-06T12:13:38","modified_gmt":"2013-12-06T12:13:38","slug":"navigasjon-og-oppsummeringspost-for-bugster","status":"publish","type":"post","link":"https:\/\/dronesonen.usn.no\/?p=208","title":{"rendered":"Navigasjon og oppsummeringspost for Bugster"},"content":{"rendered":"<p><strong>Hei bloggen!<\/strong><\/p>\n<p>I dag skal vi skrive om navigasjonssystemet vi har laget for Bugster og noen andre ting som er verdt \u00e5 nevne f\u00f8r prosjektet avsluttes samt en oppsummering av prosjektet og hvor vi endte.<\/p>\n<p><strong>Utstyrsliste<\/strong>\u00a0(bilen er satt sammen, men lista beskriver hva man trenger for at navigasjonskoden skal kj\u00f8re fornuftig):<\/p>\n<ul>\n<li>Arduino Mega<\/li>\n<li>IR-sensor til hjul<\/li>\n<li>Ultralyd sensor<\/li>\n<li>Hjul med enkoderhjul festet p\u00e5<\/li>\n<li>Ledninger, motstander, batteri osv<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><strong>Navigasjon:<\/strong><\/p>\n<p>For \u00e5 kort oppsummere hva m\u00e5let med autopilot delen av Bugster er, s\u00e5 er det: Finne angitt m\u00e5l, navigere til det angitte punktet og dersom det er hindringer skal den svinge unna, men samtidig jobbe seg n\u00e6rmere m\u00e5ket. N\u00e5r angitt punkt er n\u00e5dd skal bilen stoppe.<\/p>\n<p>Vi kan med glede si at dette har vi f\u00e5tt til! Det er noen scenarioer hvor det ikke vil virke, f.eks hvis bilen m\u00e5 kj\u00f8re langs en vegg et stykke f\u00f8r den kan kj\u00f8re rundt eller hvis punktet befinner seg bak spissen p\u00e5 et hj\u00f8rnet. Koden for \u00e5 gj\u00f8re det virker, men IR-sensorene vi skulle bruke for \u00e5 se om det befinner seg en vegg p\u00e5 siden av bilen drar for mye str\u00f8m, s\u00e5 med n\u00e5v\u00e6rende hardware spesifikasjoner lar det seg ikke gj\u00f8re. Det som fakstisk skjer i slike scenarioer er at bilen vil snu seg mot veggen, se veggen, snu se vegg, snu tilbake, se veggen og fortsette slik til den klarer \u00e5 kj\u00f8re seg helt fast. \ud83d\ude41<\/p>\n<p>Hvordan virker denne koden? Det er ikke noe poeng i \u00e5 forklare hver minste variabel, men enkelt forklart s\u00e5 f\u00e5r navigasjon angitt ett punkt den skal kj\u00f8re til, en Y verdi og en X verdi. Hver iterasjon av programmet s\u00e5 sjekker navigasjon om den har n\u00e5dd Y og\/eller X (hvis begge er n\u00e5dd s\u00e5 er den framme), deretter sjekker den \u00a0om bilen kj\u00f8rer langs Y eller X og om den skal fortsette med det. Hvis den kj\u00f8rer feil retning p\u00e5 aksen sin, eller om den har n\u00e5dd verdien p\u00e5 denne aksen s\u00e5 finner den ut om den skal kj\u00f8re til h\u00f8yre eller til venstre ved \u00e5 se p\u00e5 verdien til aksen som befinner seg vinkelrett p\u00e5 n\u00e5v\u00e6rende akse. F.eks hvis angitt m\u00e5l er 1,5m Y, \u00a01,5m X og den kj\u00f8rer langs X aksen og n\u00e5r X s\u00e5 finner den ut at den skal svinge til venstre for \u00e5 kj\u00f8re riktig retning langs Y aksen. N\u00e5r et m\u00e5l angis s\u00e5 taes det utganspunkt i at (positiv) Y verdi er foran retningen bilen ser der og da, og at (positiv) X verdi er til h\u00f8yre.<br \/>\nN\u00e5r bilen kj\u00f8rer s\u00e5 vil IR-sensorer som ser p\u00e5 hjulene sende interrupt hver gang den blir &#8220;rising&#8221;, da vet vi at bilen har kj\u00f8rt nye x meter. navigasjonen vil da se om bilen kj\u00f8rer positiv eller negativ retning p\u00e5 aksen sin og legge til\/trekke fra verdien p\u00e5 distanse kj\u00f8rt p\u00e5 den aksen. N\u00e5r en distanse kj\u00f8rt p\u00e5 en akse er lik angitt distanse i m\u00e5lpunktet s\u00e5 vil bilen svinge til neste akse.<\/p>\n<p>Hva skjer hvis det st\u00e5r en hindring i veien? I arduino sketchen som kj\u00f8rer hele sullabitten sjekker den ultralyd sensoren for \u00e5 se avstanden til eventuelle objekter, dersom denne avstanden er mindre enn en halv meter vil den si ifra til navigasjonen om at det m\u00e5 skje en unnvikelse. Da sjekker navigasjonen om m\u00e5let p\u00e5 den andre aksen er til h\u00f8yre eller venstre for ogs\u00e5 svinge dit. Det er her IR-sensorer p\u00e5 sidene ville hindret bilen i \u00e5 svinge mot en ny vegg\/hindring hvis de hadde v\u00e6rt oppe og g\u00e5tt.<\/p>\n<p>Enda kortere oppsummert? Bilen vet hvilken retning den peker, hvilken retning angitt X og Y er og den finner hvilke retning den b\u00f8r kj\u00f8re til enhver tid. Hindringer f\u00f8rer til bytte av retning mot den andre vedien.<\/p>\n<p>Vi har brukt et oppgradert bibliotek til ultralydsensoren, som heter <a href=\"https:\/\/code.google.com\/p\/arduino-new-ping\/\">newPing<\/a>. Dette har st\u00f8tte for blant annet timer interrupts slik at vi kan &#8220;polle&#8221; ved gitte intervall n\u00e5r vi m\u00e5ler avstand, vi bruker 24micro sekunder.<\/p>\n<p><strong>Oppsummering av prosjektet:<\/strong><\/p>\n<p><strong><\/strong>Prosjektet har g\u00e5tt ganske greit, vi har justert p\u00e5 kravene underveis for \u00e5 komme i m\u00e5l:<\/p>\n<ul>\n<li>Navigasjons programmet kj\u00f8res n\u00e5 p\u00e5 en arduino mega, og ikke p\u00e5 en raspberry pi som var originalplanen, dette f\u00f8rer til at vi bare kan ha ett m\u00e5l i stedet for flere check points pga lite minne.<\/li>\n<li>Vi droppa ir sensorer p\u00e5 sidene da disse fikk \u00a0resten av systemet til \u00e5 knele da de fikk str\u00f8m, selv uten \u00e5 legge de til i koden som kj\u00f8rte eller \u00e5 koble de til arduinoen(!)<br \/>\nMer feils\u00f8king peker p\u00e5 at problemet var tomt batteri, men vi m\u00e5tte fokusere p\u00e5 andre ting.<\/li>\n<\/ul>\n<p>Ellers har det v\u00e6rt l\u00e6rerikt.<\/p>\n<p>Koden for prosjektet finner du <a title=\"her\" href=\"https:\/\/www.dropbox.com\/s\/aqhhhqwtrcw1qtc\/FinalCode.zip\">her<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hei bloggen! I dag skal vi skrive om navigasjonssystemet vi har laget for Bugster og noen andre ting som er verdt \u00e5 nevne f\u00f8r prosjektet avsluttes samt en oppsummering av prosjektet og hvor vi endte. Utstyrsliste\u00a0(bilen er satt sammen, men lista beskriver hva man trenger for at navigasjonskoden skal kj\u00f8re fornuftig): Arduino Mega IR-sensor til [&hellip;]<\/p>\n","protected":false},"author":15,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-208","post","type-post","status-publish","format-standard","hentry","category-smart-systems-bugster2013"],"_links":{"self":[{"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=\/wp\/v2\/posts\/208","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\/15"}],"replies":[{"embeddable":true,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=208"}],"version-history":[{"count":2,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=\/wp\/v2\/posts\/208\/revisions"}],"predecessor-version":[{"id":213,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=\/wp\/v2\/posts\/208\/revisions\/213"}],"wp:attachment":[{"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=208"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=208"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=208"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}