EV3 robotprogrammeringskurs i Lego Mindstorms EV3 miljö. Bokhylla robotik Robotprogrammeringskurs lego mindstorms ev3

L.Yu. Ovsyanitskaya, D.N. Ovsyanitsky, A.D. Ovsyanitsky

EV3 Robotprogrammeringskurs

i miljön Lego Mindstorms EV3

Andra upplagan, reviderad och utökad

UDC 004.42+004.896

Ovsyanitskaya, L.Yu. Lego robot programmeringskurs

Mindstorms EV3 i EV3-miljön: red. andra, reviderade och ytterligare /

L.Yu. Ovsyanitskaya, D.N. Ovsyanitsky, A.D. Ovsyanitsky. – M.:

”Pero”, 2016. – 296 sid.

ISBN 978-5-906862-76-1

Boken ägnas åt att programmera EV3-roboten i Lego Mindstorms EV3-miljö. Arbetet är resultatet av många års erfarenhet av författarnas direkta deltagande i regionala, allryska och internationella tävlingar inom robotik och pedagogisk verksamhet som syftar till att utbilda lärare, föreläsare och utbildare i detta ämne.

Boken kommer att vara användbar för lärare i grundskolan, gymnasiet, högre och ytterligare utbildning, studenter, studenter och alla som är intresserade av robotfrågor.

Recensent:

doktor i fysikaliska och matematiska vetenskaper, professor A.F. Shorikov.

ISBN 978-5-906862-76-1 © L.Yu. Ovsyanitskaya, D.N. Ovsyanitsky, A.D. Ovsyanitsky, 2016 Innehåll Introduktion

Kapitel 1. Robotens egenskaper.

Skapande och lansering av det första projektet 7

1.1. en kort beskrivning av robotplattformar. Översikt över Lego Mindstorms EV3-programmeringsmiljön

1.2. Sätt att ansluta roboten till en dator. EV3 Brick firmwareuppdatering. Ladda upp program till EV3 Brick



Kapitel 2. Programmering av roboten

2.1. Motorer. Programmera rörelser längs olika banor

2.2. Arbetar med bakgrundsbelysning, skärm och ljud

2.2.1. Arbeta med skärmen

2.2.2. Arbeta med bakgrundsbelysta knappar på EV3 Brick

2.2.3. Arbeta med ljud

2.3. Programstrukturer

2.3.1. Strukturförväntningar

2.3.2. Strukturcykel

2.3.3. Switch Struktur

2.4. Arbeta med data

2.4.1. Datatyper. Konduktörer

2.4.2. Variabler och konstanter

2.4.3. Matematiska operationer med data

2.4.5. Arbeta med Arrays

2.4.6. Logiska operationer med data

2.5. Arbeta med sensorer

2.5.1. Peksensor

2.5.2. Färgsensor

2.5.3 Gyrosensor

2.5.4. Ultraljudssensor

2.5.5. Infraröd sensor och beacon

2.5.6. Motorrotationssensor (bestämmer vinkel/antal varv och motoreffekt)

2.5.7. Modulkontrollknappar

2.6. Arbeta med filer

Lego Mindstorms EV3 robotprogrammeringskurs i EV3-miljö

2.7. Samarbete av flera robotar

2.7.1. Ansluta robotar med en USB-kabel

2.7.2. Robotkommunikation med hjälp av Bluetooth-anslutning................................... 207

2.8. Användbara block och verktyg

2.8.1. Blockera "Behåll aktiv"

2.8.2. Blockera "Stoppa program"

2.8.3. Skapa rutiner

2.8.4. Spelar in kommentarer

2.8.5. Använder en trådbunden ingångsport

Kapitel 3. Huvudtyper av tävlingar och moment i uppgifter.

3.1. Sumotävling

3.2. Kegelring

3.3. Slalom (undvika hinder)

3.4. Programmering av linjerörelser

3.4.1. Algoritm för att röra sig längs en sicksacklinje med en och två färgsensorer

3.4.2. Algoritmen "Wave"

3.4.3. Algoritm för automatisk kalibrering av färgsensorn..... 258

3.5. Proportionell linjär kontroll

3.5.1. Linjerörelse baserad på proportionell kontroll

3.5.2. Hitta och räkna korsningar med proportionell linjekontroll

3.5.3. Resor inversion

3.5.4. Robotrörelse längs väggen

3.6. Att hitta målet i labyrinten

Kapitel 4: Uppdatera firmware och starta om EV3 Brick.

286 Kapitel 5. Använda sensorer från tredje part

5.1. Arbetar med HiTech färgsensor

5.2. Använda andra sensorer

Slutsats

Lista över projekt Projekt "Faithful Dog" 90 Projekt "Sports Scoreboard" 98 Projekt "Auto Finish" 102 Projekt "60 Seconds" 109 Projekt "Spela in och läsa en färgstreckkod" 120 Projekt "Sortera en array med hjälp av bubblametoden" 123 Projekt " Smart hus» 153 Projekt ”Stubborn Robot” 160 Projekt ”Robot med fjärrkontroll» 182 Projekt Animerat spel på skärmen i EV3-blocket "Fånga en snöboll" 191 Projekt "Konstruktion av en 3D-ytakarta" 197 Projekt "EV3 - musiksynthesizer" 203 Kurs för programmering av Lego Mindstorms EV3-roboten i EV3-miljön bild av en spole (Fig. 1.1.11b). Blocket blir aktivt (ljust) (Fig. 1.1.11c).

–  –  –

Figur 1.1.

12. Parallella program För att skala bilder (fig. 1.1.13 a, b) används standardkombinationer för MSWindows Ctrl-tangenter och musrullningshjul eller ikoner i det övre högra hörnet av fönstret:. Skalning används när man navigerar i stora program, kopierar specifika block och mycket mer.

Lego Mindstorms EV3 robotprogrammeringskurs i EV3-miljön Blocks Stor motor och Medium motor Det första blocket på paletten heter Medium motor, det andra heter Large motor. Blocken används för att styra en motor och har samma funktionalitet.

Låt oss titta på strukturen av block med exemplet med ett stort motorblock (Fig. 2.1.4).

–  –  –

Figur 2.1.

