Mobil Robot Arm DoArm S7 av wifi Arduino uno r3 (5 / 7 steg)
Steg 5: Kontroll för robotarm
4.1 människa-dator interaktion
Eftersom ESPduino redan är inbyggda funktionen Telnet, vi kan inse människa-dator interaktion, du kör-staten, nuvarande position, aktuell hastighet och så vidare, av Telnet. På samma gång, kan vi sätta den rörelse modellen för singel eller flera axlar och rörelse läge.
När ESPduino ansluts till den trådlösa routern, kan datorn ansluta IP-adressen ESPduino med Telnet (, SecureCRT). Anslut porten är 23, som visas i figur 6.
Vi kan styra robotarm av genom Telnet,
följande kommandon, som definieras enligt följande.
"h": skriva ut hjälpinformationen som;
"z": Låt de axlar för robotarm tillbaka till noll läge (dvs första standardplatsen anges i avsnitten ovan), som definieras när vi ställer in D-H matrisen. Sedan efter makt är invändning läget 0 för varje axel, som visas i figur 7.
"p": Skriv ut det aktuella läget för roboten
arm, som visas i följande bild. Informationen omfattar statligt, inställningen hastighet, nuvarande vinkel för varje axel, objekt vinkel och nuvarande ställning matris för slutet manöverdonet.
"d": kontrollera eller ställa in den aktuella lufthastigheten, som velocity betyget definieras som 1 ~ 10, där "1" är den lägsta hastigheten och "10" är den snabbaste hastigheten.
"c": håll den aktuella positionen för slutet manöverdonet, och sedan låta manöverdonet flytta den x-, y-och z-axeln i kartesiska koordinater, respektive. Unite är mm.
"t": håll den aktuella positionen för manöverdonet, och sedan låta manöverdonet flytta den x-, y-och z-axeln i verktyget koordinater, respektive. Unite är mm.
"s": enkelverkande rörelse. I början, varje axel är på noll plats, och vinkeln anges som 0, räckvidden är-90 grad ~ 90 graders. Positiva och negativa avgörs av höger regel.
"w": flytta till designade läge.
"g": kontrollera griparen (tass). Till exempel menas g:45 att låta tass öppna 45 graders vinkel control servo.
Liknar den smarta 3-färger LED, DoArm källkoden finns web konfiguration och OTA uppdaterad funktion, som visas i figur 7.
4.2 etikett och initiering
När du ansluter servo förlängningskabeln till drivna styrelsen slumpmässigt, för det första, låt varje axel av robot arm motsvarande kanal på driven styrelsen, respektive. Bekräfta därefter, utflykten för noll plats; Slutligen bekräfta tillåtet-flyttningen räckvidd.
1) bekräfta kanalnummer på driven styrelse för varje robotarm
När du ansluter servo förlängningskabeln till drivna styrelsen, är det mycket svårt att skilja numret motsvarar kanalnumret i styrelsen. Därför, vi sätter bara servo förlängningskabeln till styrelsen slumpmässigt, som visas i figur 8.
Figur 8 Servo förlängningskabel driven styrelse
I källkoden, låt den funktion initParseData() ange bias [6] som {0,0,0,0,0,0} och rörliga utrymmet för varje axel ligger inom 90 ° ~ 90 °.
bias flytta avstånd för varje område
flyta bias [6] = {0, 0, 0, 0, 0, 0};
arm.setServoBias (bias, 6);
flytta utrymme för varje axel
arm.setServoRange (-90, 90, -90, 90, -90, 90, -90, 90, -90, 90, -90, 90,);
Låt arm.setChannel() vara den faktiska tillgång. I figur 8 visas access-kanal är 1,3,4,9,11,13, respektive, sedan låta
arm.setChannel (1, 3, 4, 9, 11, 13);
Kompilera koden och ladda ner ESPduino, öppna gränssnittet människa-dator med hjälp av Telnet, Använd kommandot "s:x, y" bekräfta motsvarande förhållandet för varje område. Till exempel
Genom att använda "s:1, 10", låt axel 5 flytta och sedan kanal "1" skriver in i den 5: e axeln;
Genom att använda "s:2, 10", låt axel 6 flytta och sedan kanal "3" skriva in den 6: e axeln;
Genom att använda "s:3, 10", låt axel 4 flytta och sedan kanal "4" skriva in den 4: e axeln;
Genom att använda "s:4, 10", låt axel 2 flytta och sedan kanal "9" skriva in den 2: a axeln;
Genom att använda "s:5, 10", låt axel 1 flytta och sedan kanal "11" skriva in den 1: a axeln;
Genom att använda "s:6, 10", låt axel 3 flytta och sedan kanal "13" skriva in den 3: e axeln;
Då kan vi få sista rätt motsvarande förhållandet mellan axeln för robotarm och kanalen i driven styrelsen, som visas i följande funktion.
arm.setChannel (11, 9, 13, 4, 1, 3);
eftersom griparen är endast en, låt det infoga en ledig kanal, och konfigurera den genom att
arm. setGripperChannel () 。
ställa in kanalnumret för gripdon
arm.setGripperChannel(14);
2) bekräfta utflykt (för noll platsen för varje axel)
Bekräfta motsvarande förhållandet mellan axeln och kanalen, källkoden behövs för att åter sammanställas efter och hämta in ESPduino att köra igen. Genom att använda Telnet-kommandot, kan vi bekräfta utflykt bias för varje område.
För det första är uppsättning hastigheten som lägsta nivå, kommandot d:1, 1
Figur 9 ange lägsta hastighet nivå
Sedan med "s:x, y" att låta enda axel för att flytta noll. I allmänhet är noll platsen (medelläge) o. med "s:x, y" bekräfta om axeln ligger på noll plats. Om inte, sedan kommandot "s" för att låta denna axel till noll plats. Till exempel betecknas "s:1, 65" att denna axel måste flytta 65 graders får noll plats. I detta fall anges kommandot enligt följande.
utflykt för medelläge
flyta bias [6] = {65, 5, -8, 5, 0, 0};
arm.setServoBias (bias, 6);
Sedan efter kompilera, kommer robotarm att återvinnas till noll plats automatiskt, som visas i figur 10.
Figur 10 DoArm på ursprungliga status
3) bekräfta rörliga utrymmet för varje axel
Efter bekräftelse för noll plats, vi kan bekräfta det rörliga utrymmet för varje axel med hjälp av "s:x, y" med Telnet människa-dator interaktion. På grund av begränsningarna, vinkel scopet för servo anges defaultly som 90 ° ~ 90 °. I detta fall är rörliga räckvidd som följer. Observera att, om rörliga räckvidd är överträffas, sedan servo skulle stoppas.
flytta utrymme för varje axel i detta fall
arm.setServoRange (-90, 30, -30, 60, -40, 35, -90, 90, -50, 90,-80, 80);
(4) kontroll för gripdon
Kontroll axlar för gripdon är separat till de andra 6, så att vi kan använda "g:x" kommando för att kontrollera griparen, som visas i figur 11.
a position för gripdon vid 0 graders
(b) placerar för gripdon vid 20 graders
c positionen för gripdon vid 45 graders
Figur 11 kontroll för gripdon
4.3 enda axel kontroll
I Telnet gränssnittet, vi kan kommandot "s:x, y" för att kontrollera den inre axeln, där x betecknar den designade rörliga axeln, är 1 ~ 6; y betecknar den absoluta vinkeln, räckvidden är den tillåts av varje axel med float typ. Efter varje åtgärd, kan det aktuella läget för robotarm visas automatiskt.
Figur 12 utdata för enda axel rörelse
4.4 gemensamt kontroll
Gemensamt betecknar kontroll 6 axlar rörelse samtidigt. Den har 3 lägen: 1. fortsätter rörelsen av fast plats; 2. förflyttning av slutet manöverdon i kartesiska koordinater; 3. förflyttning av slutet ställdon i verktyget samordnar.
(1) fortsätter rörelsen av fast plats
Vi tillhandahåller metoder arm.setWaitPosition () och arm.gotoWaitPosition(), som är det fasta anslutningspunkt, och flyttar till denna plats, respektive. I vår källkod ger vi källkoden för 9 gemensamt kontrollera. DoArm kan flyttas genom "w:x", där "x" är 0 ~ 8. Särskilt, kommandot "w:9" kan börja 9 fortsätta rörelser. Denna video kan ses på:
http://v.Youku.com/v_show/id_XMTQ5ODk0NzEyMA==.html?from=Y1.7-1.2
(2) förflyttning av slutet manöverdon i kartesiska koordinater
Omvänd kinematik funktionen calcReverseKinematics() kan fås för att beräkna den utformade samt omvänd vinkel position för robot arm slutet manöverdonet. Särskilt, ger Telnet interaktion kommandot tillsammans med x, y, z-axeln i kartesiska koordinater; dvs, "c:x, y, z", där x, y, z betecknar tillökning tillsammans med x, y, z-axeln med unite mm och flyter typ.
Till exempel om låt avsluta manöverdonet flytta 20mm tillsammans med z-axeln, är kommandot "c:0, 0, 20", och sedan återvända "c:0, 0, -20". Robotarm skulle flytta 20mm i vertikal orientering och sedan flytta 20mm i omvänd riktning. Slutligen, armen skulle återgå till den ursprungliga platsen. Vid denna tid är noll. När fick den kommandot "c:0, 0, 20", är platsen (0.000,2.358,-11.361,0.000,9.003,0.000); efter detta, om kör den kommandot "c:0, 0, -20", är platsen (0.000,-0.000, 0.000, 0.000,-0.000, 0.000), som visas i figur 13.
Figur 13 rörelse i kartesiska koordinater
(3) förflyttning av slutet ställdon i verktyget koordinater
Liknar rörelsen i kartesiska koordinater, skillnaden är att manöverdonet steg i verktyget koordinaterna (motsvarande O6). Kommandot är "t:x, y, z", där x, y och z är increasements tillsammans med x, y, z-axeln med unite mm och flyta typ.
Till exempel, låt slutet manöverdonet flytta 20mm på den ursprungliga statusen tillsammans med X-axeln. Kommandot är "t:20, 0, 0", och återgå till den ursprungliga platsen är "t:-20,0,0". Sedan skulle slutet manöverdonet vara det första flytta 20mm tillsammans med x-axeln, och sedan återvända 20mm motsatt riktning. Vi kan analysera resultaten i Telnet gränssnittet. Från den ursprungliga platsen 0.000, när fick den kommandot "t:20, 0, 0", är platsen (0.000,2.358,-11.361,0.000,9.003,0.000); efter det, om kör den kommandot "t:-20,0,0", är platsen (0.000,-0.000, 0.000, 0.000,-0.000, 0.000).
Figur 14 rörelse i verktyget samordnar