Goda råd till de som ska utföra ett liknande projekt (från KMM 2016)

Relevanta dokument
Goda råd från studenterna som gjorde kandidatprojektet 2018

Rapport Digitala Projekt EITF11 Grupp 4 Axel Sundberg, Jakob Wennerström Gille Handledare: Bertil Lindvall

Design av inbyggda system

Design vid utveckling av inbyggda system

Snake. Digitala Projekt (EITF11) Fredrik Jansson, I-12 Lunds Tekniska Högskola,

Digitala projekt - Radiostyrd bil

Design av inbyggda system

Laboration i datateknik

RemoteBud. Inlämnas: Patrik Johnsson, e01pjo Viktor Karlsson, e01vk

PROGRAMMERING I NXC. Sammanfattning KUNGLIGA TEKNISKA HÖGSKOLAN

Design av inbyggda system. Innehåll. Hårdvarunära design. Hårdvarunära design. Hårdvarunära design. Hårdvarunära design TDD

Innehållsförteckning. Figur- och tabellförteckning. Figure 1 Blockschema över hårdvaran...4 Figure 2 Blockschema över programet...

Design av inbyggda system

Digitala Projekt Konstruktion av Tamagocchi. Av: Oskar Andersson D05 & Danial Rehman D05

Disposition av prototypkort

Kevin Lane Kungliga Tekniska Högskolan Introduktionskurs i Datateknik (II1310) TIEDB0. [NXT Legorobot] [Programmering och felsökning]

Före Kravspecifikationen

Temperaturmätare med lagringsfunktion DIGITALA PROJEKT EITF11 GRUPP 14, ERIK ENFORS, LUDWIG ROSENDAL, CARL MIKAEL WIDMAN

Bilen som inte kan krocka

Gustaf Backman, Anton Nystedt, Nicholas Peebo Battleships. Lunds tekniska högskola. EITF11 Digitala projekt

Digitala projekt Linjeföljande bil

EV3 Roboten. Sida 1 av 13

Projekt Rapport. RaidPlanner. Jeanette Karlsson UD10

Hobbyelektronik med Raspberry Pi och Erlang

Viktiga begrepp. Algoritm. Array. Binärkod. Blockprogrammering. Bugg / fel och felsökning. Dataspel. Dator

Projektdirektiv Oskar Ljungqvist Sida 1. Kund/Examinator: Daniel Axehill, Reglerteknik/LiU

TETRIS. LTH, Campus Helsingborg EITA15 Digitala System

Labbrapport - LEGO NXT Robot

Röna fingrar e gött o ha:) SLUTRAPPORT BUDGETSYSTEM LNU

Introduktion till E-block och Flowcode

KUNGLIGA TEKNISKA HÖGSKOLAN. Laboration II1310. Programmera Lego Mindstorm robot i NXC

Konstruera, styra, reglera och programmera en röd tråd F-9

SLUTRAPPORT RUNE TENNESMED WEBBSHOP

PROGRAMMERING AV LEGO-ROBOT VIA NXC

Välj rätt affärssystem för att din. organisation ska blomstra!

Projektplan. Per-Emil Eliasson, Claes Fälth, Manne Gustafson, Andreas Gustafsson. 29 januari 2003

The Intelligent Timer

KUNGLIGA TEKNISKA HÖGSKOLAN KISTA. Lego Linefollower. Få en robot att följa linjen på golvet!

För smartare belysning

Loggbok lag 1. Problem/Aktivitet Ansvar Klart Brainstorming av kravspec OS 7/11

Rune Tennesmed. Oskar Norling 1DV430. Individuellt Mjukvaruutvecklingsprojekt 1DV430 Webbprogrammerare H12 Oskar Norling

KUNG. TEKNISKA HÖGSKOLAN. Laboration. Programmering av LEGO-robot

LARMANLÄGGNING. Digitala Projekt, EITF11. Oskar von Knorring Emin Karimov Henrik Akej Handledare: Bertil Lindvall

Rekonditionering. EPIsafe 2 GSM. Art.nr Programversion x.x.x eller senare. Rev PA1 SE