4. Stor motorstyrenhet Klicka först och främst på bokstaven som representerar portnamnet och välj namnet på porten som motorn är ansluten till.

Låt oss ta en närmare titt på varje kontrollelement.

1. Välj driftläge:

a) slå på (Fig. 2.1.5);

–  –  –

Figur 2.4.

3.4. Program för genomförandet av projektet "60 sekunder".

Gör-det-själv-aktiviteter Lägg till en bild av en urtavla på skärmen.

Lägg till minut- och timvisare analogt.

2.4.4. Andra databehandlingsblock

–  –  –

Innan du börjar arbeta med arrayer behöver du initiera dem, d.v.s. ange typen (numerisk eller logisk) och tilldela ett namn.

Data kan matas in i arrayen manuellt eller automatiskt läge(avläsning av avläsningar från sensorer). För att skapa en array måste du använda variabelblocket.

Skapa en array. Att skriva en array till en variabel

För att skapa och fylla en array måste du:

(a) flytta variabelblocket till arbetsytan och bestämma dess läge (Skriv) och typ (numerisk eller logisk matris);

Bildning Bildning av en numerisk array av en logisk array

–  –  –

Figur 2.5.

3.3. Driftlägen för den gyroskopiska sensorn Viktigt!

Ibland (ganska ofta!) när du arbetar med en gyroskopisk sensor kan du observera följande: när kör program roboten är stationär och vinkelvärdet ökar konstant (drift), ökningshastigheten kan vara mer än 1 grad per sekund!

Ökning av sensorvärden Kapitel 2. Programmering av roboten 177 Om fyren är mycket långt borta (längre än 1 m) blir mätvärdet 100, om mycket nära (minst 1 cm) - 0. Mellanresultat överensstämmer inte heller med till centimeter.

I fallet när fyren är placerad direkt framför sensorn, kommer det relativa resultatet av mätning av vinkeln att vara lika med 0, den maximala placeringen av fyren till vänster, moturs -25 (den maximala detekterbara avvikelsesvinkeln är ungefär 100 grader), till höger, medurs 25 (Fig. 2.5. 5.5).

Figur 2.5.

5.5. Placering av IR-signalen i förhållande till IR-sensorn Låt oss titta på exempelprogram. Placera fyren framför roboten, slå på den och rikta den mot roboten.

LED-indikatorn tänds och förblir tänd. Fyren kommer kontinuerligt att sända en signal. På den infraröda sensorenheten installerar du samma kanal som installerades på fyren. Sensorn kommer bara att upptäcka fyren på den kanal du anger i ditt program.

Fyren stängs av om den inte används på en timme.

I fig. 2.5.5.6 visar valet av driftläge med fyren.

Lego Mindstorms EV3 robotprogrammeringskurs i EV3-miljön med hjälp av MS Excel.

Roboten roterar och registrerar vid varje tidpunkt värdet på rotationsvinkeln och avståndet till ytan.

Lösning:

1. Återställ gyroskopsensorns värden.

Vi lägger in cykel 01, avslutningsvillkoret är tid (3 sekunder).

2. Under cykeln roterar roboten och läser information från ultraljuds- och gyroskopiska sensorer. Avläsningarna kombineras i programblocket Text, separerade med kommatecken.

3. Mätresultatet vid varje steg i cykeln skrivs till kartfilen.

4. Ställ in en paus på 0,25 sekunder. Stäng filen efter avslutad cykel.

Uppmärksamhet! När du använder en gyroskopisk sensor, var uppmärksam på förekomsten av läsdrift när du slår på den (se.

avsnitt 2.5.3 för att avlägsna drift).

Kapitel 2. Programmering av roboten 213 flytta och stanna, mata varje släp sekventiellt.

2. "Sång och instrumental ensemble"

Uppgiften är att framföra ett musikstycke med en ensemble. Den första EV3-roboten är en dirigent som ger kommandon via Bluetooth till de andra robotmusikerna och robotsångarna när de ska spela deras musikaliska delar. Robotledaren kan utrustas med en dirigentstav, som rör sig upp och ner och vänder sig mot roboten som börjar spela. En robotdirigent kan till exempel agera solist på deltid.

3. "Dansensemble"

Uppgiften är att skapa en robotensemble. Den första roboten som ger kommandon via Bluetooth är solisten. Resten av robotarna följer kommandona. Programmera olika typer av danser - runddans av robotar ("Lokomotiv"), långsamma och snabba danser.

4. "Morgonövningar"

Uppgiften är att samtidigt utföra gymnastiska övningar på kommando av den första roboten.

2.8. Användbara block och verktyg 2.8.1. Blockera "Behåll aktiv"

När en viss tid har gått och i fallet när vi inte kontaktar roboten och roboten inte utför några operationer, stängs den av (i EV3-termer går den i viloläge). Detta orsakar besvär när man arbetar med program som är utformade för att vänta långa tidsperioder på vissa processer. Vi kan ställa in tiden för byte till viloläge direkt på blocket (det går att ställa in tiden innan avstängning: 2 minuter, Lego Mindstorms EV3 robotprogrammeringskurs i EV3-miljön, skapa flera programalternativ och välja stridstaktik. För till exempel, om vi har en kraftfull men långsam robot, kan vi köra ett program där vår robot kommer att attackera motståndaren snabbt och från sidan om motståndarens robot alltid vänder sig till höger på jakt efter vår robot, måste vi köra en program som går runt och attackerar det från vänster.

Roboten kan ha en eller två ultraljudssensorer för att bestämma fiendens position utan onödiga vändningar. Särskilt intressanta är de omgångar där robotar med ungefär samma styrka eller hastighet tävlar, i detta fall avgörs resultatet av millimeter och sekunder!

Vinnaren är den deltagare som kunde sätta ihop en stark och pålitlig struktur, skrev ett kompetent program (eller program) och valde rätt strategi. Det är kombinationen av dessa faktorer som gör processen att förbereda sig inför tävlingar spännande, och själva tävlingarna väldigt underhållande och spännande!

Låt oss ge ett exempel på en programalgoritm för en robotsumobrottare.

Stoppar roboten.

2. Roboten vrider sig tills den ser motståndarens robot med ultraljudssensorn (tills sensorvärdet blir mindre än 100 cm), vilket motsvarar en rotationsvinkel på 120-180 grader. Stoppar roboten.

3. Skapa en cykel med avslutningsvillkor 01, – Obegränsad.

4. I cykel 01 infogar vi cykel 02, vars avslutningsvillkor är ett logiskt värde: cykeln kommer att exekveras tills värdet True matas till ingången Avslutningsvillkor.

Kapitel 3. Huvudtyper av tävlingar och moment av uppgifter 245 100 25 + 18 =.

Låt oss hitta hastigheten på det vänstra hjulet: V1=58.

För att implementera algoritmen, installera en ultraljudssensor framför roboten i mitten och anslut den till port 4.

Peka färgsensorn nedåt, placera den till vänster om linjen och anslut den till port 2. I Fig. 3.3.3 presenterar ett program för att undvika hinder. Observera att efter att ha upptäckt ett hinder stannar roboten och svänger skarpt åt höger för att förflytta sig från en linje vinkelrätt mot hindret och gå runt föremålet längs en given radie.

Arbetsuppgifter för självständigt arbete

Programmera vägarna:

a) undvika flera hinder med samma radie;

