Användarhandledning Joachim Lundh TSRT10 - SEGWAY 6 december 2010 Version 1.0 Status: Granskad Alla 6 december 2010 Godkänd Markus (DOK) 6 december 2010
PROJEKTIDENTITET Segway, HT 2010 Tekniska högskolan vid Linköpings universitet, ISY Namn Ansvar Tele f on E post Joachim Lundh Projektledare (PL) 070-293 29 66 joalu331 Markus Sundbrandt Dokumentansvarig (DOK) 073-955 12 23 marsu752 David Elofsson Designansvarig hårdvara (DES) 070-292 89 80 davel369 Pontus Jernberg Bluetoothansvarig (BLT) 070-939 16 15 ponje141 Karl Cederman Regulatoransvarig (REG) 070-565 56 67 karjo492 Henrik Hagelin Testansvarig (TST) 070-898 95 06 henha374 Dan Gunning Följningsansv (FLJ) 073-697 47 51 dangu444 Håkan Richter Observatöransvarig (OBS) 073-532 47 95 hakri323 E-postlista för hela gruppen: tsrt10segway@googlegroups.com Kund: David Törnqvist, ISY kundtelefon: +46 13 281882, e-postadress: tornqvist@isy.liu.se Beställare: Patrik Axelsson, +46 13 284474, axelsson@isy.liu.se Handledare: Ylva Jung, +46 13 284474, ylvju@isy.liu.se Kursansvarig: David Törnqvist, +46 13 281882, tornqvist@isy.liu.se 2
Innehåll 1 Inledning 5 2 Robot 6 2.1 Hårdvara............................................ 6 2.2 Snabbstart........................................... 7 3 GUI 8 3.1 Beskrivning av funktioner i GUI:t.............................. 8 3.2 Ansluta till roboten...................................... 10 3.3 Att köra roboten via GUI:t.................................. 10 4 Körlägen 11 4.1 Manuell styrning....................................... 11 4.2 Handföljning......................................... 11 4.3 Linjeföljning......................................... 12 5 Programmering 13 5.1 Toolboxar........................................... 13 5.2 Simulering........................................... 13 5.3 Programmering av robot................................... 13 3
Dokumenthistorik Version Datum Utförda förändringar Utförda av Granskad 0.1 2010-11-25 Första utkastet Alla Alla 0.2 2010-11-29 Andra utkastet Alla Alla 1.0 2010-11-29 Första utgåvan Alla Alla 4
Kapitel 1 Inledning Användarmanualen beskriver hur man ska använda segway-roboten Rambot som har utvecklats i kursen TSRT10 - Reglerteknisk projektkurs vid Linköpings universitet. Dokumentet beskriver i första hand hur användargränssnittet ska användas samt hur man startar och stoppar roboten men det går även in på de olika körlägen som finns samt hur man lägger in program på roboten. Användaren förutsätts ha grundläggande kunskaper om Matlab. Förstagångsanvändaren rekommenderas att grundligt läsa igenom hela manualen innan första uppstarten. 5
Kapitel 2 Robot Kapitlet beskriver själva hårdvaran i systemet och hur man använder den fristående från PC. 2.1 Hårdvara Själva hjärtat i roboten är NXT-kontrollenheten som har flera in- och utgångar samt display, knappar för interaktion och en högtalare. Hur dessa är placerade ses i figur 2.1. Utgångar USB-anslutning Display H/V-pil Högtalare Enter Bakåt/exit Ingångar Figur 2.1: Översikt av NXT-kontrollenheten Till in- och utgångarna kan man ansluta olika sensorer och aktuatorer. I robotens fall består dessa av två ljusintensitetssensorer, en ultraljudssensor och ett gyro samt två servon. Hur dessa är monterade på roboten ses i figur 2.2. Roboten är byggd enligt ritningar från [2] men har modifierats genom att ljusintensitetssensorer har monterats fram och bak på roboten vilket kan ses i 2.2. 6
Ultraljudssensor Kontrollenhet Gyro Vänster servo Bakre ljusintensitetssensor Främre ljusintensitetssensor Figur 2.2: Översikt av roboten 2.2 Snabbstart Det går att köra roboten utan tillgång till PC med GUI (GUI beskrivet i kapitel 3). Då körs enbart upprätthållningsregleringen med den regulator som är standard, LQG. Snabbstarten kräver att programmet redan är överfört till roboten. Om så inte är fallet kan detta göras enligt avsnitt 5.3. 1. Starta roboten genom att trycka på enter. 2. Gå till programmet rambot i ~/My Files/Software files. 3. Välj Run med enterknappen. 4. Placera roboten upprätt på marken. 5. Tryck på högerpilen (framifrån sett). 6. Släpp roboten när den piper. Roboten kommer nu att balansera på plats tills dess att den blir omkullknuffad, upplyft, avbruten med vänsterpil (framifrån sett) eller avslutad med bakåt/exitknappen. Har roboten fallit eller blivit upplyft avbryts programmet med vänsterpil. Om roboten avbrutits kan man enkelt starta om genom att börja från steg fyra i listan ovan. 7
Kapitel 3 GUI Detta kapitel beskriver hur man använder det gränssnitt som utvecklats för att styra roboten, nedan kallat GUI:t. För att använda det konstruerade GUI:t krävs följande: PC med bluetoothkort alternativt en separat bluetoothdongel. Matlab R2010b (funktionalitet med andra matlabversioner kan inte garanteras). GUI-programmet NXTway_gui. För att starta GUI:t körs filen nxtway_gui.m i Matlab som ligger i mappen gui. Var mappen gui är placerad på hårddisken spelar ingen roll så länge alla filer i densamma är med. Från GUI:t kan man välja körmod, regulatortyp och avläsa robotens tillstånd. 3.1 Beskrivning av funktioner i GUI:t När GUI:t startats får man upp fönstret som visas i figur 3.1. I denna figur är alla rutor, knappar och menyer numrerade för att underlätta referenser till dessa senare. När man är ansluten till roboten fås även en ny del av GUI:t där mätvärden kan visas. De olika knapparna och menyernas funktion beskrivs nedan. Ruta 1: Ruta för att välja vilken port som bluetoothen använder. Ruta 2: Ruta som visar ljusintensiteten för det underlag som finns till vänster vid linjeföljning. Ruta 3: Ruta som visar ljusintensiteten för det underlag som finns i mitten vid linjeföljning. Ruta 4: Ruta som visar ljusintensiteten för det underlag som finns till höger vid linjeföljning. Ruta 5: Ruta som visar robotens momentana lutningsvinkel. Ruta 6: Ruta som visar robotens momentant uppmätta avstånd framåt. Ruta 7: Ruta som visar robotens momentant uppmätta ljusintensitet fram. Ruta 8: Ruta som visar robotens momentant uppmätta ljusintensitet bak. Ruta 9: Ruta som visar robotens momentana hjulvinkel för vänster hjul. Ruta 10: Ruta som visar robotens momentana hjulvinkel för höger hjul. Knapp 1: Knapp för att ansluta till eller koppla från roboten. Knapp 2: Knapp för att kalibrera ljusintensiteten för det underlag som finns till vänster vid linjeföljning. Knapp 3: Knapp för att kalibrera ljusintensiteten för det underlag som finns i mitten vid linjeföljning. 8
Graf 1 Graf 2 Graf 3 Graf 4 Ruta 5 Ruta 6 Ruta 7,8 Ruta 9,10 Knapp 6 Knapp 7 Meddelande 2 Knapp 8,9 Knapp 10,11 Ruta 1 Knapp 1 Meddelande 1 Meny 1 Meny 2 Knapp 2 Knapp 3 Knapp 4 Ruta 2 Ruta 4 Ruta 3 Knapp 5 Beskrivning Figur 3.1: Bild över GUI:t, med knappar och menyer numrerade. Knapp 4: Knapp för att kalibrera ljusintensiteten för det underlag som finns till höger vid linjeföljning. Knapp 5: Knapp för att starta linjeföljning. Knapp 6: Knapp för att starta visning av mätdata. Knapp 7: Knapp för att stoppa visning av mätdata. Knapp 8: Knapp för att välja om robotens ljusintensitet fram ska visas. Knapp 9: Knapp för att välja om robotens ljusintensitet bak ska visas. Knapp 10: Knapp för att välja om robotens hjulvinkel för vänster hjul ska visas. Knapp 11: Knapp för att välja om robotens hjulvinkel för höger hjul ska visas. Meddelande 1: Meddelande som visar anslutningsstatus. Meddelande 2: Meddelande som visar robotens status, om den har ramlat, plockats upp etc. Meny 1: Meny för att välja vilken regulator som ska användas. Meny 2: Meny för att välja vilken mod som ska köras. Graf 1: Graf som visar robotens lutningsvinkel. Graf 2: Graf som visar robotens uppmätta avstånd framåt. Graf 3: Graf som visar uppmätta ljusintensiteter från sensorerna. Främre sensorns värden plottas i blått och bakre i grönt. 9
Graf 4: Graf som visar robotens hjulvinklar. Vänsterhjulets värden är plottat i blått och högerhjulets i grönt. 3.2 Ansluta till roboten För att ansluta till roboten krävs att användaren vet vilken port som blutoothen är ansluten till. För information om hur man tar reda på vilken port bluetoothen är ansluten till hänvisas till dokumentation för operativsystemet för PC:n. Dessutom krävs att bluetooth är aktiverat på roboten. Om inte det är gjort kan man göra de med följande steg: 1. Starta roboten genom att trycka på enter. 2. Använd pilarna för att navigera till bluetooth-ikonen, tryck enter. 3. Välj ikonen markerad ON/OFF, tryck enter. 4. Välj ikonen markerad ON, tryck enter. 5. Använd pilarna för att navigera till bluetooth-ikonen, tryck enter. 6. Välj ikonen markerad Visibility, tryck enter. 7. Välj ikonen markerad Visible, tryck enter. Det är viktigt att ordningen följs för anvisningarna då Matlab annars kan låsa sig. För tydlighetens skull kommer de handlingar som ska utföras på roboten skrivas i kursiv stil. När porten för bluetoothen är identifierad sker anslutningen till roboten genom följande steg: 1. Starta roboten genom att trycka på enter. 2. Gå till programmet rambot på roboten ~/My Files/Software files. 3. Välj Run med enterknappen. 4. Kör filen nxtway_gui.m i Matlab. 5. Skriv in aktuell port för bluetooth i ruta 1 i GUI:t. 6. Tryck på knappen anslut (knapp 1), när en anslutning etablerats ändras statusfältets (meddelande 1) färg till grönt samt får texten Ansluten. På roboten ska även en bluetoothsymbol visas, om anslutning misslyckas upprepa detta steg. 7. Placera roboten upprätt på marken. 8. Välj run med robotens högerpil. 9. Släpp roboten när den piper. 10. Tryck på knapp 6 för att starta avläsningen av data. För att koppla ifrån roboten görs följande: 1. Stoppa eventuella dataavläsningar (knapp 7). 2. Tryck på knappen koppla ifrån (knapp 1). Statusfältet (meddelande 1) ska nu ändra färg till röd och visa texten; Ej ansluten. 3. Programmet kan nu avslutas med vänsterpil. 3.3 Att köra roboten via GUI:t När man först ansluter till roboten hamnar man i initieringsmoden, i vilken roboten endast reglerar för att hålla sig upprätt. För att välja vilken mod man vill köra används meny 2. Vad de olika moderna har för funktion ses i kapitel 4. Beroende på vilken mod som väljs i meny 2, kommer olika knappar att vara tillgängliga. 10
Kapitel 4 Körlägen När roboten startas befinner den sig i initieringsmoden vilken endast håller roboten upprätt, varken ljussensorerna eller ultraljudssensorn är aktiverade. Växling mellan moderna manuell styrning, handföljning och linjeföljning sker via gränssnittet. Dessa moder beskrivs i nedanstående stycken. 4.1 Manuell styrning I denna mod kan användaren med hjälp av datorns piltangenter styra roboten via bluetooth, man bör dock inte trycka in flera tangenter samtidigt. För att hindra användaren från att köra rakt in i väggar används ultraljudssensorn och roboten stannar då cirka 20 cm från en detekterad vägg. Ljusintensitetssensorerna används för att detektera stup och hindra användaren från att köra rakt ut för detta vid manuell körning. Då ett stup detekteras kör roboten automatiskt bort från det. För att kunna styra manuellt måste bakgrunden på nxtway_gui vara markerad. 4.2 Handföljning När handföljning är aktivt kan roboten styras med hjälp av handen. Hur roboten reagerar beror på avståndet mellan handen och ultraljudssensorn, se figur 4.1. För att handföljningen ska fungera korrekt måste handen hållas i höjd med ultraljudssensorn och roboten kommer då att följa handen framåt och bakåt. Roboten stannar då handen ej detekteras av ultraljudssensorn alternativt förs längre bort än 50 cm från den. Figur 4.1: Robotens beteende beroende på avståndet mellan handen och ultraljudssensorn. 11
4.3 Linjeföljning I denna mod följer roboten en linje på golvet, se figur 4.3 för ett exempel på hur en sådan kan se ut. För att linjeföljningen ska fungera korrekt måste det ljusa underlaget vara till vänster och det mörka vara till höger. För bäst resultat bör färgerna väljas med så stor skillnad i intensitet som möjligt, t.ex svart och vit. Roboten använder sig av en ljusintensitetssensor för att registrera linjen och tar därefter ett beslut om hur den ska svänga. Figur 4.2: Utseendet på linjen, pilen markerar robotens färdriktning. Innan linjeföljningen startas bör varje färg kalibreras via knapp 2, 3 och 4 i figur 3.1, detta för att roboten ska få korrekta trösklar mellan färgerna. De förinställda kalibreringsvärdena kan användas om underlaget liknar det som finns i mitten av figur 4.3 samt om vit och svart tejp används. 12
Kapitel 5 Programmering För att programmera roboten har Simulink samt en Matlab-toolbox använts. 5.1 Toolboxar Den toolbox som använts för att ta fram programmen till roboten är ecrobotnxt. Hur man installerar toolboxen och de tredjepartsprogram som krävs för att det ska fungera kan man läsa om i [1]. Dessutom krävs tolbox:arna Realtime Workshop och Embedded Coder för att kompilera simulinkscheman till källkod som roboten klarar av. 5.2 Simulering Systemet kan även simuleras med Simulink genom följande steg: 1. Öppna simulinkfilen nxtway_gs.mdl. 2. Välj körcykel i blocket Reference Generator\Signal Builder. 3. Starta simuleringen från nxtway_gs.mdl. 5.3 Programmering av robot För att lägga in program på roboten behöver följande göras: 1. Starta roboten. 2. Anslut USB-kabel mellan roboten och PC:n. 3. Öppna simulinkfilen nxtway_gs.mdl. 4. Öppna blocket controller. 5. Tryck på knappen Generate code and build the generated code (knapp 1 i figur 5.1) för att kompilera simulinkmodellen. 6. Tryck på knappen Download (NXT enhanced software) (knapp 2 i figur 5.1) för att föra över programmet till roboten. 7. Programmet är nu överfört till roboten och hittas i ~/My Files/Software files. 13
Knapp 1 Knapp 2 Figur 5.1: Simulinkblocket som används för att kompilera modellen samt överföra den till roboten. 14
Litteraturförteckning [1] Takashi Chikamasa. Embedded coder robot. http://www.mathworks.com/matlabcentral/ fileexchange/13399, 2010. [Online; accessed 29-September-2010]. [2] http://lejos osek.sourceforge.net. Nxtway-gs_building_instructions. http://lejos-osek. sourceforge.net/nxtway-gs\_building\_instructions.pdf, 2010. [Online; accessed 24-nov-2010]. [3] LEGO.com. What is nxt? http://mindstorms.lego.com/en-us/whatisnxt/default. aspx, 2010. [Online; accessed 29-September-2010]. 15