Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Hindernisvermeidung durch künstliche Intelligenz

Komponenten und Verbrauchsmaterialien

SparkFun Arduino Pro Mini 328 - 5V/16MHz
× 1
Ultraschallsensor - HC-SR04 (Generic)
× 1
SparkFun Dual H-Bridge Motortreiber L298
× 1
DC-Motor (generisch)
60 U/min DC-MOTOREN
× 2
Räder
× 4
Jumper (generisch)
× 1
SparkFun Lötbares Breadboard - Mini
× 1
Akku, Lithium-Ionen
7,2-Volt-Lithium-Ionen-Akku
× 1
9-V-Batterie (generisch)
× 1
9-V-Batterieklemme
× 1
PCBWay Custom PCB
× 1
C&K-Switches Switch der JS-Serie
× 1

Notwendige Werkzeuge und Maschinen

Lötkolben (generisch)
Lötdraht, bleifrei
Lötflussmittel, Löten
Entlötpumpe Deluxe SOLDAPULLT®
Abisolierzange und -schneider, 18-10 AWG / 0,75-4 mm² Kapazität Drähte
Heißklebepistole (generisch)
Klebeband, doppelseitig

Apps und Onlinedienste

Arduino-IDE

Über dieses Projekt

HINDERNISSE VERMEIDUNG DES ROBOTERS MIT KI/VERSTÄRKUNGSLERNEN

Problembeschreibung: Das Hauptziel ist zu lernen, Hindernisse in "N" Episoden zu vermeiden und die optimale Aktion zu lernen. Nehmen wir in diesem Fall an, dass wir unseren Roboter brauchen, um die optimale Aktion als „Rechts“ zu lernen.

Verwendeter Verstärkungsalgorithmus: Q lernen

Wie L298N zwei Gleichstrommotoren antreibt:

So berechnet der HC-SR04-Sensor die Entfernung:

Wichtige Begriffe im Reinforcement Learning:

1. ZUSTAND: Dies ist die Situation, in der sich der Roboter befindet. Hier für einen einfachen Hindernisvermeidungsroboter gibt es insgesamt 2 Zustände … 1. Zustand ist, wenn kein Hindernis in der Nähe ist und 2. Zustand, in dem sich ein Hindernis davor befindet. (Als ich den Code schrieb, nahm ich 10 verschiedene an Zustände können sein, in denen die gleiche Aktion erwartet wird. Der Grund, warum ich dies getan habe, um eine komplexere Umgebung zu veranschaulichen.)