b) undvika hinder med olika radier;

c) rida i en åttasiffra.

Kapitel 3. Huvudtyper av tävlingar och moment i uppgifter 275 Figur 3.

5.3.2. Program för att köra en omvänd rörelsebana Kapitel 3. Huvudtyper av tävlingar och delar av uppgifter 285 Figur 3.6.5. Ett program för att hitta ett mål i en labyrint En kurs i programmering av roboten Lego Mindstorms EV3 i EV3-miljön.

KAPITEL 5. ANVÄNDNING AV TREDJE PART

SENSORER

Förutom sensorerna som ingår i Lego Mindstorms EV3 hem eller utbildningssatser är det möjligt ytterligare förvärv Lego-sensorer och Lego-certifierade sensorer från HiTechnic.

HiTechnic producerar ett stort antal sensorer för LEGO Mindstorms, de flesta av dem är certifierade av LEGO, vilket bekräftar full kompatibilitet, höga kvalitets- och säkerhetsstandarder.

En viktig faktor som tillåter användningen av dessa sensorer när man arbetar med barn är också närvaron av ett RoHS-certifikat (Restriction of Hazardous Substances), som bekräftar frånvaron av användning av ämnen i elektrisk och elektronisk utrustning: bly, kvicksilver, kadmium, tenn, sexvärt krom och vissa bromidföreningar. För en aktuell lista över Lego-certifierade sensorer, besök www.hitechnic.com/sensors.

För närvarande tillgänglig: rotationsvinkelsensor;

kraft applicerad tvärs axeln; kompass; accelerometer;

gyroskop; magnetfältsdetektor; infraröd sensor;

infraröd rörelsesensor, som låter dig bestämma närvaron av människor eller djur i rummet, liknande sensorer som används i säkerhetssystem; barometer, som bestämmer atmosfärstryck och temperatur;

en elektrooptisk avståndssensor som noggrant detekterar små föremål och små förändringar i avståndet till dem, men på ett avstånd av högst ~20 cm; färgsensor

I den andra lektionen kommer vi att bli mer bekanta med programmeringsmiljön och studera i detalj kommandona som ställer in rörelsen för vår robotvagn, monterad i den första lektionen. Så låt oss lansera Lego mindstorms EV3-programmeringsmiljön, ladda vårt lessons.ev3-projekt som skapats tidigare och lägg till det i projektet nytt program- lektion-2-1. Du kan lägga till ett program på två sätt:

  • Välj lag "Arkiv" - "Lägg till program" (Ctrl+N).
  • Klick "+" på fliken program.

Ris. 1

2.1. Programmering av paletter och programblock

Låt oss nu rikta vår uppmärksamhet mot den nedre delen av programmeringsmiljön. Från materialet från den första lektionen vet vi redan att här är kommandona för programmering av roboten. Utvecklarna använde en originell teknik och, genom att gruppera programblock, tilldelade varje grupp sin egen färg och kallade gruppens paletter.

Den gröna paletten heter: "Handling":

Ris. 2

Denna palett innehåller mjukvarublock för att styra motorer, ett displayblock och ett kontrollblock för modulstatusindikatorn. Nu ska vi börja studera dessa programblock.

2.2. Grön palett - actionblock

Det första programblocket i den gröna paletten är utformat för att styra den mellanstora motorn, det andra blocket är för att styra den stora motorn. Eftersom parametrarna för dessa block är identiska, låt oss överväga inställningen med exemplet på ett block - en stor motor.

Ris. 3

För korrekta inställningar styrenhet för en stor motor måste vi:

  1. Välj den port som motorn är ansluten till (A, B, C eller D) (Fig. 3 objekt 1)
  2. Välj motordriftsläge (Fig. 3 objekt 2)
  3. Konfigurera parametrarna för det valda läget (Fig. 3 objekt 3)

Hur skiljer sig lägena åt? Läge: "Sätta på" sätter på motorn med en given parameter "Kraft" och därefter överförs kontrollen till nästa programblock i programmet. Motorn fortsätter att rotera tills den stoppas av nästa block "Stor motor" med regimen "Stäng av" eller nästa block "Stor motor" kommer inte att innehålla andra exekveringsparametrar. Läge "Aktivera i antal sekunder" sätter på en stor motor med inställd effekt under ett specificerat antal sekunder, och först efter att tiden har gått ut kommer motorn att stanna och styrningen i programmet flyttas till nästa programblock. Motorn kommer att bete sig på liknande sätt i lägen "Slå på med antal grader" Och "Aktivera efter antal varv": först efter att motorns inställda rotation har slutförts kommer den att stanna och styrningen i programmet flyttas till nästa block.

Effektparametern (i Fig. 3 är effekten inställd på 75) kan ta värden från -100 till 100. Positiva effektvärden ställer in motorn att rotera medurs, negativa värden ställer in motorn att rotera moturs. Vid ett effektvärde på 0 kommer motorn inte att rotera ju "högre" effektvärdet är, desto snabbare roterar motorn.

Effektparametern anges endast i heltalsvärden: sekunder, grader, varv kan ta värden med en decimalbråkdel. Men kom ihåg att det minsta motorrotationssteget är en grad.

