Eindwerk Visual C++: Didactische robotsturing

 

1      Introductie     

Het was de bedoeling de basisbewegingen van een robot te kunnen demonstreren door de verschillende motoren te sturen via de parallelle poort. Door de oneindige mogelijkheden van de programmeeromgeving is echter meer mogelijk. WYTIWYG What you think is what you get

 

Om de robot in beweging te krijgen volstaat het 6 gelijkstroommotoren van gelijkspanning te voorzien .

+ - = links   - + = rechtse draaizin.

Motor 0 bevindt zich in de voet van de robot . motor 1 is het schoudergewricht, motor 2 de elleboog motor 3,4,en 5 het polsgewricht (Pitch,Roll,Yaw).

Op elke printerpoort bevinden zich 12 uitgangen en 5 ingangen, voldoende voor de bediening van

6 motoren en 5 sensoren.De printerpoort wordt gebufferd met optocouplers die de vermogentrap sturen en zorgen voor een galvanische scheiding.

 

De snelheid van de motoren wordt geregeld door pulsbreedtemodulatie. Een db-programma zorgt voor de verschillende parameters voor die pulsbreedteregeling :periode,aan-tijd ,uit-tijd. In het scherm parameters kunnen de verschillende parameters nog aangepast worden volgens PC, Robot en toepassing Bij het opstarten van het robotprogramma wordt automatisch printerpoort 2 geselecteerd. Via het menu kan ook gekozen worden voor LPT1.

 

Met de bedieningsknoppen in het scherm handbediening kan de robot in zijn initiële stand gezet worden alvorens over te gaan naar de automatische werking. Met de 5 sensoren krijgt men een indicatie van de initiële stand.

 

Willen we een automatische sturing van een aantal opeenvolgende bewegingen, dan volstaat het de opeenvolgende coördinaten in te geven in een excel-programma.Dit programma zorgt voor de omrekening van cartesiaanse coördinaten naar poolcoördinaten of hoekcoördinaten .

Het resultaat van de berekeningen wordt in een vast gedefinieerde tabel opgeslagen in databaseformaat .Bij het opstarten van het robotprogramma wordt programma1.db geladen Deze file moet zich bevinden in dezelfde directory als het robotprogramma . Andere programma’s kunnen opgehaald worden via menu of knop “programma”

 

Het robotprogramma leest de G-code en bepaald hiermee volgens welk algoritme de opeenvolgende coördinaten bereikt worden.De gewenste snelheid kan opgegeven worden in de kolom Feed  mm/min

Het db-programma moet rekening houden met eventuele hindernissen onderweg, dit is dan ook een opdracht voor de programmamaker. Door gebruik te maken van de gepaste G-code ,boog , hoek, lineair , motorvolgorde enz kan men hindernissen omzeilen en het aantal programmaregels beperken .

 

Door één druk op de muisknop wordt een heel mechanisme in werking gesteld, daarom is alleen een verantwoord gebruik toegelaten. De kracht van de motoren wordt om veiligheidsredenen begrensd.

Bij noodgevallen moet de dodemansknop of de noodstop gebruikt worden want bij een druk op de knop “Stop” op het scherm wordt de actuele cyclus afgewerkt. Om een situatie op te lossen waarbij iemand klem zit kan gebruik gemaakt worden van de handbediening. Een veiligheidsscherm wordt echter voorzien rond de robot Het spreekt voor zich dat dit dan ook nooit overbrugd wordt of op één of andere manier omzeild wordt. Gebruik van een paswoord zal in de tweede versie ingebouwd worden om alleen gebruik door bevoegden toe te laten. Nu wordt gebruik gemaakt van een sleutel om de spanning in te schakelen .

 

Foutmeldingen beperken zich nu nog tot de foutmeldingen van Windows 98.

Bij onoordeelkundig gebruik zal het voorkomen dat het programma opnieuw moet opgestart worden.

Een goede voorbereiding spaart dus tijd en frustraties.

Laat niet na om uw bevindingen in het elektronische dagboek neer te schrijven . Zie knop “dagboek” in het hoofdscherm .Bij voldoende informatie over uw wensen en bevindingen zal het programma aangepast worden. Het dagboek kan ook gebruikt worden om uw ervaringen door te geven aan andere gebruikers .Het is de bedoeling in de volgende versie met een joystick te werken voor handbediening en met sensoren om de bewegingen te sturen bij automatisch gebruik

Zelfs gebruik van een camera voor positionering wordt in overweging genomen.

 