2. AKTION: In einem bestimmten Zustand führt der Roboter eine bestimmte Aktion aus. Es gibt 4 Aktionen, die der Roboter im 2. Zustand ausführen kann:„FORWARD“, „BACKWARD“, „LINKS“, „STOP“. Im ersten Zustand kann der Roboter 4 Aktionen ausführen, aber der Einfachheit halber habe ich angenommen, dass der Roboter nur eine Aktion ausführen kann, die „FORWARD“ ist ( Dies liegt daran, dass es lahm ist, Aktionen wie LINKS . in Betracht zu ziehen oder RÜCKWÄRTS wenn keine Hindernisse in der Nähe sind.

int AKTIONEN =[0,1,2,3]

/* HIER :
0 =VORWÄRTS
1 =RÜCKWÄRTS
2 =STOP
3 =RECHTS*/

3. NÄCHSTER ZUSTAND: Dies ist der Status-Roboter, wenn er eine bestimmte „AKTION“ ausführt in seinem aktuellen "STATE". Bei Hindernissen, die dem Roboterfall ausweichen, wird der NÄCHSTE ZUSTAND kann entweder ein „ABGESCHNITTEN“ . sein Bundesstaat oder ein „ÜBERLEBEN“ Zustand. (Hier ist der SURVIVE-Zustand identisch mit dem Startzustand, in dem sich der Roboter befindet, wenn seine Episode beginnt.)

/*NACH DEM DURCHFÜHREN EINER AKTION DER ROBOTER IN DIESEM HINDERNISFALL IN DEN NÄCHSTEN ZUSTAND GEHT 
ROBOTER VERMEIDEN*/

int NEXT_STATE;
int STATE =0;
NEXT_STATE =STATE+1;

4. Q-TABELLE / Q-MATRIX: Diese Tabelle besteht aus der Anzahl der „STATES“ und der Anzahl der „ACTIONS“. Im Fall des Hindernisvermeidungsroboters wird diese Tabelle gegeben durch:

float Q[N_STATES][NUMBER_OF_ACTIONS] ={{0.0,0.0,0.0,0.0}, 
{0.0,0.0,0.0,0.0},
{0.0,0.0,0.0 ,0.0},
{0.0,0.0,0.0,0.0},
{0.0,0.0,0.0,0.0},
{0.0,0.0,0.0,0.0},
{0.0,0.0,0.0,0.0},
{0.0,0.0,0.0,0.0},
{0.0,0.0,0.0,0.0},
{0.0,0.0,0.0,0.0 }};

Hier N_STATES =10 AND N_ACTIONS =4. Hier bedeutet "0.0", dass jede Aktion von jeder der 4 möglichen Aktionen ausgeführt werden kann. wenn Sie jedoch einen Feinstaub eliminieren möchten Aktion in einem Zustand ersetzen Sie einfach "0.0" durch "-1.0" in der Matrix. "-1.0" gibt an, dass die Aktion in diesem Zustand nicht ausgeführt werden kann. hier wird angenommen, dass wir 10 verschiedene Zustände haben, wobei jeder Zustand die gleiche Aktion erwartet. Wenn Sie möchten, dass Ihr Roboter Aktionen lernt, die in jedem Bundesstaat unterschiedlich sind, ändern Sie die Belohnungen aus der Belohnungsmatrix im Code

5. TERMINALSTATUS: Dies ist der letzte Zustand, in dem sich der Roboter befinden kann. Für den hindernisvermeidenden Roboter existiert dieser Zustand nicht, da wir keinen Endzustand haben und unseren Roboter für immer lernen möchten.

6. BELOHNUNGSMATRIX: Diese Tabelle oder Matrix wird verwendet, um dem Roboter Belohnungen für bestimmte Aktionen zu geben. Die Belohnung ist je nach Qualität der Aktion positiv oder negativ.

int REWARDS[STATES][NUMBER_OF_ACTIONS] ={{-10,-2,-1,10}, 
{-10,-2,-1,10},
{-10,-2,-1,10},
{-10,-2,-1,10},
{-10,-2,-1,10},
{-10,-2,-1,10},
{-10,-2,-1,10},
{-10,-2,-1,10},
{-10,-2,-1,10},
{-10,-2,-1,10}};

7. UMWELT: Dies kann auch als die Welt für den Roboter angenommen oder betrachtet werden. Zum Beispiel leben wir Menschen auf der Erde, also ist die Erde im Grunde unsere Umwelt.

Hyperparameter im Reinforcement Learning:

1. LERNRATE (ALPHA): Die Lernrate oder Schrittweite bestimmt, inwieweit neu erfasste Informationen alte Informationen überschreiben. Ein Faktor von 0 bewirkt, dass der Agent nichts lernt (ausschließliches Ausnutzen von Vorwissen), während ein Faktor von 1 dazu führt, dass der Agent nur die neuesten Informationen berücksichtigt (Vorwissen ignoriert, um Möglichkeiten auszuloten). In vollständig deterministischen Umgebungen ist eine Lernrate von ALPHA =1,0 optimal. Wenn das Problem stochastisch ist, konvergiert der Algorithmus unter bestimmten technischen Bedingungen auf die Lernrate, die eine Abnahme auf Null erfordern. In der Praxis wird oft eine konstante Lernrate verwendet, beispielsweise ALPHA =0,1 für alle Szenarien.

float ALPHA =0,2; 

2. RABATTFAKTOR (GAMMA): Der Diskontfaktor von 0 bestimmt die Bedeutung zukünftiger Belohnungen. Ein Faktor von 0 macht den Agenten "kurzsichtig" (oder kurzsichtig), indem er nur die aktuellen Belohnungen berücksichtigt, während ein Faktor nahe 1 ihn dazu bringt, eine langfristig hohe Belohnung anzustreben. Wenn der Rabattfaktor 1 erreicht oder überschreitet, können die Aktionswerte abweichen. Für GAMMA =1.0, ohne einen Endzustand oder wenn der Agent nie einen erreicht, werden alle Umgebungshistorien unendlich lang, und Dienstprogramme mit additiven, undiskontierten Belohnungen werden im Allgemeinen unendlich. Selbst mit einem Rabattfaktor von nur etwas weniger als 1, Q Funktionslernen führt zur Ausbreitung von Fehlern und Instabilitäten, wenn die Wertfunktion mit einem künstlichen neuronalen Netz approximiert wird. In diesem Fall wird das Lernen beschleunigt, wenn man mit einem niedrigeren Diskontfaktor beginnt und diesen bis zum Endwert erhöht.

Float-GAMMA =0,9; 

3. EXPLORATIONSRATE (EPSILON): Dieser Parameter entscheidet, inwieweit der Roboter die Umgebung erkunden soll. Das Erkunden der Umgebung bedeutet, zufällige Aktionen durchzuführen und die Ergebnisse durch Q-Werte zu analysieren. Normalerweise werden wir bei Q Learning (im Gegensatz zu SARSA) diesen Parameter irgendwann los, da der Roboter immer mehr lernt. Aber in diesem Projekt werden wir Epsilon nicht los, da wir keinen Endzustand haben. Epsilon reduziert sich in diesem Fall bis zu einem gewissen Grad und wird dann wieder zurückgesetzt, wenn es unter einen Schwellenwert fällt. Dadurch wird sichergestellt, dass der Roboter bis zu seinem Leben auf Erkundungstour geht, genau wie wir Menschen es tun.

Float EPSILON =0,75; 

Q-LEARNING-ALGORITHMUS:

  • Initialisieren Sie die Q-Werte-Tabelle, Q(s, a) . Ich habe diese Werte auf 0.0 initialisiert.
  • Beobachte den aktuellen Stand, s .
  • Wählen Sie eine Aktion, eine , für diesen Zustand basierend auf einer der hier auf der vorherigen Seite erläuterten Aktionsauswahlrichtlinien (📷-soft, 📷-greedy oder softmax).
//////////////////////////Epsilon Greedy Policy/////////////// ///////////////

PROB =RANDOM(EPSILON);
if (PROB<=EPSILON) //ENTDECKEN SIE DIE AKTIONEN
{
ACTION =random(0,4);
FLAG =2;
}
else //EXPLOIT THE ACTIONS OF THE Q TABLE
{
ACTION =ARGMAX(Q,STATE);
FLAG =2;
}
  • Ergreifen Sie die Aktion und beobachten Sie die Belohnung, r , sowie der neue Bundesstaat s' .
  • Aktualisieren Sie den Q-Wert für den Staat mit der beobachteten Belohnung und der maximal möglichen Belohnung für den nächsten Staat. Die Aktualisierung erfolgt gemäß der oben beschriebenen Formel und Parameter.
  • Setzen Sie den Status auf den neuen Status und wiederholen Sie den Vorgang, bis ein Endstatus erreicht ist.
  • Um das Q-Lernen zu verstehen Besuchen Sie besser diesen Link:https://towardsdatascience.com/a-beginners-guide-to-q-learning-c3e2a30a653c
///////////////////Implementierung der Q_Learning-Formel///////////////////// ////

Q_OLD =Q_TABLE[S][A];
Q_MAX =MAX(Q_TABLE, NEXT_S);
Q_NEW =(1-LEARNING_RATE)*Q_OLD + LEARNING_RATE*(R + DISCOUNT_FACTOR*Q_MAX);
Serial.print("Q VALUE:");
Serial.println(Q_NEW);
Q_TABLE[S][A] =Q_NEW;

Arbeitsvideo:Vergessen Sie nicht, sich das Arbeitsvideo von AI Robot anzusehen :)