Särskilt bör nämnas om parametern "Bromsa i slutet". Denna parameter, om den är inställd på "Att bromsa" gör att motorn saktar ner efter att kommandot har utförts, och om inställt på "Överkörd", då kommer motorn att rotera med tröghet tills den stannar.

Nästa två programblock "Styrning" och implementera styrning av ett par stora motorer. Som standard är den vänstra stora motorn ansluten till porten "I", och den rätta - till hamnen "MED". Men du kan ändra anslutningsportarna i enhetsinställningarna i enlighet med kraven i din design ( Ris. 4 pos. 1).

Ris. 4

Parameter "Styrning" (Ris. 4 pos. 2) kan ta värden från -100 till 100. Negativa värden på parametern får roboten att svänga vänster, ett värde på 0 får roboten att röra sig rakt och positiva värden får roboten att svänga höger. Pilen ovanför den numeriska parametern ändrar sin orientering beroende på värdet och anger därigenom robotens rörelseriktning ( Ris. 5).

Ris. 5

Programblock "Oberoende motorstyrning" ser ut som ett programvarublock "Styrning". Den styr också två stora motorer, men istället för "Styrning" det blir möjligt att oberoende styra effekten av varje motor. Med lika parametervärde "Kraft" för vänster och höger motor kommer roboten att röra sig i en rak linje. Om ett negativt effektvärde appliceras på en motor (till exempel -50), och ett positivt värde appliceras på den andra (till exempel 50), kommer roboten att vända på plats ( Ris. 6).

Ris. 6

Driftssätten för dessa enheter liknar därför de för en enskild motorstyrenhet ytterligare beskrivning kräver inte...

2.3. Rak linjerörelse, vändningar, vändning och stopp

Så nu kan vi skriva ett program för roboten att röra sig längs vilken rutt som helst.

Uppgift 1: Kör rakt fram i 4 motorvarv. Vänd dig om. Kör 720 grader.

Lösning ( Ris. 7):

  1. Använd mjukvarublocket "Steering" och kör 4 varv framåt.
  2. Använd mjukvarublocket "Independent Motor Control" och vänd på platsen (gradvärdet måste väljas experimentellt).
  3. Använd mjukvarublocket "Steering" och kör 720 grader framåt.

Obs: Varför var jag tvungen att välja gradvärde när jag svängde? block 2?. Är inte 360 grader - önskat värde? Inte om vi ställer in parametervärdet "Grader" likvärdig 360 , då kommer vi därigenom att tvinga axlarna på vänster och höger motorer på vår robot att rotera med den mängd som krävs. Vinkeln med vilken roboten vrider sig runt sin axel beror på storleken (diametern) på hjulen och avståndet mellan dem. På Ris. 7 parametervärde "Grader" lika 385 . Detta värde tillåter en robot monterad enligt instruktionerna liten robot 45544 vända sig runt sin axel. Om du har en annan robot måste du välja ett annat värde. Kan detta värde hittas matematiskt? Det är möjligt, men vi kommer att prata om detta senare.


Ris. 7

Uppgift 2: Placera något hinder (burk, kub, liten låda) på en plan yta och markera startpunkten för din robot. Skapa ett nytt program i projektet: lektion-2-2, som låter roboten köra runt ett hinder och återgå till startpunkten.

Hur många programvarublock har du använt? Dela din framgång i kommentarerna till lektionen...

2.4. Skärm, ljud, modulstatusindikator

Programblock "Skärm" låter dig visa text eller grafisk information på LCD-skärmen på EV3 Brick. Vad kan detta betyda? praktisk användning? För det första, vid programmering och felsökning av programmet, kan du visa aktuella sensoravläsningar medan roboten är i drift. För det andra kan du visa namnet på de mellanliggande stadierna av programexekveringen. Tja, för det tredje, med hjälp av grafiska bilder kan du "återuppliva" robotens skärm, till exempel med hjälp av animering.

Ris. 8

Programblock "Skärm" har fyra driftlägen: läge "Text" låter dig visa en textsträng på skärmen, läge "Former" låter dig visa en av fyra geometriska former på skärmen (rät linje, cirkel, rektangel, punkt), läge "Bild" kan visa en bild på skärmen. Du kan välja en bild från en rik samling bilder eller rita din egen med hjälp av en bildredigerare. Läge "Fönstret Återställ inställningar"Återställer EV3 Brick-skärmen till standardinformationsskärmen som visas medan programmet körs.

Ris. 9

Låt oss överväga parametrarna för programblocket "Skärm" i läge "Text" (Fig. 9 objekt 1). Strängen som är avsedd att visas på skärmen matas in i ett speciellt fält (Fig. 9 objekt 2). Tyvärr kan du bara ange latinska bokstäver, siffror och skiljetecken i textinmatningsfältet. Om läge "Rensa skärmen" inställd på värde "Sann", kommer skärmen att rensas innan information visas. Därför, om du behöver kombinera den aktuella utgången med information som redan finns på skärmen, ställ in detta läge på "Lögn". Lägen "X" Och "Y" bestäm den punkt på skärmen från vilken informationsutmatningen börjar. EV3 Brick-skärmen är 178 pixlar (punkter) bred och 128 pixlar hög. Läge "X" kan ta värden från 0 till 177, läge "Y" kan ta värden från 0 till 127. Den övre vänstra punkten har koordinater (0, 0), den nedre högra (177, 127)

Ris. 10

När du ställer in ett programblock "Skärm" du kan slå på läget förhandsvisning (Fig. 9 objekt 3) och visuellt utvärdera resultatet av informationsutmatningsinställningarna.

I läge "Former" (Fig. 11 objekt 1) inställningarna för programblocket varierar beroende på typ av figur. Så när du visar en cirkel måste du ange koordinaterna "X" Och "Y" cirkelns mittpunkt, liksom värdet "Radie". Parameter "Fyll" (bild 11 objekt 2)är ansvarig för det faktum att antingen konturen av figuren kommer att visas, eller så kommer figurens inre område att fyllas med färgen som anges i parametern "Färg" (fig. 11 objekt 3).

Ris. elva

För att visa en rät linje måste du ange koordinaterna för de två extrempunkterna mellan vilka den räta linjen är placerad.

Ris. 12