2      Specificaties

2.1    Benaming van de robotonderdelen

 

 

 

 

 

Motor 5

 

Motor 4

 

Motor 3

 

Motor 2

 

Motor 1

 

Motor 0

 

 

 

 

 

 

 

 

 

 

 

2.3    Afmetingen in mm

 

 

 

 

 

 

 

 

 

3      Programmaonderelen

3.1 De verschillende schermen

Hoofdscherm

 

Handbediening

 

Aboutscherm

 

Infoscherm

 

 

Helpscherm

 

 

 

3.2 De verschillende functies

Bedieningsknoppen

 

Handbediening :       Het handbedieningsscherm wordt geopend

Bewegingstypen:      Een scherm met verschillende basisbewegingen (nog niet  af)

Parameters:              Gegevens over het soort robot: lengte, spanning, gewicht ..

Paswoord :                Een paswoord moet ingetypt worden.

Programma:              Een ander databasedocument kan opgehaald worden

Help:                          Oplossing voor veel voorkomende problemen

Service:                     Elementaire parameters kunnen aangepast worden. 

Registratie van de werking kan bekeken worden.(nog niet)

Dagboek                   Een tekstboek verschijnt met de laatst ingetypte verslagen.

                                   Communicatiemiddel met de gebruiker + geheugensteuntje

                                   Hieraan wordt nog verdergewerkt.

 

Keuze

De beginrecord en de eindrecord uit het databasedocument worden ingevuld.

Het aantal cycli wordt bijgehouden .

 

Start Stop

Als je bevoegd bent en het paswoord kent mag je op start drukken.

Bij het drukken op stop wordt de volledige cyclus eerst afgewerkt.

Cyclus

Een cyclus wordt bepaald door begin- en eindrecord .

Bij éénmaal drukken op de startknop wordt één cyclus afgewerkt

De focus wordt op de stop gezet

 

Continu

Wanneer nogmaals gedrukt wordt op de startknop werkt de robot continu.

De focus wordt op de stop gezet

 

Database

De volgorde en de benaming van de kolommen ligt vast in het robotprogramma.

De lengte van het programma of het aantal records is niet van belang

Het is aangewezen opeenvolgende N-blok nummers te gebruiken

De G-code geeft informatie aan het programma voor het te volgen algoritme.

De gebruiker van de robot moet in het excelprogramma de X,Y,Z coordinaten opgeven en de hoek waaronder de effector het object moet benaderen  PITCH,ROLL en YAW De robotcoordinaten  worden hieruit berekend. Met FEED kan de gewenste snelheid opgegeven worden deze wordt dan bewerkt met parameters.

 

 

Databasenavigator

 

              Eerste record consulteren

              Vorige record

              Volgende record

              Laatste record

              Record invoegen

              Record verwijderen

              Record aanpassen

              Aanpassingen wegschrijven

              Aanpassingen negeren

              Vernieuwen van de gegevens 

 

Snelheid

De snelheid van alle motoren wordt beinvloed

 

De snelheid van motor 0 wordt gecorrigeerd

De snelheid van motor 1 wordt gecorrigeerd

De snelheid van motor 2 wordt gecorrigeerd

De snelheid van motor 3 wordt gecorrigeerd

De snelheid van motor 4 wordt gecorrigeerd

De snelheid van motor 5 wordt gecorrigeerd

 

 

Sensoren

De toestand 0 of 1 komt in het witte vlakje naast de sensor

 

 

 

Visualisatie

De TCP-coördinaten en de robotcoördinaten worden weergegeven op de figuur.

X=0,Y=0,Z=2260 M1=0° M1=0° M2=0°

 

 

De initiële stand

Op de grond wordt een X,Y assenstelsel getekend met een verdeling volgens de

 X en Y-coördinaten De robot wordt met het center van de basis op X=0,Y=0 gezet

De hoogte is de Z-as.

X=0, Y =1299mm ,Z 1046mm

M0=0,M1=45°,M2=45°,M3=45°

 

 

 

 

 

 

DBF-bestand

Het openen van een dbf-bestand kan op twee manieren :

Via het menu

 

Via de bedieningsknop : programma

 

Printerpoort

De keuze van printerpoort  1 of 2 gebeurt via het menu

 

LPT1 heeft als basisadres 0x278  tot  0x27A

LPT2 heeft als basisadres 0x378 tot 0x37F

Dit  volgens het evangelie van Microsoft Systeminfo

 

 

4      De software

Zie bijlage voor volledige sourcecode van de verschillende files

