In diesem Artikel werde ich vorstellen, wie die Python-API von LGSVL, einem automatischen Fahrsimulator, installiert wird, wie ein Beispielprogramm ausgeführt wird und ein einfaches Implementierungsbeispiel. Die Installationsmethode und die grundlegende Verwendung von LGSVL werden in diesem Artikel auf leicht verständliche Weise vorgestellt. Bitte nehmen Sie Bezug darauf. https://qiita.com/zacc/items/13c4e04bc04fb29c9aec
2020/05/21 Ein einfaches Implementierungsbeispiel mit der Python-API wurde hinzugefügt. Die Drossel wird so gesteuert, dass auf die Zielgeschwindigkeit eine proportionale Steuerung folgt.
Offizielle Python-API-Dokumentation: https://www.lgsvlsimulator.com/docs/python-api/ Python-API-Repository: https://github.com/lgsvl/PythonAPI
Klonen und installieren Sie das Python-API-Repository. Die Python-API von LGSVL unterstützt Python 3.5> =.
git clone https://github.com/lgsvl/PythonAPI.git
cd PythonAPI
pip install .
Versuchen Sie, das Beispielprogramm im Python-API-Repository auszuführen. Das Beispielprogramm befindet sich in einem Ordner mit dem Namen "Schnellstart".
Klicken Sie zunächst im LGSVL-Browser auf die Registerkarte "Simulationen" -> "Nur API" -> "Wiedergabetaste".
Dann zeigt der LG SVL Simulator "API ready!" An.
Führen Sie in diesem Status das Beispielprogramm im Python-API-Repository aus.
python ./quickstart/05-ego-drive-in-circle.py
Folgendes wird angezeigt, drücken Sie die Eingabetaste.
Current time = 0
Current frame = 0
Press Enter to start driving
Dann dreht sich das Fahrzeug weiter.
Hier verwenden wir die Proportionalregelung, um das Fahrzeug so zu drosseln, dass es der Zielgeschwindigkeit folgt. Der Code ist unten.
import lgsvl
import os
import numpy as np
def p_control(target_speed, current_speed):
"""
Proportionalsteuerung
:param target_speed:Zielgeschwindigkeit
:param current_speed:Momentane Geschwindigkeit
:return:Drosselklappenwert
"""
k_p = 0.05
error = target_speed - current_speed
throttle = np.clip(error * k_p, 0.0, 1.0)
return throttle
if __name__ == '__main__':
sim = lgsvl.Simulator(os.environ.get("SIMULATOR_HOST", "127.0.0.1"), 8181)
#Karte laden
#Gibt eine Karte ohne Hindernisse an
map_name = "WideFlatMap"
if sim.current_scene == map_name:
sim.reset()
else:
sim.load(map_name)
#Holen Sie sich eine Liste von Transformationen, in denen Sie ein Fahrzeug erzeugen können
spawns = sim.get_spawn()
#Bestimmen Sie den Ausgangszustand des Ego-Autos
state = lgsvl.AgentState()
state.transform = spawns[0]
#Fügen Sie dem Simulator ein Ego-Auto hinzu
ego = sim.add_agent("Lincoln2017MKZ (Apollo 5.0)", lgsvl.AgentType.EGO, state)
#Zielgeschwindigkeit[km/h]
target_speed = 50.0
#Regelkreis[sec]
time_step = 0.05
while True:
#Momentane Geschwindigkeit[km/h]Erhalten
#Ignorieren Sie hier die Geschwindigkeit der y-Achse (senkrecht zum Boden)
state = ego.state
current_speed = np.linalg.norm([state.velocity.x, state.velocity.z]) * 3.6
#Gaswert abrufen
throttle = p_control(target_speed, current_speed)
#Wenden Sie Kontrollwerte auf Ego-Autos an
control = lgsvl.VehicleControl()
control.throttle = throttle
ego.apply_control(control, True)
#Simulator Zeit Zeit_Nur Schritt
sim.run(time_limit=time_step)
#Aktuelle Geschwindigkeit an die Konsole ausgeben
print("Current speed: {:.1f} [km/h]".format(current_speed))
Wenn Sie diesen Code auf die gleiche Weise wie die Ausführungsprozedur des obigen Beispielprogramms ausführen, wird er mit der angegebenen Zielgeschwindigkeit direkt ausgeführt.
Mit der Python-API können Sie das Fahrzeug steuern, Sensorinformationen abrufen und vieles mehr. LGSVL scheint in der Lage zu sein, mit Software für automatisches Fahren wie Autoware zu arbeiten, aber ich denke, es ist möglich, ein originales Fahrzeug für automatisches Fahren mithilfe der Python-API zu erstellen. Ich möchte einen Artikel über die Verwendung der Python-API von LGSVL schreiben. Das war eine kurze Erklärung, aber das war's. Es gibt viele andere Beispielprogramme. Probieren Sie es aus!
Recommended Posts