För att visa en rektangel måste du ange koordinaterna "X" Och "Y" det övre vänstra hörnet av rektangeln, såväl som dess "Bredd" Och "Höjd".

Ris. 13

Att visa en punkt är det enklaste sättet! Ange bara dess koordinater "X" Och "Y".

Läge "Bild", förmodligen det mest intressanta och mest använda läget. Det låter dig visa bilder på skärmen. Programmeringsmiljön innehåller ett enormt bibliotek av bilder, sorterade efter kategori. Utöver de befintliga bilderna kan du alltid skapa din egen ritning och, genom att infoga den i projektet, visa den på skärmen. ("Huvudmeny för programmeringsmiljön" - "Verktyg" - "Bildredigerare"). När du skapar din bild kan du också visa tecken från det ryska alfabetet.

Ris. 14

Som du kan se lägger programmeringsmiljön stor vikt vid visningen av information på EV3 Main Brick-skärmen. Låt oss titta på följande viktiga programblock "Ljud". Med det här blocket kan vi mata ut ljudfiler, toner med godtycklig varaktighet och frekvens, såväl som musiknoter till den inbyggda högtalaren i EV3-blocket. Låt oss titta på inställningarna för programblocket i läge "Spela ton" (Fig. 15). I detta läge måste du ställa in "Frekvens" toner (Fig. 15 objekt 1), "Varaktighet" ljud på sekunder (Fig. 15 objekt 2), samt ljudvolym (Fig. 15 objekt 3).

Ris. 15

I läge "Spela not" istället för tonfrekvens måste du välja en ton på virtuellt tangentbord, och även ställa in ljudets varaktighet och volym (Fig. 16).

Ris. 16

I läge "Spela upp fil" du kan välja en av ljudfilerna från biblioteket (Fig. 17 objekt 1), eller genom att ansluta en mikrofon till din dator med Sound Editor ("Huvudmeny för programmeringsmiljön" - "Verktyg" - "Ljudredigerare") spela in din egen ljudfil och inkludera det i projektet.

Ris. 17

Låt oss titta på parametern separat "Uppspelningstyp" (bild 17 objekt 2), gemensam för alla lägen i programblocket "Ljud". Om denna parameter inställd på värde "Vänta på att det är klart", då kommer kontrollen att överföras till nästa programblock först efter fullständig uppspelning av ljud- eller ljudfilen. Om du ställer in ett av följande två värden kommer ljudet att börja spelas och kontrollen i programmet flyttas till nästa programblock, endast ljudet eller ljudfilen kommer att spelas en gång eller repeteras tills den stoppas av ett annat programblock "Ljud".

Vi måste bara bekanta oss med det sista programblocket i den gröna paletten - blocket. Det finns en färgindikator monterad runt EV3-modulens kontrollknappar, som kan lysa i en av tre färger: grön, orange eller röd. Motsvarande läge är ansvarigt för att slå på och av färgindikeringen (Fig. 18 objekt 1). Parameter "Färg" ställer in färgdesignen för indikationen (Fig. 18 objekt 2). Parameter "Impuls" ansvarig för att slå på/stänga av färgindikeringens flimmerläge (Fig. 18 objekt 3). Hur kan du använda färgindikation? Du kan till exempel använda olika färgsignaler under olika driftslägen för roboten. Detta kommer att hjälpa oss att förstå om programmet körs som vi planerat.

Ris. 18

Låt oss omsätta denna kunskap i praktiken och färglägga vårt program från Uppgift 1 lite.

Uppgift 3:

  1. Spela signal "Start"
  2. Aktivera grön icke-blinkande färgindikation
  3. "Fram"
  4. Kör rakt fram i 4 motorvarv.
  5. Aktivera orange blinkande färgindikering
  6. Vänd dig om
  7. Aktivera grön blinkande färgindikering
  8. Visa en bild på skärmen "Bakåt"
  9. Kör 720 grader
  10. Spela signal "Sluta"

Försök att lösa problem 3 själv utan att titta på lösningen! Lycka till!

Programblocken i panelen "Actions" diskuterades i de tidigare delarna av recensionen, och i den här artikeln kommer jag att prata om blocken från fliken "Operator Management".

Dessa block kan representeras som "regulatorer" av programmet: de kommer att beordra att stoppa och fortsätta programmets rörelse, flytta till nästa gren eller gå i en cirkel.

Jämfört med NXT lades 2 nya block till:

  • Början - i NXT var början av programmet enhetlig och sattes omedelbart när programmet öppnades.
  • Att avbryta cykeln - det fanns helt enkelt inget sådant block i NXT. Om det var nödvändigt att implementera liknande funktionalitet var vi tvungna att använda variabler.
Den allmänna listan över operatörskontrollenheter ser ut så här:
  • Start
  • Förväntan
  • Växla
  • Att avbryta en cykel


Blockera "Start"

Du kanske har märkt att det första blocket av alla EV3-program är blocket med en grön pil. Detta block är "Start". Inte ett enda program klarar sig utan det - det är här kommandoexekveringen börjar. Om du inte sätter "Start" framför sekvensen av block, kommer ett sådant program inte att köras.
Till exempel, enligt programmet som presenteras nedan, kommer roboten att snurra runt en axel (den övre sekvensen av åtgärder kommer att utföras), men kommer inte att spela ljudfiler och lyser upp knapparna (den nedre sekvensen utan "Start"-blocket är inte aktiv):

EV3 stöder multitasking, d.v.s. ett program kan innehålla mer än en sekvens av kommandon. Dessutom kan dessa sekvenser ha sitt eget "Start"-block eller komma ur ett "Start":


Alla sådana sekvenser kommer att exekveras samtidigt.

Observera att den gröna pilen på blocket inte är ett dekorativt element. Om enheten är ansluten till en dator (oavsett hur: via usb, wi-fi eller bluetooth), och klicka på pilen kommer att starta denna sekvens för exekvering.

Blockera "väntar"

Detta block är också ett av de mest använda. Programmet "fryser" på det - efterföljande block av programmet exekveras inte - och väntar på en viss tid eller ett visst sensorvärde.
"Väntar" har ett stort antal lägen, vilket kan vara skrämmande:


Men i själva verket är allt ganska enkelt. Alla lägen kan delas in i kategorier:
  • efter tid - blocket väntar det angivna antalet sekunder innan det börjar utföra nästa block
  • enligt sensorn:
    • jämförelse - blocket förväntar sig en specifik sensoravläsning specificerad i blocket
    • ändra - blocket väntar på att sensoravläsningen ändras med en angiven mängd jämfört med det initiala värdet. Dessutom kan du välja inte bara storleken på värdet, utan också dess riktning - minskande värde, öka det eller i vilken riktning som helst.
Låt oss titta på exempel på program med varje blockläge.
I det första programmet ändras knapparnas bakgrundsbelysning. Bakgrundsbelysningen kommer att vara grön i en sekund, sedan röd i 1 sekund och växla sedan till standardläget - blinkande grönt:

Det andra programmet är början på en klassisk lösning i Kegelring-tävlingen: roboten snurrar runt sin axel tills den ser en burk framför sig:

Följande program sätter på motor A och stänger av den efter 5 varv:

Driften av denna enhet med bluetooth skiljer sig inte från att arbeta med någon sensor. Till exempel väntar följande program på ett "HI"-meddelande och gör sedan bakgrundsbelysningen grön och spelar upp en ljudfil:

Blockera "Cykel"

Detta är ett speciellt block - andra block kan sättas in i det. Blocken inuti kommer att upprepas. Loop-blocklägena anger metoden som bestämmer när loopen ska sluta. Vi känner redan till de flesta av dessa lägen från det tidigare vänteblocket, men flera nya har lagts till:

  • Obegränsad - denna loop kommer att köras tills programmet tvingas avslutas
  • Räkna - slingan kommer att upprepas ett visst antal gånger
  • Booleskt värde - slingan kommer att upprepas tills det angivna värdet är sant
  • Tid - cykeln kommer att upprepas under den angivna tiden
  • Sensoravläsning:
    • jämförelse - cykeln kommer att upprepas tills sensorn accepterar det angivna värdet
    • ändra - cykeln kommer att upprepas tills sensoravläsningen ändras med den specificerade mängden jämfört med initialvärdet.
Namnet på slingan skrivs ovanför blocket - 01, 02, .... Detta namn kan användas i slingavbrottsblocket, som kommer att beskrivas senare.
Låt oss titta på exempel. Enligt detta program kommer roboten att köra rakt och svänga tills programmet stoppas (en ändlös slinga används):

Följande program använder en peksensor. Tills den trycks in, roterar roboten mellanmotorn, först medurs, sedan moturs. Efter att ha tryckt på sensorn stannar motorn:

En motslinga låter dig spela en ton 10 gånger:

Med det logiska värdeläget måste du använda ännu outforskade sensorpollingblock. Det här programmet tvingar roboten att röra sig framåt tills den ser ett föremål på ett avstånd av mindre än 20 cm (cykelns första block) eller träffar ett hinder med peksensorn (cykelns andra block). Resultat logisk operation"ELLER" ger det tredje blocket i slingan:


"Switch" block

Det finns ett liknande block i NXT som, beroende på värdet på en variabel eller sensoravläsning, kan utföras olika sekvenser handlingar.
Efter att ha slutfört denna sekvens av åtgärder, exekverar programmet blocken efter "Switch".
Läget för detta block bestämmer vilket sensor- eller variabelvärde som ska användas. Alla samma lägen används som "Cykel"-blocket: du kan använda vilken sensor som helst (färg, gyroskopisk, infraröd, ultraljud, motorrotation och andra), numerisk eller textvärde, Bluetooth-meddelande.
Till exempel, enligt detta program kommer roboten först att rotera runt sin axel i 5 motorvarv och sedan, beroende på gyroskopsensorns avläsningar, röra sig framåt eller bakåt. Om vinkeln som detekteras av gyroskopet är mindre än 90 grader, kommer roboten att röra sig framåt. Om vinkeln är mindre än 90 grader går roboten bakåt.

Följande program är en implementering av en enkel reläkontroller för att köra längs en svart linje:

I båda tidigare exemplen innehöll "Switch"-blocket endast 2 alternativ för utveckling av händelser. Men i själva verket kan det här blocket ha fler alternativ. Till exempel, om en robot bestämmer färgen på ett objekt kan den välja mellan ett mycket större antal alternativ:


I det här programmet känner roboten av rött, blått, grönt och ingen färg. Det kommer att namnge färgerna, och även slå på bakgrundsbelysningen på knapparna för röda och gröna färger, och kommer att gå framåt i den blå färgen. Du kan lägga till de återstående färgerna som sensorn kan detektera - svart, gul, vit, brun - med den lilla "+"-knappen som finns längst upp (inringad i rött).
Med ett stort antal alternativ (som i exemplet ovan) blir "Switch"-blocket ganska besvärligt och obekvämt att arbeta med. I detta fall kan blocket växlas till "platt läge":

Knappen som växlar mellan platt-/detaljlägen är inringad i rött.

Blockera "Cykelavbrott"

Detta block är nytt, det fanns inget liknande block i NXT. Det låter dig lämna slingan - de återstående blocken i slingan kommer inte att exekveras, och programmet kommer att gå vidare till blocken efter slingan. Blockets "huvud" anger namnet på cykeln som måste slutföras.
Till exempel bör cykeln i programmet upprepas 5 gånger, men om avståndet till objektet blir mer än 50 centimeter kommer cykeln att avslutas tidigt och roboten kommer att spela en ljudton:

Det speciella med detta block är att det inte behöver vara placerat inuti en avbrottsbar slinga. Följande program skriver till exempel ut antalet gånger som slingan kommer att upprepas så länge som ljusstyrkan för det reflekterade ljuset är större än 50. Men om peksensorn trycks ned medan programmet körs kommer slingan att stanna och programmet stoppas:

Hallå. I mina artiklar vill jag introducera dig till grunderna för programmering av LEGO NXT Mindstorms 2.0 mikrodator. För applikationsutveckling kommer jag att använda Microsofts plattformar Robotics Developer Studio 4 (MRDS 4) och National Instruments LabVIEW (NI LabVIEW). Uppgifterna med automatisk och automatiserad styrning av mobila robotar kommer att övervägas och implementeras. Vi kommer att gå från enkelt till komplext.

