Ich denke darüber nach, einen Roboter mit Linienverfolgung unter Verwendung von Algorithmen zum Lernen der Verstärkung zu programmieren. Die Frage, über die ich nachdenke, ist, wie ich den Algorithmus dazu bringen kann, das Navigieren durch einen beliebigen Pfad zu lernen.
Nachdem ich das Sutton & Barto-Buch zum Erlernen von Übungen befolgt hatte, löste ich ein Übungsproblem, das eine Rennstrecke betraf, auf der der Agent lernte, nicht von der Strecke abzukommen und die Geschwindigkeit zu regulieren. Dieses Übungsproblem brachte den Agenten jedoch dazu, zu lernen, wie man auf der Strecke navigiert, auf der er trainiert hat.
Liegt es im Bereich des Bestärkungslernens, einen Roboter zum Navigieren auf beliebigen Pfaden zu bewegen? Muss der Agent unbedingt eine Karte der Rennstrecke oder des Rennwegs haben? Welche Parameter könnte ich möglicherweise für meinen Zustandsraum verwenden?
Antworten:
Eine der wichtigsten Maßnahmen bei jedem Algorithmus für maschinelles Lernen ist die Fähigkeit zur Verallgemeinerung (dh die Anwendung des Erlernten auf zuvor unsichtbare Szenarien). Reinforcement Learners (RL) können gut verallgemeinern, aber diese Fähigkeit ist nach meiner Erfahrung teilweise eine Funktion der State-Space-Formulierung. Dies bedeutet, dass der RL-Lerner keine Karte der Rennstrecke benötigt, wenn Sie das richtige Setup finden.
Es bleibt die Frage, welche Parameter verwendet werden sollen. Ohne mehr über die an Ihrem Roboter verfügbaren Sensoren zu wissen, kann ich nur spekulieren. Meine erste Neigung ist, zu versuchen, die relative Ausrichtung der Linie und des Roboters zu codieren (dh neigt der Roboter nach rechts, links oder bewegt sich einfach parallel zur Linie). Dies würde zu einem schönen kleinen Zustandsraum führen. Dies ist zwar nicht unbedingt erforderlich, würde jedoch eine schnelle und einfache Implementierung ermöglichen. Wenn sich der Roboter nicht mit einer konstanten Geschwindigkeit bewegt, kann es außerdem hilfreich sein, die Geschwindigkeit des Roboters zu codieren, da der Roboter schneller reagieren muss, wenn er sich mit höheren Geschwindigkeiten bewegt.
quelle
Ich bin mir nicht sicher, welchen Robotertyp du hast, aber ich mache jetzt seit ein paar Jahren Robocup-Rettungsleinen. Mir ist klar geworden, dass die Verwendung von PID eine gute Option ist, wenn Sie einer Linie gut folgen möchten. Lassen Sie mich darauf näher eingehen. Wenn Sie sich zwei Lichtsensoren auf beiden Seiten der Linie vorstellen, möchten Sie, dass sie den gleichen Wert haben, sodass sich die Linie in der Mitte befindet. Sie können dann die Differenz zwischen den Werten der beiden Sensoren verwenden, um den Drehungsprozentsatz des Roboters zu ändern. Mit dieser Technik ist es möglich, einen Roboter dazu zu bringen, einer Linie mit außergewöhnlichen Geschwindigkeiten zu folgen. Ich mag, dass Sie darüber nachgedacht haben, den Roboter dazu zu bringen, seine Fähigkeiten zur Linienverfolgung zu verbessern. Was ich mir ausgedacht habe, ist, mit Ihren anfänglichen PID-Werten zu beginnen, die höher sind, als Sie möchten, und einen Kreiselsensor zu verwenden, um die Schwingungsfrequenz des Roboters zu messen, wenn dieser die Linie verfolgt. Sie können von dort aus Ihre eigene Funktion erstellen, um zu bestimmen, um wie viel Ihre Werte gesenkt werden müssen, um ein stabiles System zu erhalten. Dies ist keine künstliche Intelligenz, sondern ein automatisierter Optimierungsalgorithmus Internet. Ich hoffe das hilft. Wenn Sie Fragen haben, senden Sie mir eine E-Mail, dies ist nicht meine Haupt-E-Mail-Adresse, daher überprüfe ich sie nicht regelmäßig. [email protected]
quelle