Project manager

Hoofdprogramma.h

Bevat de declaraties van variabelen, functies,objecten en componenten voor

het hoofdscherm.

Hoofdprogramma.cpp

Bevat alle code voor de bedieningen en uitlezingen in het hoofdscherm.

Handbediening1.h

Bevat de declaraties van variabelen, functies,objecten en componenten voor

het handbedieningsscherm.

Handbedieningc1.cpp

Bevat alle code voor de bedieningen en uitlezingen in het handbedieningsscherm.

Helpscherm

Teksten met helpfiles(nog niet af)

Infoscherm

Informatie over de robot (nog niet af)

Ports.c

Bevat de assembleercode voor het sturen van de printerpoort.

Het laat een hoge snelheid van inlezen en uitlezen toe.

Deze manier van werken wordt niet toegelaten bij Windows NT en 2000

Ports.h

Declaraties voor bovenstaande file

Programma1.dbf

Bevat het cijfermateriaal voor een geautomatiseerde sturing van de verschillende motoren.

Projectrobot.cpp

Code en declaraties van het project zelf

5      De verschillende functies

5.1    Openen van een dbf-bestand

 

if ( OpenDialog1->Execute())                                                   // geijkte procedure om een file te openen

    { Table1->Close();

      AnsiString s=          OpenDialog1->FileName;

      AnsiString dir, tabel;

      int i,idel;

      for (i=0;i< s.Length();i++)

         if (s.IsPathDelimiter(i)) idel=i;

                 if (idel)

                {dir = s.SubString(1,idel);

                tabel=s.SubString(idel+1,s.Length());

                }

        else return;

     Table1->DatabaseName=  dir;                                                //Tabel invoegen

     Table1->TableName=  tabel;

     Table1->Open();

    }

 

5.2    Het sturen van de motoren

 

Rij 1 noemen we de Setwaarde:= huidige toestand

Rij 2 de Solwaarde                    = gewenste waarde      

 

//Motor0 links

     for (;M0Sol<M0Set;M0Set--) 

// Algoritme om een motor spaning te geven

        {Sensoren();                                                            // Toestand van de sensoren binnenlezen

        for (j=0;j<M0On;j++)                                                    // spanning

        outport(port,M0L);

        for (k=0;k<=M0Off;k++)                                                  // geen spanning

        outport(port,0x00);

        teller0--;                                                              // positieteller voor motor 0 bijhouden

        Application->ProcessMessages();                                         // andere acties toelaten

        }

//Motor0 rechts

    for (;M0Sol>M0Set;M0Set++)

        {Sensoren();

        for (j=0;j<M0On;j++)

        outport(port,M0R);

        for (k=0;k<=M0Off;k++)

        outport(port,0x00);

        teller0++;

        Application->ProcessMessages();

        }

De snelheid wordt veranderd door de verhouding MoOn en  MoOff te wijzigen

Dit gebeurt bij de samenstelling van periode Aan-tijd en Uit-tijd

5.3    Het recept voor de snelheid:

int Snelheid=Edit1Snelheid->Text.ToIntDef(10000)*1;

int Snelheid0=EditSnelheid0->Text.ToIntDef(10000)*1;

int Snelheid1=EditSnelheid1->Text.ToIntDef(10000)*1;

int Snelheid2=EditSnelheid2->Text.ToIntDef(10000)*1;

int Snelheid3=EditSnelheid3->Text.ToIntDef(10000)*1;

int Snelheid4=EditSnelheid4->Text.ToIntDef(10000)*1;

int Snelheid5=EditSnelheid5->Text.ToIntDef(10000)*1;

int M0On=Snelheid0*Snelheid; // Aan-tijd van motor 0                                           int M1On=Snelheid1*Snelheid; // Aan-tijd van motor 1                                         

int M2On=Snelheid2*Snelheid; // Aan-tijd van motor 2                                         

int M3On=Snelheid3*Snelheid; // Aan-tijd van motor 3                                          

int M4On=Snelheid4*Snelheid; // Aan-tijd van motor 4                                         

int M5On=Snelheid5*Snelheid; // Aan-tijd van motor 5                                        

int Periode= Snelheid*100;

int M0Off=Periode-M0On;      // Offtijd van motor 0

int M1Off=Periode-M1On;      // Offtijd van motor 1

int M2Off=Periode-M2On;      // Offtijd van motor 2

int M3Off=Periode-M3On;      // Offtijd van motor 3