Förväntar sig några frågor och kommentarer från läsarna.

Varför NXT Mindstorms 2.0? För för deras projekt denna uppsättning Det tycktes mig vara det mest lämpliga, eftersom NXT-mikrodatorn är helt kompatibel med plattformarna MRDS 4 och NI LabVIEW, och detta kit är också mycket flexibelt när det gäller att montera olika robotkonfigurationer - ett minimum av tid läggs på att montera roboten.

Varför MRDS 4 och NI LabVIEW-plattformar? Så här gick det till historiskt. Under de sista åren på universitetet var uppgiften att utvecklas träningskurser använder dessa plattformar. Dessutom är plattformarna ganska lätta att lära sig och fungerar med dem, du kan skriva ett program direkt för att styra roboten, utveckla ett användargränssnitt och utföra tester i en virtuell miljö (i fallet med MRDS 4).

Vem behöver dessa lektioner av dig ändå, det finns redan många robotprojekt på Internet! Det finns praktiskt taget inga utbildningsartiklar som använder denna kombination (NXT+MRDS 4/NI LabVIEW), mestadels används den inhemska programmeringsmiljön, och allt i den är helt trivialt. Alla som är intresserade av robotik, programmering och som har ett NXT-set (och det finns en hel del av dem), alla åldrar.

Grafiska programmeringsspråk är onda, och de som programmerar i dem är kättare! Grafiska programmeringsspråk, som är MRDS 4 och NI LabVIEW, har utan tvekan sina nackdelar, till exempel att de är fokuserade på smala uppgifter, men de är ändå inte mycket sämre i funktionalitet textspråk, särskilt eftersom NI LabVIEW ursprungligen utvecklades som lätt språk i mastering för att lösa vetenskapliga och tekniska problem, för detta innehåller den många nödvändiga bibliotek och verktyg. Därför är dessa grafiska språk de mest lämpade för att lösa våra problem. Och du behöver inte bränna oss på bål för detta.

Allt detta ser barnsligt ut och inte alls seriöst! När uppgiften är att implementera algoritmer, att lära ut grunderna och principerna för programmering, robotik, realtidssystem utan att fördjupa sig i kretsar och protokoll, då är detta ett mycket lämpligt verktyg, om än inte billigt (avseende NXT-setet). Även för samma ändamål, kit för Arduino baserad, men denna kontroller har nästan ingen kompatibilitet med MRDS 4 och NI LabVIEW, och dessa plattformar har sin egen charm.

Tekniken som används är produkten av förfallna kapitalistiska länder, och författaren är en fiende till folket och en medbrottsling till västerländska konspiratörer! Tyvärr har de flesta teknologier inom området elektronik och datateknik Jag kommer från väst, jag kommer att vara mycket glad om de påpekar för mig liknande teknologier för original inhemsk produktion. Under tiden kommer vi att använda det vi har. Och det finns ingen anledning att rapportera detta till specialtjänsterna och hysa agg mot mig.

En kort översikt över plattformarna MRDS 4 och NI LabVIEW.

Låt mig förtydliga lite terminologi. Under plattformen, in I detta fall, menar vi en uppsättning olika verktyg, till exempel VPL-språket i MRDS, samt applikationens runtime-miljö, d.v.s. Det finns ingen direkt kompilering av program till körbara (*.exe) filer.

2006 tillkännagav Microsoft skapandet av en plattform Microsoft Robotics Developer Studio(mer information i Wikipedia-artikeln). MRDS är en Windows-baserad applikationsutvecklingsmiljö för robotik och simulering. För närvarande relevant är Microsoft version Robotics Developer Studio 4. Funktioner inkluderar: VPL grafiskt programmeringsspråk, webb- och Windows-baserade gränssnitt, VSE-simuleringsmiljö, förenklad åtkomst till sensorer, mikrokontroller och robotaktuatorer, stöd för programmeringsspråket C#, bibliotek för flertrådad programmering och distribuerad exekvering av CCR-applikationer och DSS, stöd för många robotplattformar (Eddie, Boe - Bot, CoroBot, iRobot, LEGO NXT, etc.).

LabVIEW (Laboratory Virtual Instrumentation Engineering Workbench)är en utvecklingsmiljö och plattform för att köra program skapade i det grafiska programmeringsspråket "G" från National Instruments (för mer information, se Wikipedia-artikeln). LabVIEW används i datainsamling och bearbetningssystem, samt för att hantera tekniska objekt och tekniska processer. Ideologiskt ligger LabVIEW väldigt nära SCADA-system, men till skillnad från dem är det mer fokuserat på att lösa problem inte så mycket inom området för automatiserade processkontrollsystem (automatiserade styrsystem teknisk process), hur många i ASNI-regionen ( automatiserade system vetenskaplig forskning). Det grafiska programmeringsspråket "G" som används i LabVIEW är baserat på en dataflödesarkitektur. Exekveringssekvensen för operatörer på sådana språk bestäms inte av den ordning i vilken de visas (som i imperativa programmeringsspråk), utan av närvaron av data vid dessa operatörers ingångar. Operatörer som inte är datarelaterade exekveras parallellt i slumpmässig ordning. LabVIEW-programmet heter och är ett virtuellt instrument (engelska: Virtual Instrument) och består av två delar:

  • ett blockschema som beskriver logiken för det virtuella instrumentet;
  • frontpanel som beskriver användargränssnittet för det virtuella instrumentet.

En snabb titt på LEGO NXT Mindstorms 2.0-setet.

NXT-satsen består av en styrenhet, fyra sensorer och tre servon. Kontrollblocket innehåller:
  • 32-bitars AVR mikrokontroller 7 med 256 KB FLASH-minne och 64 KB RAM-minne;
  • 8-bitars AVR-mikrokontroller med 4 KB FLASH-minne och 512 bytes RAM-minne;
  • Bluetooth V 2.0 radiomodul;
  • USB uttag;
  • 3 kontakter för anslutning av servon;
  • 4 kontakter för anslutning av sensorer;
  • LCD-skärm med en upplösning på 99x63 pixlar;
  • högtalare;
  • kontakt för 6 AA-batterier.
Sensorer (olika uppsättningar av sensorer tillgängliga i olika konfigurationer):
  • ultraljudssensor;
  • två taktila sensorer (peksensorer);
  • färgdetekteringssensor.