PlantPuppy Räddaren för den som inte kan hålla växterna vid liv

Konstruktion av en radiostyrd legobil. Digitala projekt av Arbon Vata Leonardo Vukmanovic Amid Bhatia

DANCING ROBOT. EITF11, Grupp 10. Kajsa Salomonsson, Hugo Hedin och Petter Mårtensson

Pulsmätare med varningsindikatorer

Fyra vanliga SVAGA PUNKTER VID TRYCKKALIBRERING

Rekonditionering. EPIsafe och EPIsafe 2. Art.nr och Programversion x.x.x eller senare. Rev PB SE

Systemkonstruktion SERIEKOMMUNIKATION

Så avancerad att vi blev tvungna att skapa en ny kategori

Senaste version kan hämtas från Internet i PDF 1 format

LIPs Fredrik Ljungberg ChrKr Projektdirektiv18_ROV.doc CKr

INSTALLATIONSHANDBOK. Digital tryckmätare BHGP26A1

LIPs Daniel Axehill ChrKr Projektdirektiv_Saab_v3 CKr

Robotfotboll med Arduino

Projektrapport. Till Projektet Bluetoothstyrd bil

Anledning: Generellt så undviker QUPER att göra fullständiga förutsägelser för relationerna mellan ett systems fördelar, kostnad och kvalitet.

Digitala projekt, EDI021 Rapport Handledare: Bertil Lindvall

Träff 1 - Introduktion

Manual Sportident Onlinekontroll via GPRS

Universe Engine Rapport

Projekt EITA15. Väckarklocka. LTH Ingenjörshögskolan vid Campus Helsingborg Datateknik

LARMANLÄGGNING. Digitala Projekt, EITF11. Oskar von Knorring Emin Karimov Henrik Akej Handledare: Bertil Lindvall

Game of 40. Regler och om sidan är in princip samma sak. Det som skiljer dem åt är att de inte har samma text.

En webbtjänst som är skapad i kursen 1DV611 - Mjukvaruutvecklingsprojekt i grupp.

LiTH Lab1: Asynkron seriell dataöverföring via optisk länk Laboration 1. Asynkron seriell dataöverföring via optisk länk

Detta är en liten ordlista med förklaringar på begrepp och aktiviteter relaterade till. elvisualiseringsverktyg

Att välja verktyg för portföljhantering. - Vad vet en leverantör om det?

Montering av Wisp628.

Produktutvecklingsprocessen. (e)lvis

Programmera Lego Mindstormsrobotar

krävs för att kunna utföra arbete. Den finns i många former men kan inte förstöras, bara omvandlas från en form till en annan.

Välkomna till KMM! KMM. KMM - lärandemål Efter fullgjord kurs ska ni bland annat kunna:

LIPs Martin Lindfors ChrKr Projdir2017_sbd.doc CKr

LEGO Robot programmering och felsökning Hur svårt ska det vara att följa den svarta linjen?

Nu kan du le ikapp med din Smiley!

Temperaturregleringssystem

Hjulinställare RAVAGLIOLI RAV TD 3000 HP RAV TD 3000 ATS. Tel Fax

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Välkomna till KMM! KMM. KMM - lärandemål Efter fullgjord kurs ska ni bland annat kunna:

Quick Guide. Version 1.0

Mina listor. En Android-applikation. Rickard Karlsson Rickard Karlsson - rk222cu Linnéuniversitet rk222cu@student.lnu.

CW263BT. Badrumsvåg. Manual

Enchipsdatorer med tillämpningar LABORATION 7, ROBOT

Linköpings Tekniska Högskola Institutionen för Datavetanskap (IDA), Software and Systems (SaS) (c) Klas Arvidsson

Filhanterare med AngularJS

Uppdragsbeskrivning. Markeringssystem. Version 1.0 Mats Persson

Har nu fått mitt första större projekt att programmera men känner att vissa funktioner har jag inte riktigt koll på.

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Manual för RN

Formula Blue. Digitala Projekt 8p. Jesper Ferm E02 Carl Hakenäs E04

