Installez l'API Python du simulateur de conduite automatique LGSVL et exécutez un exemple de programme

introduction

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.

environnement

Installation de l'API Python

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 .

Exécuter un exemple de programme

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". python_api_1.png

Ensuite, le simulateur LG SVL affichera "API prêt!". image.png

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. out.gif

Exemple d'implémentation

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.

en conclusion

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

Installez l'API Python du simulateur de conduite automatique LGSVL et exécutez un exemple de programme
[AWS] Installez node.js sur l'instance EC2 et exécutez l'exemple de programme
L'histoire de Python et l'histoire de NaN
Installez rapidement OpenCV2.4 (+ python) sur OS X et essayez l'exemple
Exemple de code pour obtenir oauth_token et oauth_token_secret de l'API Twitter en Python 2.7
Obtenez des visites d'articles et des likes avec l'API Qiita + Python
Définissez le nom du processus du programme Python
[Python] Un programme qui calcule le nombre de mises à jour des enregistrements les plus élevés et les plus faibles
Appuyez sur les exemples v20-python-samples de la bibliothèque d'encapsuleurs d'API REST OANDA v20 pour Python
Jusqu'à ce que vous installiez Caffe et exécutiez l'exemple
Résumé des différences entre PHP et Python
La réponse de "1/2" est différente entre python2 et 3
Spécification de la plage des tableaux ruby et python
Comparez la vitesse d'ajout et de carte Python
Prise en compte des forces et faiblesses de Python
Construisez un serveur API pour vérifier le fonctionnement de l'implémentation frontale avec python3 et Flask
[Python] Un programme qui compte le nombre de vallées
[Python] Récupérez le texte de la loi à partir de l'API e-GOV law
Le processus d'installation d'Atom et de l'exécution de Python
Liste d'exemples de sites de distribution de programmes pour les livres Python
Python - Explication et résumé de l'utilisation des 24 meilleurs packages
Visualisez la gamme d'insertions internes et externes avec python
Référence et modification de la limite supérieure récursive Python
Jusqu'à ce que vous installiez Gauge et exécutiez l'exemple officiel
J'ai vérifié les versions de Blender et Python
Envoyez et recevez Gmail via l'API Gmail en utilisant Python
Utilisons la version Python du module API Confluence.
Exemples PHP et Python qui ont atteint l'API ChatWork
Installez la dernière version stable de Python avec pyenv (à la fois 2 et 3)
python Spécifie la fonction à exécuter lorsque le programme se termine
[Python] Utilisez l'API Face de Microsoft Cognitive Services
Installez django sur python + anaconda et démarrez le serveur
Exemple d'obtention du nom du module et du nom de la classe en Python
[Python] Un programme qui compare les positions des kangourous.
Appelez l'API Hatena Blog depuis Python et enregistrez vos articles de blog individuellement sur votre PC
Comment démarrer le PC à une heure fixe chaque matin et exécuter le programme python
[Python] Un programme pour trouver le nombre de pommes et d'oranges qui peuvent être récoltées
le zen de Python
Essayez d'utiliser l'API Twitter rapidement et facilement avec Python
Exemple de programme et exemple d'exécution de la généralisation empilée
[Python] Fonctionnalisation de la formule de Heron et calcul de la surface maximale
Mesurons le résultat de l'exécution du programme avec C ++, Java, Python.
Exemple d'image du serveur d'API Python pour EC2 (AMI publique)
[Python] Chapitre 01-03 À propos de Python (Ecrire et exécuter un programme à l'aide de PyCharm)
Impressions d'avoir terminé le semestre 1 du cours d'ingénieur en conduite automatique Udacity
Le processus de création et d'amélioration du code Python orienté objet
Le websocket de toio (nodejs) et python / websocket ne se connecte pas.
Je veux connaître la nature de Python et pip
[Python] J'ai essayé de collecter des données en utilisant l'API de wikipedia
[Astuces] Problèmes et solutions dans le développement de python + kivy
Exemple d'analyse HTTP GET et JSON avec Pepper Python
Jouez avec le mécanisme de mot de passe de GitHub Webhook et Python
(Une des solutions) lorsque l'installation de pyenv sur macOS provoque BUILD FAILED et l'installation de Python échoue.