Code

  • Hindernisvermeidungsroboter mit Q-LEARNING
Hindernisvermeidungsroboter mit Q-LEARNINGC/C++
HAUPTCODE DES ROBOTERS FÜR KÜNSTLICHE INTELLIGENZ BASIEREND Der Sensor wird verwendet, um den Abstand zum Hindernis mit seinen Echo- und Trig-Pins zu messen.2.Wenn der Abstand gemessen wird und wenn er weniger als 20cm beträgt, befindet sich ein Hindernis in der Nähe links oder rechts abbiegen, je nach Situation. Wie funktioniert die KI-basierte Hindernisvermeidung? (Q-Lernen) 1. Hier bleibt der 1. Schritt aus dem oberen Artikel gleich. Der 2. Schritt ist jedoch anders. 2. Eine Liste der Aktionen des Roboters sind zuerst initialisiert. Zum Beispiel sind in diesem Fall Aktionen des Roboters:Links, Vorwärts, Rückwärts, Stopp.3.Wenn der Roboter in die Nähe eines Hindernisses kommt, muss er eine Aktion ausführen. Beachten Sie jedoch, dass der Roboter in diesem Fall nicht weiß, welche Aktion er ausführen soll, da er nicht vorprogrammiert ist und selbstständig lernen wird, Hindernisse zu vermeiden. 4. Wenn der Roboter stoppt, wenn sich ein Hindernis vor ihm befindet, erhält er eine Belohnung als 0 Wenn der Roboter stoppt und rückwärts fährt, erhält er eine Belohnung von -5 Wenn der Roboter sich weiter vorwärts bewegt und die Hindernisse ignoriert, erhält er eine Belohnung von -10 Wenn der Roboter sich nur nach links bewegt, sobald ein Hindernis erkannt wird, erhält er eine Belohnung von +105. Auf diese Weise Roboter lernt selbstständig, Hindernissen durch Belohnungsmechanismus auszuweichen.*///////////HARDWAREPARAMETER DES ROBOTERS////////////////////int TRIG_PIN =7;int ECHO_PIN =8;int Dauer;Schwimmstrecke;int M1 =13;int M2 =12;int M3 =11;int M4 =10;bool Hindernis =false;int FLAG;////////// ///////////////ENDE////////////////////////////////// ////////////////////////////////Q LERNPARAMETER/////////////// ////////////////////////////float ALPHA =0,1; // LERNRATEFloat GAMMA =0,5; // RABATTFAKTORfloat EPSILON =0,90; //EXPLORATION PARAMETERint BELOHNUNG; //BELOHNUNG FÜR DAS AUSFÜHREN EINER AKTIONint EPISODES =100;int STATE; // AKTUELLER ZUSTAND DER ROBOTint-AKTION =0; //VOM ROBOTER AUSGEFÜHRTE AKTION(0:FORWARD,1:BACKWARD ,2;STOP,3:LEFT)float PROB; //VERWENDET FÜR EPSILON DECAY bool ACTION_TAKEN =false; //DIESE VARIABLEN ZEIGEN UNS, OB EINE AKTION ERFOLGT ODER NICHTint NEXT_STATE; // NÄCHSTER ZUSTAND DES ROBOTconst int STATES =10; //ANZAHL DER STAATEN IN DER UMGEBUNG int ACTIONS[4] ={1,2,3,4};const int NUMBER_OF_ACTIONS =4; // INSGESAMT HABEN WIR 4 AKTIONEN VORWÄRTS, RÜCKWÄRTS, LINKS UND STOP/* DIES IST DIE Q-MATRIX ODER DIE Q-TABELLE. DIES IST IM GRUNDSÄTZLICH DAS TAGEBUCH, DAS DER ROBOTER BETRACHTET, BEVOR EINE AKTION AUSGEFÜHRT WIRD. AUFGRUND DER AKTION ERHÄLT DER ROBOTER BELOHNUNGEN UND DER Q-WERT WIRD IN DIESER Q-TABELLE AKTUALISIERT. HIER HABE ICH 10 STAATEN BETRACHTET. ICH HABE ANGENOMMEN, ALLE STAATEN SIND UNTERSCHIEDLICH, AUCH WENN SIE GLEICH SIND. IM GRUNDSÄTZLICHEN HINDERNISSE VERMEIDEN ROBOTER ENTHÄLT NUR ZWEI STATESSi.e:1:WENN ES ENTFERNT VON HINDERNISSEN 2:WENN ES IN DER NÄHE DES HINDERNISSES SIND HIER ERHALTEN SIE MEHR 10 VERSCHIEDENE STAATEN HIER ERWARTEN GLEICHE/UNTERSCHIEDLICHE AKTION.*/float Q[STATES][NUMBER_OF_ACTIONS] ={{0.0,0.0,0.0,0.0}, // AM WICHTIGSTEN VON ALLEN IST DIE Q-TABELLE. {0.0,0.0,0.0,0.0}, //ER WIRD VON STAATEN ALS SEINE ZEILEN {0.0,0.0,0.0,0.0}, //UND SPALTEN ALS SEINE ANZAHL DER AKTIONEN GEBILDET {0.0,0.0,0.0,0.0}, / /INITIALISED TO NULL AM START {0.0,0.0,0.0,0.0}, // DIES WIRD IN ZUKUNFT AKTUALISIERT. {0.0,0.0,0.0,0.0}, {0.0,0.0,0.0,0.0}, {0.0,0.0,0.0,0.0}, {0.0,0.0,0.0,0.0}, {0.0,0.0,0.0,0.0}};/*DAS IST EINE BELOHNUNGSMATRIX ODER BELOHNUNGSTABELLE. DIES IST VERANTWORTLICH, DASS DEM ROBOTER FÜR DIE AUSFÜHRUNG BESTIMMTER AKTIONEN BELOHNUNGEN GEGEBEN WERDEN. ES SPEICHERT DIE BELOHNUNG FÜR JEDE MASSNAHME, DIE IM STAAT GETROFFEN WURDE. DIE BELOHNUNG WIRD POSITIV, WENN DIE DURCHGEFÜHRTE AKTION GUT IST UND NEGATIV, WENN DIE AKTION SCHLECHT ERGEBNISSE ERZIELT.*/int REWARDS[STATES][NUMBER_OF_ACTIONS] ={{-10,-2,-1,10}, {-10,-2 ,-1,10}, {-10,-2,-1,10}, {-10,-2,-1,10}, {-10,-2,-1,10}, {-10, -2,-1,10}, {-10,-2,-1,10}, {-10,-2,-1,10}, {-10,-2,-1,10}, {- 10,-2,-1,10}}; ////////////////////////////////////////////ENDE///// //////////////////////////////////////////////// ////////////Q LERNEN UPDATE PARAMETER ////////////float Q_OLD;float Q_NEW;float Q_MAX;///////////// /////////////END/////////////////////////void setup () { Serial.begin (9600 .) ); pinMode (TRIG_PIN, OUTPUT); pinMode(ECHO_PIN,EINGANG); PinMode (M1, AUSGANG); PinMode (M2, AUSGANG); PinMode (M3, AUSGANG); PinMode (M4, AUSGANG); randomSeed (analogRead (A0)); ZUSTAND =0; Serial.println("TRAINING BEGINNT IN 5 SEKUNDEN:"); delay(5000);} ////////////////////////////ROBOTERFUNKTIONEN ////////////// ///////////////////void Forward () { DigitalWrite (M1, LOW); digitalWrite (M2, HOCH); digitalWrite (M3, LOW); digitalWrite (M4, HOCH); }Rückwärts () { DigitalWrite (M1, HOCH); digitalWrite (M2, LOW); digitalWrite (M3, HOCH); digitalWrite(M4,LOW);}void Left(){ digitalWrite(M1,HIGH); digitalWrite (M2, LOW); digitalWrite (M3, LOW); digitalWrite(M4,HIGH);}void Right(){ digitalWrite(M1,LOW); digitalWrite (M2, HOCH); digitalWrite (M3, HOCH); digitalWrite(M4,LOW);}void Stop(){ digitalWrite(M1,LOW); digitalWrite (M2, LOW); digitalWrite (M3, LOW); digitalWrite (M4, LOW);} bool Obstacle_Avoider () { digitalWrite (TRIG_PIN, HIGH); VerzögerungMikrosekunden(10); digitalWrite (TRIG_PIN, LOW); Dauer =pulseIn(ECHO_PIN ,HIGH); Distanz =(Dauer/2)/29,1; if(distanz<15) { Hindernis =wahr; aufrechtzuerhalten. Wenn (Abstand>15) { Hindernis =falsch; } Verzögerung(10); Hindernis zurück;}//////////////////////////////////////////END/ //////////////////////////////////////////////// ////////////////////////////ROBOTER Q-LERNFUNKTIONEN ////////////////// //////////////////float RANDOM(float EXPLORATION_PARAMETER){ /*DIESE FUNKTION FINDET ZUFÄLLIGE NUMMER, DIE ENTSCHEIDET, OB EINE AKTION ZUFÄLLIG ODER AUS Q_TABLE*/ float RANDOM_VARIABLE IST; schweben WAHRSCHEINLICHKEIT; RANDOM_VARIABLE =zufällig (0,100); WAHRSCHEINLICHKEIT =RANDOM_VARIABLE/100; return PROBABILITY;}float DECAY(float PARAMETER){ /*DIESE FUNKTION WIRD VERWENDET, UM EPSILON(EXPLORATION PARAMETER) MIT TIME ZU REDUZIEREN.ENDLICH AM ENDE ERHALTEN SIE RID EPSILON UND DER ROBOTER LERNT HINDERNISSE AUF SEINEM EIGENEN PARAMETER ZU VERMEIDEN =*/ PARAMETER *0,98; //PARAMETER HIER IST DER EPSILON-Rückgabe-PARAMETER;}int GET_STATE(){ int STATE_NUMBER; STATE_NUMBER =zufällig (0,10); return STATE_NUMBER;}float MAX(float Q_Table[][4],int NEXT_S){ /*DIESE FUNKTION FINDET DIE GRÖSSTE ZAHL IN Q_TABLE[NEXT_STATE]. DIE HAUPTROLLE DIESER FUNKTION IST, Q_MAX PARAMETER*/ float LIST[4] zu FINDEN; Schwimmer N1; Schwimmer N2; Float MAX_VALUE=0.0; Float DIFF; for(int b =0; b<=3; b++) {LIST[b] =Q[NEXT_S][b]; } for(int j =0; j<=2; j++) { if(MAX_VALUE>LIST[j]) { N1 =MAX_VALUE; aufrechtzuerhalten. Sonst { N1 =LIST[j]; } N2 =LISTE[j+1]; DIFF =N1-N2; if(DIFF> 0) { MAX_VALUE =N1; } sonst { MAX_VALUE =N2; } } return MAX_VALUE;}int ARGMAX(float Q_Table[][4],int S){ /*DIESE FUNKTION FINDET DEN INDEX DES GRÖSSTEN Q-WERTS IN Q TABLE[STATE]*/ float ARRAY[4]; Schwimmer N1; Schwimmer N2; Float MAX_VALUE =0.0; Float DIFF; Float NUMMER; int MAX_INDEX; for(int u=0; u<=3; u++) { ARRAY[u] =Q_Table[S][u]; } for(int p =0; p<=2; p++) { if(MAX_VALUE>ARRAY[p]) { N1 =MAX_VALUE; aufrechtzuerhalten. Sonst { N1 =ARRAY[p]; } N2 =ARRAY[p+1]; DIFF =N1-N2; if(DIFF> 0) { MAX_VALUE =N1; } sonst { MAX_VALUE =N2; } } for(int r =0; r<=3;r++) { ZAHL =ARRAY[r]; if(ZAHL ==MAX_VALUE) { MAX_INDEX =r; brechen; } } return MAX_INDEX;}void Update(float Q_TABLE[][4] , int S, int NEXT_S, int A, int ACTIONS[], int R, float LEARNING_RATE, float DISCOUNT_FACTOR){ /*DIESE FUNKTION AKTUALISIERT DIE Q-TABELLE UND Q-WERTE. DIESES UPDATE BLEIBT WEITER, BIS DIE HAUPTSCHLEIFE ENDET. AM ENDE DER EPISODEN WIRD DIE Q-TABELLE MIT VERSCHIEDENEN WERTEN GEFÜLLT. JE GRÖSSER DIE WERTE, DASS DIE MASSNAHME IN DIESEM BESTIMMTEN ZUSTAND IST. "Q_OLD" IST EIN ALTER WERT, DASS DIE Q-MATRIX HAT. DIES IST DER WERT, DER JEDERZEIT AKTUALISIERT WIRD. Q_NEW IST DER NEUE Q_WERT, DER DURCH DIE Q-LERNENFORMEL BERECHNET WIRD. DIE HIER VERWENDETE Q-LERNFORMEL BASIERT AUF DER BELLMAN-GLEICHUNG, DIE ZEITLICHE DIFFERENZ-LERNANSATZ VERWENDET. (Der MONTE-CARLO-ANSATZ FUNKTIONIERT IN DIESEM FALL VON HINDERNISSEN, DIE ROBOTER VERMEIDEN, NICHT.*/ Q_OLD =Q_TABLE[S][A](Q_MAX =Q_TABLE[S][A](Q_MAX =NEXT_S); Q_NEW =(1-LEARNING_RATE)*Q_OLD + LEARNING_RATE*(R + DISCOUNT_FACTOR*Q_MAX); Serial.print("Q VALUE:"); Serial.println(Q_NEW); Q_TABLE[S][A] =Q_NEW;}////////////////////////////////////////////// ///////////ENDE////////////////////////////////////// //////////////////////////////////////////////// ////////////////START OF MAIN LOOP ////////////////////////////// ///////////////////void loop() { ////////////////////////// ///////////////AUSBILDUNG////////////////////////////////// ////////// for(int I =0; I

Schaltpläne

hindernis_avoiding_robot_using_ai_DcoMCWIOFm.fzz

Herstellungsprozess

  1. Arrow Electronics kündigt Erlebnistour zu künstlicher Intelligenz an
  2. Ein mobiler Roboter mit visueller Hindernisvermeidung
  3. Bosch fügt Industrie 4.0 künstliche Intelligenz hinzu
  4. Ist künstliche Intelligenz Fiktion oder Modeerscheinung?
  5. Künstliche Intelligenz erhält enormen Kubernetes-Boost
  6. Künstliche Intelligenz spielt eine wichtige Rolle im IoT
  7. Künstliche Intelligenz in der ICS-Cybersicherheit ist noch früh
  8. Künstliche Intelligenz sagt das Verhalten von Quantensystemen voraus
  9. Mit künstlicher Intelligenz die Entwaldung verfolgen
  10. Roboter mit künstlicher Intelligenz