int M4Off=Periode-M4On;      // Offtijd van motor 4

int M5Off=Periode-M5On;      // Offtijd van motor 5

 

Bovenstaand algoritme zorgt ervoor dat bij het verhogen van de snelheid alleen de aan-tijd vergroot en niet de gehele periode.

Bij het vergroten van de snelheid  algemeen vergroten alle aan-tijden met eenzelfde percentage.

 

5.4    Auditieve mededelingen oproepen bij “Start”

De gewenste auditieve mededelingen worden aangeboden in een file audio.wav

De belangrijkste richtlijnen i.v.m. veiligheid en gebruik kunnen hierin medegedeeld worden.

 

void TMainForm::Audio()

{

PlaySound("audio.wav", hInst,SND_NOSTOP | SND_ASYNC );

}

 

// auditieve mededelingen i.v.m. veiligheid. Een extra dimensie

 

 

5.5    Oproepen van de Aboutbox

 

void __fastcall TMainForm::About1Click(TObject *Sender)                       {

AboutBox->ShowModal();

}

 

//About de versie en de auteur

 

5.6    Oproepen van het Helpscherm

 

 

void __fastcall TMainForm::Button2Click(TObject *Sender)                        {

HelpScherm->ShowModal();

}

 

// Helpscherm openenen

 

 

5.7    Het inlezen van de toestand van de sensoren

 

void TMainForm::Sensoren()                                                      //inlezen toestand van de 5 sensoren

 

