Systemskiss 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 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öljningsansvarig (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 1
Innehåll 1 Inledning 4 2 Syfte och mål 4 3 Användning 4 4 Översikt av systemet 4 5 Delsystem 1 Kommunikation 5 5.1 Ingående komponenter.................................... 5 5.2 Gränssnitt........................................... 5 6 Delsystem 2 Handföljning 5 6.1 Ingående komponenter.................................... 6 6.2 Gränssnitt........................................... 6 7 Delsystem 3 Linjeföljning 6 7.1 Ingående komponenter.................................... 6 7.2 Gränssnitt........................................... 6 8 Delsystem 4 Undvika hinder 7 8.1 Ingående komponenter.................................... 7 8.2 Gränssnitt........................................... 7 9 Delsystem 5 Regulator för att hålla roboten upprätt 7 9.1 Ingående komponenter.................................... 7 9.2 Gränssnitt........................................... 8 2
Dokumenthistorik Version Datum Utförda förändringar Utförda av Granskad 0.1 2010-09-23 Första utkast Alla Alla 0.2 2010-09-27 Andra utkast Alla Alla 0.3 2010-09-30 Tredje utkast Alla Alla 3
1 Inledning Detta dokument är en skiss över hur ett system för en segway, byggd i Lego Mindstorms, ska fungera. Dokumentet beskriver systemet först på en övergripande nivå och sedan på detaljnivå där varje delsystem beskrivs. 2 Syfte och mål Syftet med detta projekt är att reglera en segway. Den ska bland annat kunna hållas stående upprätt, följa en referensbana samt styras manuellt. Projektets mål är att roboten ska ha minst två olika regulatorstrukturer för att hålla den stående upprätt. Den skall även kunna följa en linje på golvet, kunna följa en hand, undvika hinder, undvika att köra ner från ett stup samt kunna styras manuellt med hjälp av bluetooth. Regulatorer m.m. implementeras i Simulink. 3 Användning Roboten ska användas till att utvärdera olika regulatorstrukturer samt möjligheter till bluetoothkommunikation och olika följningar. Följningarna som ska implementeras är handföljning och linjeföljning. Roboten ska dessutom kunna styras manuellt via bluetooth. 4 Översikt av systemet Systemet kommer delas in i fem olika delar: bluetooth, handföljning, linjeföljning, undvikning av hinder och regulator för att hålla roboten upprätt. Med hjälp av bluetooth sker kommunikationen med roboten såsom dataloggning och manuella styrsignaler. Med bluetooth görs även valet av vilket delsystem som ska vara aktivt. En översikt av systemet ses i figur 1. Figur 1: Översikt av systemet i dess omgivning. 4
5 Delsystem 1 Kommunikation Detta system tar hand om kommunikationen mellan datorn och roboten. Datorn ska via bluetooth hela tiden logga vad roboten gör och visa detta i ett program. Från detta program kan användaren välja vilken mod som ska vara aktiv samt vilken av regulatorstrukturerna som ska användas. En skiss över kommunikationssystemet ses i figur 2. Figur 2: Systemskiss av delsystemet kommunikation. 5.1 Ingående komponenter Roboten En dator Bluetooth-enhet 5.2 Gränssnitt För att en användare enkelt ska kunna kommunicera med roboten så krävs ett väldefinerat gränsnitt. Gränsnittet ska ta emot sensordata som roboten skickar via bluetooth till datorn. Från datorn ska användaren kunna skicka kommandon om vilken mod som ska vara aktiv till roboten. Då roboten är i mod för manuell styrning ska man från gränsnittet även kunna styra roboten genom att ändra referenssignal för robotens lutning samt vridning. Implementationen kommer ske i antingen java eller matlab. 6 Delsystem 2 Handföljning Handföljning innebär att roboten ska klara av att följa en hand på ett givet avstånd. Om man flyttar handen framåt eller bakåt ska roboten hela tiden hålla samma avstånd och på så sätt kan man styra hur och vart roboten ska åka. Avståndet avläses med hjälp av en avståndssensor och avståndet mellan handen och roboten ska vara mellan 10 till 20 cm. En skiss över systemet för handföljning ses i figur 3. Figur 3: Systemskiss av delsystemet handföljning. 6.1 Ingående komponenter Ultraljudssensor 5
6.2 Gränssnitt Roboten kommer att använda en ultraljudssensor för att mäta avståndet till handen. Om handen befinner sig på ett avstånd som är mindre än önskat så kommer roboten backa till dess att avståndet är det önskade. Samma princip gäller då avståndet är större än önskat. Om handen skulle föras utanför sensorns räckvidd ska roboten stanna och hålla sig upprätt på stället. 7 Delsystem 3 Linjeföljning Roboten ska klara av att följa en bestämd bana på marken som markeras med en linje i form av en tejpremsa. För att linjeföljning ska vara möjlig är roboten utrustad med en sensor som läser av hur tejpremsan är dragen. Hur bra roboten ska klara av att följa linjen samt vilka färdvägar som är möjliga specificeras i kravspecifikationen. En skiss över linjeföljningssystemet ses i figur 4. Figur 4: Systemskiss av delsystemet linjeföljning. 7.1 Ingående komponenter Ljussensor 7.2 Gränssnitt Roboten kommer att använda sig av en ljussensor för att registrera linjen som är en tejpremsa i tre färger. Ljussensorn ger ett intensitetsvärde beroende på underlaget. Ett ljust underlag har hög reflektivitet och får ett högt intensitetsvärde, ett mörkt underlag har låg reflektivtet och får därmed ett lågt värde. Beroende på sensorvärdet är högt eller lågt kan vi avgöra om roboten ska korrigera åt höger eller vänster, ligger värdet mellan dessa så ska roboten hålla samma kurs. 6
8 Delsystem 4 Undvika hinder Detta systems uppgift är att undvika hinder som uppkommer under körning. Det finns två sorters hinder, väggar och stup. Vilken eller vilka algoritmer för att undvika hinder som används beror på vilken mod roboten befinner sig i. Roboten ska upptäcka när den närmar sig ett stup framifrån och stanna en bit innan kanten så att den kan röra sig lite för att hålla sig upprätt utan att ramla ner. För att undvika att köra in i en eventuell vägg framifrån ska roboten stanna en bit innan väggen. På så sätt kan den hålla sig upprätt utan att köra in i väggen. Undvika hinder är varken aktivt vid linjeföljning eller handföljning. En skiss över systemet för att undvika hinder ses i figur 5. Figur 5: Systemskiss av delsystemet undvika hinder. 8.1 Ingående komponenter Ultraljudssensor Ljussensor 8.2 Gränssnitt För att upptäcka och undvika eventuella väggar kommer roboten att använda sig av en ultraljudssensor. Då avståndet till en framförliggande vägg är mindre än önskat kommer roboten att stanna och stå upprätt. För att upptäcka och undvika stup används ljussensorn. Närmar roboten sig ett stup kommer sensorvärdet att avvika från sitt normala intervall. När hinder upptäcks ska man, oavsett signaler från användaren om att köra framåt eller svänga, endast kunna backa. 9 Delsystem 5 Regulator för att hålla roboten upprätt För att roboten ska kunna stå upprätt krävs att hjulen hela tiden kompenserar för rörelser som gör att roboten vill falla framåt eller bakåt. Regulatorn har till uppgift att skicka ut rätt signaler till motorerna som styr hjulen beroende på vilket läge roboten befinner sig i. För att uppnå att roboten klarar att stå upprätt utan större oscillationer krävs en genomtänkt regulatordesign och två olika typer av reglering ska implementeras och utvärderas. Regulatordesignen kommer kräva modeller och observatörer som skapar skattade tillstånd. Observatören utnyttjar kunskap om modellen samt använder både styrsignaler och sensordata för att skatta tillstånden. En skiss över systemet för att hålla roboten upprätt ses i figur 6. Figur 6: Systemskiss av delsystemet regulator för att hålla roboten upprätt. 7
9.1 Ingående komponenter Gyro Servomotor med sensor för hjulvinkel. 9.2 Gränssnitt Gyrot som används är en acceleromater som man får en vinkelhastighet ifrån. Syftet med regleringen är att hålla en så liten vinkelhastighet som möjligt. Regulatorn skickar styrsignaler till robotens bägge motorer som ger önskad vinkelhastighet på hjulen. Motorerna är utrustade med sensorer som mäter hjulvinklarna som används till återkoppling av regulatorn. Två olika regulatorer kommer implementeras, vilka inte är bestämda i nuläget men kommer preciseras i designsspecifikationen. För att uppnå en bra reglering kommer tillstånd för systemet att behöva skattas av en observatör. Observatören använder robotens vinkelhastighet ifrån gyrot och motorvinklarna ifrån motorerna för att skatta tillstånden. Tillstånden används sedan tillsammans med referenssignal i regulatorn för att beräkna styrsignalen. Hur stark återkoppling som krävs är en avvägning mellan observatörens snabbhet och känslighet mot mätstörningar. 8