Efterstudie. LIPs. LiTH Autonom styrning av mobil robot Martin Elfstadius. Version 1.0. Status. TSRT71-Reglertekniskt projektkurs

Bilstereo bruks- och monteringsanvisning

Uppdragsbeskrivning. Paddel-appen Utmärkta kanotleder. Version 1.0 Mats Persson. Distributionslista. Namn Åtgärd Info.

Simon Boström Introduktionskurs i Datateknik

Ett urval D/A- och A/D-omvandlare

Systemskiss. Joachim Lundh TSRT10 - SEGWAY 6 december 2010 Version 1.0. Status:

Transkript:

Goda råd till de som ska utföra ett liknande projekt (från KMM 2016) Snöa inte er på lösningar som kanske fungerar, eller som ni bara vill få fungera. Var realistiska och våga byt lösning om den det verkar ta för lång tid. Var inte rädda för digitala protokoll, även om det blir många olika protokoll för olika sensorer. Börja integrationstesta tidigt, där upptäcker man många problem som man inte trodde att man hade. Använd Wifi istället för blåtand om möjligt, underlättar både utveckling och användarbarhet. Se till att använda bra kommunikationskanaler från första början. Var inte rädda för mer avancerad versionshantering, se det här som ett utmärkt tillfälle att lära sig. Best practices i ett lite större projekt. Dela upp enheter på olika virkort, underlättar i början när man kan jobb på flera enheter samtidigt. Undvik onödig hårdvaruprogrammering (VHDL) då det är väldigt svårt att felsöka och det tar lång tid att få komponenten att fungera.

Kontrollera UART-anslutningens baudrate om kommunikation inte fungerar, se till att UARTregistrets värde för inställd baudrate motsvarar den för processorns klockfrekvens. Kontrollera klockfrekvensen. Undvik att använda _delay_ms() / _delay_us() när det inte behövs. En kort _delay_ms() mellan överföringar kan lösa problem då bytes försvinner. Bluetooth-modulen kan överbelastas med inkommande data och stängs då av. Detta märks då bluetooth-modulen tappar anslutningen. Att inte skicka data så ofta kan lösa detta. Se till att läsa banspecifikationen noggrant. Testa kontinuerligt sensorenheten och verifiera att sensorerna fortfarande fungerar. Filtrera IR-sensorns, och LIDAR-sensorns värden då de är känsliga för brus. Filtrera mer än du tror du behöver, och sedan ytterligare lite till! IR-sensorerna kan störa ut varandra. Montera vertikalt och skärma av. Var försiktig med JTAG-programmerarna, de är känsliga och flatkabeln kan börja glappa. Testa systemet och modulerna ofta. Testa mellan

implementationerna, och testa enheterna för sig. En utförlig och välformulerad designspecifikation spar mycket tid i konstruktionsfasen. På de enheter som inte har någon display eller motorer anslutna, koppla in lysdioder som kan användas för felsökning och test. Oscilloskopet är ditt bästa arbetsverktyg på bänken! Gör ordentliga virningar. Klocksignalen kan inducera störningar i kommunikationsledningarna mellan enheterna. C++ är ett bra val för att programmera användargränssnittet. Biblioteket Qt ger mycket gratis, som t.ex. grafiska fönster, men också gränssnitt för datorns seriella portar. I2C är tidskrävande att få igång. Använd hellre andra kommunikationsvägar om möjligt t.ex. PWM för LIDARsensorn. Läs dokumentation och datablad noggrant. Kommunicera mera! Det Är svårt att lägga för mycket tid på just kommunikation. Se till att alla vet var som händer i alla delar av projektet, varje dag!