{PinA=((inportb (0x279) & 0x8) == 0x8);

 

 PinB=((inportb(0x279) & 0x40) == 0x40);

 

 PinC=((inportb(0x279) & 0x20) == 0x20);

 

 PinD= ((inportb(0x279) & 0x10) == 0x10);

 

 PinE=((inportb(0x279) & 0x80) == 0x80);

 

if  ( PinA)

{

Label1->Caption= PinA  ;

}

else

{Label1->Caption= "0 " ;

}

 

if   (PinB)

{

Label2->Caption= PinB ;

}else

{Label2->Caption= "0 " ;

}

 

if   (PinC)

{

Label3->Caption= PinC ;

}else

{Label3->Caption= "0 "  ;

}

 

if   (PinD)

{

Label4->Caption= PinD   ;

}else

{Label4->Caption= "0 "   ;

}

 

if   (!PinE)

{

Label5->Caption = "1" ;

}else

{Label5->Caption= "0"   ;

}

 

De functies inportb worden gedefinieerd in de file ports.c en ports.h

en werken bevredigend bij gebruik met W98. 

Voor toepassingen met WNT en W2000 moet uitgekeken worden naar een andere oplossing W98 ziet dit voorlopig door de vingers.

 

 

 

 

 

 

 

 

 

5.8    Tellers

De aktuele positie van elke motor wordt bijgehouden in de tellers 0 tot 5
Diezelfde tellers worden ook gebruikt om de robot op het scherm te tekenen in het scherm Visualisatie
 
void TMainForm::Tellers()
{
LTeller0->Caption = teller0;
LTeller1->Caption = teller1;
LTeller2->Caption = teller2;
LTeller3->Caption = teller3;
LTeller4->Caption = teller4;
LTeller5->Caption = teller5;
LNblok->Caption = NSol;
LGcode->Caption = GSol;
LX->Caption = XSol;
LY->Caption = YSol;
LZ->Caption = ZSol;
LPitch->Caption = PITCHSol;
LRoll->Caption = ROLLSol;
LJaw->Caption = JAWSol;
LTime->Caption = TSol;
LFeed->Caption = FSol;
}
 

5.9    Threads

Door in alle lussen gebruik te maken van de functie Application->ProcessMessages();

is het gebruik van Threads voorlopig niet nodig. Hierdoor is het mogelijk om tijdens het uitvoeren van een for lus andere acties uit te voeren . Alle windowacties blijven eveneens mogeliik .

Het is ook mogelijk tijdens de werking van de motoren de toestand van de sensoren binnen te lezen. Deze toestanden zullen later gebruikt worden om de motoren vroegtijdig te stoppen wanneer een sensor bediend wordt.

vb

    for (;M0Sol>M0Set;M0Set++)

        {Sensoren();

        for (j=0;j<M0On;j++)

        outport(port,M0R);

        for (k=0;k<=M0Off;k++)

        outport(port,0x00);

        teller0++;

        Application->ProcessMessages();

         }

5.10  Tekenwerk

 

Om de robot een gestroomlijnd uiterlijk te geven worden de verschillende onderdelen licht conisch getekend . Dit gebeurt door 360 lijntjes die elkaar gedeeltelijk overlappen. Voor de juist positie van de lijntjes wordt gebruik gemaakt van de tellerstand uit bovenstaande functie. De tellerstand bevat de hoek waaronder een lijn moet getekend worden t.o.v. de vorige lijn. Na een beetje gegoochel met sinussen en cosinussen komt de robot in de juiste positie tevoorschijn. Om het kleur van de werkelijke robot na te bootsen werd gekozen voor kleur nr 0x002266ff

 
void TMainForm::Tekenwerk()                                                  // Tekenen van robotbeweging
 {
  Refresh();
  Canvas->Pen->Width = 1;
  Canvas->Pen->Color = clBlack;
  Canvas->Rectangle(X0-6*diam,Y0,X0+6*diam,Y0+4*diam);
  Canvas->Brush->Color = 0x002266ff ;
  Canvas->Rectangle(X0-6*diam,Y0,X0+6*diam,Y0+4*diam);
  Canvas->Brush->Color = clWhite ;
 
for ( h=0;h<360;h++)                                                            // Tekenen robot
 
// De armen
 {Canvas->Pen->Color=0x002266ff;
  Canvas->MoveTo(X0+4*diam*sin(h*3.14159265/180),Y0);
  Canvas->LineTo(X1+3*diam*sin(h/57.3),Y1+3*diam*cos(h/57.3));
  Canvas->LineTo(X2+2*diam*sin(h/57.3),Y2+2*diam*cos(h/57.3));
  Canvas->LineTo(X3+diam*sin(h/57.3),Y3+diam*cos(h/57.3));
  Canvas->LineTo(X4+diam/2*sin(h/57.3),Y4+diam/2*cos(h/57.3));
 }
 

// De voet

  Canvas->Brush->Color = clBlack ;
 

// De gewrichten

  Canvas->Ellipse(X1-2*diam,Y1-2*diam,X1+2*diam,Y1+2*diam);
  Canvas->Ellipse(X2-2*diam,Y2-2*diam,X2+2*diam,Y2+2*diam);
  Canvas->Ellipse(X3-2*diam,Y3-2*diam,X3+2*diam,Y3+2*diam);
  Canvas->Ellipse(X4-2*diam/2,Y4-2*diam/2,X4+2*diam/2,Y4+2*diam/2);
  Canvas->Brush->Color = clWhite ;
 
 
// Coordinaten weergeven op scherm
 
int X4C=(X4-X0)*schaal ;
int Y4C=-(Y4-Y0)*schaal ;
  Canvas->TextOut(X1-5,Y1-5,M1Set);
  Canvas->TextOut(X2-5,Y2-5,M2Set);
  Canvas->TextOut(X3-5,Y3-5,M3Set);
  Canvas->TextOut(X4+2*diam,Y4-diam,X4C);
  Canvas->TextOut(X4+2*diam,Y4+2*diam,Y4C);
 } // tekenwerk stop
 
 

 

6 Toekomstperspectieven                                                                     


Besturing

Muis

Toetsenbord

Programmingunit

Afstandsbediening 

Joystick

Camera

 Programmingunit

           

Afstandsbediening

 

 

 

 

Joystick


 

Programmeerunit

Door gebruik te maken van een compatibel keyboard met kleinere afmetingen is het mogelijk het bedieningsgemak te verhogen.

De operator kan zich vrij bewegen met het toetsenbord in de hand voor zover de kabel dit toelaat.

De functietoetsen kunnen gebruikt worden om de basisbewegingen te demonstreren.

Het toetsenbord laat toe een folie te gebruiken met de symbolen op met de basisbewegingen.

   

Afstandsbediening

De 15 kanaal afstandsbediening kan dezelfde vermogentrappen sturen als de didactische robotsturing. De afstandsbediening kan vooral gebruikt worden voor het bewegen van de robot naar zijn initiële stand en voor testdoeleinden.

 

De joystick

Door het binnenhalen van de adressen van schakelaars en potmeters van de joystick moet het mogelijk zijn de robot te sturen als handbediening.

De combinatie van de knoppen kan de verschillende motoren selecteren.

De stand van de potmeters kan de snelheid van die motoren sturen.

De adressen van knoppen en potmeters zijn de vinden in een PC-Hardware boek.

 

De camera

Door de multi-user en multitasking mogelijkheden van W98 moet het mogelijk zijn snapshots van de situatie onder het TCP te nemen en met het gepaste algortime een positionering te voorzien. Hierbij kan gedacht worden aan een CCD camera aangesloten op een video of TV-kaart ofwel een webcam.

WYTIWYG.

 

 

 

7      Robotica

7.1    Besturingstypen

Play-back besturing: bewegingen worden met de hand voorgedaan en opgenomen

Numerieke besturing: de bewegingen worden d.m.v. een programma ingegeven.

 

7.2    Taken van de robotsturing

Beweging

                        Vrije beweging

                        Sensorgestuurde beweging

Synchronisatie van taken

                        Interne taken: synchroon aansturen assen na startsignaal

                        Externe taken:  lassen

                                               sensormetingen

bandsynchronisatie enz

Signaalverwerking

                        Binair signaal:   starten en stoppen

                        Scalair signaal: encoders

positieopnemers

                                                           tachometers

                                                           servo’s van robotassen

                        Vektorieel signaal: meerdimensioneel camerabeeld

                                                           ruimtelijke krachtmeting

                                                           ruimtelijke bewegingsopdracht

                        Interrupt            Sequentieel afvragen

Bewaking    

Bescherming van mens en machine

                                   Noodstop

                                               Run/ standby

                                               Dodemansknop

                                               Robot en periferie

                        Functionele bescherming

                                               Bescherming van het besturingssyssteem

                                               Testen van het programma op programmeerfouten

                                               Baanbewaking

                                               Testen van in en uitgangssignalen

                        Initiele stand

7.3    Bediening:

Besturingskast

                                   Enable servo’s

                                   Run/standby

                                   Load/reset

                                   Start/stop

                                   Noodstop

Handbediening

                                   Programmeren

                                   Dodemansknop

                                   Noodstop

Terminal

                                   Communicatie

                                   Satus van de besturing

                                   Tekstverwerker om programma te schrijven op wijzigen

 

 

 

 

 

7.4    Programmering

                                   NC-programmeertaal

                                   Computertaal met robotcommando’s

                                   Geavanceerde programmeertalen

                                               Uitvoeren van bewegingen

                                               Meten van sensoren

                                               Aansturen van devices

                                   Ingave met editor of functietoetsen

                                               Testen op programmeerfouten

                                               Simuleren

                                               Off-line schrijven en testen

                                               On-line programmering

 

7.5    Informatie-opslag

Harde schijf, floppy , RAM-geheugen

                                   Robotparameters

                                               calibratiewaarden

                                               instellingen voor assenregeling

 

7.6    Externe communicatie

                                               Via externe interface

                                               Down-loaden programma’s

                                               MAP- Manufacturing Automation Protocol

                                               MMS – Manufacturing Message Specification

 

7.7    Vrije beweging

            Strategisch niveau

                        Vertalen robotinstructie naar bewegingscommando’s voor de assen

                        Eindpunt en evt steunpunten opgeven

                        Direct of via teach in methode m.b.v. de robot inleren

                        Opgeven van verplaatsing

                                   Relatief t.o.v. de effector met extra parameters

                                               Lijn, cirkelboog,snelheid,versnelling,voorwaarden

 

7.8    Coördinatensystemen

                        Cartesische coördinaten

                        Robotcoördinaten

                        Point-to-point

 

7.9    Bewegingstypen

Synchroon PTP:

De motoren draaien zodanig dat ze gelijktijdig in het eindpunt aankomen

Asynchroon PTP 

De motoren draaien op maximum snelheid tot ze hun eindpunt bereiken

Contourbeweging

De TCP (ToolCenterPoint) volgt de cartesiaanse coördinaten van beginpunt naar eindpunt

Circulaire beweging

De TCP (ToolCenterPoint) volgt de cartesische koördinaten van beginpunt naar eindpunt via een circulaire beweging.

 

7.10  Puntbeweging

            Interpolatietechnieken

                        Directe functieberekening

                        Digital differential analyser DDA

                        Interpolerende curvemethode (met polynoom)

7.11  Contourbeweging

                        Tweetrapsinterpolatie ( om de 100ms)

 

7.12  Taktisch niveau

Steunpunten (evt playback) als signaal voor de regelaars

                        Regelalgoritmen

                        Terugkoppeling

                        SISO (Single Input Single Output)

                        MIMO (Multiple Inputs Multiple Outputs

                        Feedforward canceling en feedback cancelling

 

7.13  Sensorgestuurde beweging

            Bewaakte beweging

            Flexibele beweging

            Interactie