Figur 1 - NXT mikrodator med anslutna sensorer och ställdon

Och naturligtvis innehåller setet en mängd olika LEGO-delar i LEGO Technic-formfaktorn från vilka ställdonen och stödstrukturen kommer att monteras.


Figur 2 - Delar i LEGO Technic formfaktor

Vi skriver den första ansökan.

Låt oss skriva den första ansökan. Låt, klassiskt, den här applikationen visar texten "Hello, World!". Implementeringen kommer att ske växelvis i MRDS 4 och NI LabVIEW, i processen kommer vi att överväga detaljerna för varje plattform.

Vi installerar först MRDS 4 och NI LabVIEW-plattformarna i fallet med MRDS 4, installationen bör utföras i en mapp vars sökväg inte består av kyrilliska (ryska bokstäver), konto Användarens namn ska också endast bestå av latinska bokstäver.

1. MRDS 4-plattform.
Starta VPL-miljön (Startmeny - Alla program - Microsoft Robotics Developer Studio 4 - Visual Programming Language). Denna miljö låter dig utveckla applikationer i VPL-språket och genomföra tester i den virtuella VSE-miljön. Ett VPL-program är ett diagram som består av sammanlänkade block. I fönstret som öppnas, förutom standardkommandofältet och menyn, finns det 5 huvudfönster:
  1. Grundläggande aktiviteter – innehåller grundläggande block som implementerar operatorer som konstant, variabel, villkor, etc.;
  2. Tjänster – innehåller block som ger åtkomst till MRDS-plattformens funktionalitet, till exempel block för att interagera med någon maskinvarukomponent i roboten, eller block för att anropa en dialogruta;
  3. Projekt – kombinerar diagram som ingår i projektet, såväl som olika konfigurationsfiler;
  4. Egenskaper – innehåller egenskaperna för det valda blocket;
  5. Diagramfönster – innehåller direkt diagrammet ( källa) applikationer.

Figur 3 - VPL-programmeringsmiljö

Låt oss utföra följande sekvens av åtgärder:

2. NI LabVIEW-plattform.
På denna plattform implementeras allt nästan identiskt. Låt oss lansera LabVIEW-miljön. Två fönster kommer att dyka upp framför oss, det första är frontpanelen, designad för att implementera användargränssnittet ( utseende virtuell enhet), den andra är Block Diagram, för implementering av programlogiken.


Figur 8 - LabVIEW miljöfönster

Vi kommer att använda blockdiagramfönstret. Låt oss utföra följande steg:

Sammanfattning

  • Vi gjorde en recension mjukvaruplattformar för att utveckla NXT mikrodatorapplikationer.
  • Vi tittade på de grundläggande principerna för applikationsutveckling i plattformarna MRDS 4 och NI LabVIEW.
  • Vi bekantade oss med omgivningens gränssnitt.
I följande artiklar kommer vi att behandla NXT-programmering direkt. Det finns mycket utbildningsmaterial online för LabVIEW-miljön, men mycket mindre för VPL. Jag rekommenderar starkt att du studerar referensmanualen för båda plattformarna (kunskaper i engelska krävs), i dessa manualer finns det många exempel som kan implementeras utan att ha NXT, samt följande böcker:
  • Programmering av NXT-mikrodatorn i LabVIEW - Lidiya Beliovskaya, Alexander Beliovsky,
  • Microsoft Robotics Developer Studio. Programmering av robotstyrningsalgoritmer - Vasily Gai.
I mina artiklar kommer jag bara att beskriva mina projekt, eftersom... Jag ser inte poängen med att skriva om information från en källa till en annan. Jag kommer att acceptera all konstruktiv kritik och svara på alla frågor angående de granskade plattformarna. Tack på förhand!

Höjdpunkten av Legos skapelse var lanseringen av programmerbara byggset LEGO Mindstorms Ev3. Leksaken är avsedd för barn över tio år.

Nu kan mindstorms ev3 köpas utan problem i specialbutiker eller på Internet. De är lätta att programmera för att utföra vissa åtgärder.

Ställa in programmeringsmiljön

Innan du börjar skriva kommandon för roboten måste du installera programvaran.

PC-systemkrav för att arbeta med lego mindstorms ev3:

  • OS Windows XP, 7, 8 eller MacOs (10.6-10.8);
  • 2 GB RAM och 750 MB diskutrymme.

När du installerar miljön med USB, välj lärarens eller elevversionen.

Efter installationen skapar vi ett projekt, som visas som en mapp. I kontrollpanelen väljer vi vad vi vill skapa, programmera eller genomföra ett experiment. Det rekommenderas att skapa ett experiment för att studera sensorernas prestanda.

Robotstyrningsprogrammet består av block, sekventiella operationer som det utför, i sin tur har varje enskilt block sitt eget läge. Till exempel är läget för motorstyrenheten möjligheten att stanna. Studera i detalj alla symboler som är tryckta på skärmen.

Det finns en meny på skärmen som innehåller flikar:

  • handling;
  • operatörsledning;
  • sensor;
  • dataoperationer;
  • mina block osv.

Med den här menyn kan du programmera roboten att utföra olika åtgärder. Till exempel, i fliken som är ansvarig för driften av olika mekanismer, kan du ställa in motorläget för att flytta, stoppa eller starta. Där kan du ställa in tid, kvantitet och rotationsvinkel.

I "ljud"-blocket kan du programmera roboten att spela ljudsignaler. Dessa signaler kan laddas upp eller spelas in med en mikrofon. En viktig del av programstyrningen är den del av menyn som styr operatörerna. I den kan du styra handlingen i själva programmet.

Här kan du ge följande kommandon till programmet:

  • börja vänta;
  • upprepning av cykeln;
  • växla mellan block;
  • avsluta cykeln.

Lego mindstorms ev3 är multitasking, det rymmer flera kommandosekvenser. Du kan programmera inte bara dina handlingar i programmet, utan också sekvensen av deras utförande.

Genom att kombinera alla möjliga kommandon i motsvarande meny kan du skapa komplexa banor och typer av konstruktorbeteende.

LEGO Utbildning Mindstorms EV3: Programmera Robohand (Robohand H25):