Planera upp en vettig struktur och hierarki inom gruppen istället för att hålla hierarkin mestadels platt med en huvudansvarig och resten utvecklare. Använd versionshantering för både kod och dokumentation. Att kunna backa till ett tidigare skede av projektet är otroligt tacksamt när man stöter på problem. Gå sakta fram i projektet och överskatta tidsåtgången. Saker tar längre tid än man tänkt från början, särskilt när man arbetar med hårdvara och nya tekniker. Se till att saker fungerar med tillräckligt hög pålitlighet innan ni går vidare. Att behöva backa tillbaka flera veckor för att en grundläggande funktion inte fungerar som den ska i en viss situation tar mycket tid. Samtidigt som det bidrar till en stabilare robot är det sjukt våghalsigt att ha krav på formen roboten ska klara 3 av 3 körningar". Lös problem i arbetsflödet direkt! Finns det något som gör att ni ofta lägger onödigt mycket tid eller som påverkar gruppens samarbete lönar det sig att skjuta upp allt annat för att behandla det här problemet direkt. Att skjuta på problemet gör bara att det tar upp ännu mer tid! Skriv väldefinierade aktiviteter, med tydliga definitioner av vad det innebär att aktiviteten är avslutad.

Ha bra och tydliga milstolpar, det är bättre att inte uppnå dessa till exakt den dagen ni har bestämt än att inte riktigt kunna veta när den är uppnådd. Börja med kommunikation mellan enheterna och få det att funka tidigt. Det är viktigt vid felsökning. Tänk efter noggrant hur reglering ska gå till och vilka typer av sensorer som kommer behövas för detta. Gör detta tidigt! Gör inte som vi och börja med reglering en vecka före leveransen. Versionshantering är viktigt. Använd Git eller SVN! I2C är krångligt och tog upp alldeles för mycket tid för oss. Det kan vara lämpligt att använda något bibliotek istället för att implementera allt själv. En fördel med I2C för exempelvis Lidar Lite är att mätvärdena man får är mycket mer tillförlitliga än om vi hade kört med exempelvis PWM. Se till att samtliga gruppmedlemmar har samma ambitionsnivå. Ha ett sätt att ta reda på hur långt ni har åkt som inte beror på batteriets spänning. Använd någon typ av sensor för att mäta lagd sträcka. Underskatta inte det här. Ta tag i saker i god tid. Om ni märker att något ni har tänkt er inte fungerar bör ni inte spendera veckor på att arbeta runt problemet utan istället ta ett steg tillbaka och fundera på om ni kan lösa det på ett bättre sätt. Löda är mycket bättre än att vira. Gör ett kretskort om ni kan.

Använd ett versionshanteringssystem och lär er att använda det ordentligt. Använd versionshantering samt integrera ihop kod ofta. Sätt från starten höga krav på kod som ska versionshanteras i gemensamma grenar samt följer en gemensam kodstandard. Vid felsökning bör processen startas från båda mjukvarusidan och hårdvarusidan. Det vill säga testa del för del, för att snabbt kunna utesluta fungerande delar. Planera in regelbundna möten för att diskutera kommande arbete samt avklarat arbete. Så alla i gruppen får en uppfattning av framgångar och motgångar. Om problem uppstår i projektgruppen, ta det direkt och gå inte och älta problem så att det blir en dålig stämning i gruppen. Planera tidigt hur ni vill att hårdvaran ska vara placerad samt vilken hårdvara som ska finnas på kortet då detta gör att ni slipper dra upp flertalet sladdar och vira om varje gång ni inser att en modul behöver läggas till. Se till att vira bra från början, så ni slipper vira om hela tiden. Dokumentera vilka portar ni använder och hur de ska kopplas. Gör inte saker onödigt komplicerade, starta med lätta saker och utöka funktionaliteten. UART är bra!

Bluetooth kommunikation med till exempel Raspberry pi är mycket användbart för felsökning. Använd c++ istället för c, klasser och dylikt är användbart. Att få bra sensorvärden kan vara mycket svårt så se till att vara noggranna när ni kalibrerar dem, felaktiga sensorvärden gör den autonoma navigeringen otroligt frustrerande Fundera på att använda inverterad kinematik till rörelser, de blir betydligt mycket finare (sexbening). Sätt gränser på servona så de inte slår i chassit och går sönder (sexbening). Använd PWM på LIDAR-sensorn, om ni endast ska mäta avstånd med den. Ha så korta och snyggt virade kablar som möjligt i digitala bussar. Skriv modulär kod som är enkel att modifiera. Lägg mycket tid i början av projektet så att ni slipper lägga ner väldigt mycket tid i slutet. Gör simulatorer.