Dans cet article, je vais vous présenter comment installer l'API Python de LGSVL, qui est un simulateur de conduite automatique, comment exécuter un exemple de programme et un exemple d'implémentation simple. La méthode d'installation et l'utilisation de base de LGSVL sont présentées dans cet article d'une manière facile à comprendre. Veuillez vous y référer. https://qiita.com/zacc/items/13c4e04bc04fb29c9aec
2020/05/21 Ajout d'un exemple d'implémentation simple à l'aide de l'API Python. La manette des gaz est contrôlée de sorte que la vitesse cible soit suivie d'une commande proportionnelle.
Documentation officielle de l'API Python: https://www.lgsvlsimulator.com/docs/python-api/ Référentiel d'API Python: https://github.com/lgsvl/PythonAPI
Clonez et installez le référentiel d'API Python. L'API Python de LGSVL prend en charge Python 3.5> =.
git clone https://github.com/lgsvl/PythonAPI.git
cd PythonAPI
pip install .
Essayez d'exécuter l'exemple de programme dans le référentiel d'API Python. L'exemple de programme se trouve dans un dossier nommé «quickstart».
Tout d'abord, depuis le navigateur LGSVL, cliquez sur l'onglet "Simulations" -> "API uniquement" -> "Bouton de lecture".
Ensuite, le simulateur LG SVL affichera "API prêt!".
Dans cet état, exécutez l'exemple de programme dans le référentiel d'API Python.
python ./quickstart/05-ego-drive-in-circle.py
Les éléments suivants seront affichés, appuyez donc sur Entrée.
Current time = 0
Current frame = 0
Press Enter to start driving
Ensuite, le véhicule continue de tourner.
Ici, nous utiliserons le contrôle proportionnel pour contrôler l'accélérateur du véhicule afin qu'il suive la vitesse cible. Le code est ci-dessous.
import lgsvl
import os
import numpy as np
def p_control(target_speed, current_speed):
"""
Contrôle proportionnel
:param target_speed:Vitesse cible
:param current_speed:Vitesse actuelle
:return:Valeur de papillon
"""
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)
#Charger la carte
#Spécifie une carte sans obstacles
map_name = "WideFlatMap"
if sim.current_scene == map_name:
sim.reset()
else:
sim.load(map_name)
#Obtenez une liste de transformations où vous pouvez engendrer un véhicule
spawns = sim.get_spawn()
#Déterminer l'état initial de la voiture ego
state = lgsvl.AgentState()
state.transform = spawns[0]
#Ajouter une voiture ego au simulateur
ego = sim.add_agent("Lincoln2017MKZ (Apollo 5.0)", lgsvl.AgentType.EGO, state)
#Vitesse cible[km/h]
target_speed = 50.0
#Cycle de contrôle[sec]
time_step = 0.05
while True:
#Vitesse actuelle[km/h]Avoir
#Ignorez ici la vitesse de l'axe y (vertical par rapport au sol)
state = ego.state
current_speed = np.linalg.norm([state.velocity.x, state.velocity.z]) * 3.6
#Obtenez la valeur de l'accélérateur
throttle = p_control(target_speed, current_speed)
#Appliquer des valeurs de contrôle aux voitures ego
control = lgsvl.VehicleControl()
control.throttle = throttle
ego.apply_control(control, True)
#Temps du simulateur_Étape seulement
sim.run(time_limit=time_step)
#Vitesse du courant de sortie vers la console
print("Current speed: {:.1f} [km/h]".format(current_speed))
Si vous exécutez ce code de la même manière que la procédure d'exécution de l'exemple de programme ci-dessus, il ira directement à la vitesse cible spécifiée.
Vous pouvez utiliser l'API Python pour contrôler le véhicule, obtenir des informations sur les capteurs et bien plus encore. LGSVL semble pouvoir fonctionner avec un logiciel de conduite automatique tel qu'Autoware, mais je pense qu'il est possible de créer un véhicule de conduite automatique original en utilisant l'API Python. J'aimerais écrire un article sur l'utilisation de l'API Python de LGSVL à partir de maintenant. C'était une brève explication, mais c'est tout. Il existe de nombreux autres exemples de programmes, alors essayez-le!
Recommended Posts