Débogage conjoint d'Autoware.universe et Carla (version binaire)


Cet article présente le processus de débogage conjoint de la version binaire d'Autoware.universe et de Carla. Autoware.universe est une plateforme logicielle de conduite autonome open source, et Carla est un outil open source de simulation de conduite autonome. La combinaison des deux permet de tester et de vérifier la fonctionnalité et les performances d'Autoware.universe dans un environnement de simulation, offrant ainsi un soutien solide au développement et aux tests de systèmes de conduite autonome. L'installation d'Autoware.universe fait référence à un autre de mes articles : Ubuntu20.04 installe Autoware.universe et le débogage conjoint avec Awsim

1. L'utilisation de Carla

1.1 Installation du binaire Carla

Adresse github du package binaire : https://github.com/carla-simulator/carla/releases , téléchargez le premier package compressé .tar.gz :
insérer la description de l'image ici
après décompression, il peut être exécuté directement, et l'interface serveur suivante apparaîtra :

tar -zxvf CARLA_0.9.13.tar.gz
cd CARLA_0.9.13
./CarlaUE4.sh

insérer la description de l'image ici
Accédez à /home/autoware/CARLA_0.9.13/PythonAPI/examples pour exécuter l'API :

python manual_control.py

La conduite de simulation Carla peut être démarrée, l'interface est la suivante :
insérer la description de l'image ici
Options de ligne de commande : Certaines options de configuration sont disponibles lors du démarrage de Carla, et elles peuvent être utilisées comme suit :

./CarlaUE4.sh -quality-level=Low

Au démarrage de CARLA, certaines options de configuration sont disponibles :

  • carla-rpc-port=N : écoutez les connexions client sur le port N. Par défaut, le port Streaming est défini sur N+1 ;
  • carla-streaming-port=N: Spécifie le port utilisé pour le flux de données du capteur. Utilisez 0 pour obtenir un port aléatoire inutilisé. Le deuxième port sera automatiquement réglé sur N+1 ;
  • quality-level={Low,Epic}: modifier le niveau de qualité graphique ;
  • -carla-server: Laissez Carla fonctionner en tant que service ;
  • -benchmark -fps=15: Le moteur tourne pas à pas avec un temps fixe de 1/15 seconde ;

1.2 Utilisation de l'API Carla

Voici plusieurs API couramment utilisées, ouvrez d’abord Carla :./CarlaUE4.sh

1.2.1 Augmenter le flux de piétons et le flux de véhicules

Exécutez le fichier generate_traffic.py sous le chemin CARLA_0.9.13/PythonAPI/examples :

python generate_traffic.py -w 10 -n 10

insérer la description de l'image ici
On peut voir qu'il y a de nombreux véhicules en mouvement et piétons dans les rues du serveur Carla. Les paramètres suivants -n 10 -w 10 représentent respectivement le nombre de véhicules et de piétons. Il existe de nombreux autres paramètres dans ce script :

  • --host#adresse IP du serveur hôte
  • -p --port#port
  • -n --number-of-vehicles# nombre de véhicules
  • -w --number-of-walkers# nombre de piétons
  • --safe#éviter les collisions
  • --filterv# filtre de véhicule
  • --filterw# filtre piéton
  • --generationv#Restriction de l'apparition de certains véhicules
  • --generationw#Empêcher certains piétons de se reproduire

1.2.3 Modifier l'heure du serveur, la lumière et la météo

Exécutez le fichier Dynamic_weather.py sous le chemin CARLA_0.9.13/PythonAPI/examples

python dynamic_weather.py -s 5

Le paramètre -s 5 signifie accélérer le changement météo de 5 fois. Ce script modifie les paramètres météo dans le serveur en fonction du temps de simulation carla.WeatherParameters, et ajuste automatiquement l'éclairage et la météo du système dans un certain ordre. Les conditions d'éclairage comprennent : l'altitude et l'angle du soleil ; les conditions météorologiques incluent : les nuages, la pluie, les flaques d'eau, le vent, le brouillard, l'humidité.
insérer la description de l'image ici
Pour plus de paramètres météorologiques, veuillez vous référer à carla.WeatherParameters dans /pythonAPI/python_api.md.

1.2.3 Contrôler manuellement le véhicule

Exécutez le fichier manual_control.py sous le chemin CARLA_0.9.13/PythonAPI/examples :

python manual_control.py

insérer la description de l'image ici

Le bouton B du clavier peut basculer entre le contrôle automatique et le contrôle manuel. Le manuel d'utilisation de pygame est le suivant :

bouton Fonction Remarque
W poursuivre La touche ↑ peut aussi avancer
S frein ↓ la clé peut également freiner
ANNONCE A tourner à gauche D tourner à droite ← Vous pouvez également tourner à gauche, → Vous pouvez également tourner à droite
Q marche arrière Q+W peut inverser
Espace frein à main -
P. Activer/désactiver le mode pilote automatique -
M Automatique/manuel -
,et . Équipement plus et moins , rétrograder. passer à la vitesse supérieure
CTRL + W Appuyez sur CTRL + W pour avancer à vitesse constante La voiture continuera à rouler à une vitesse de 60 km/h
L lumières de contrôle Activer les phares antibrouillard, les feux de croisement, etc.
MAJ + L activer les feux de route -
Z/X clignotant Z tourne à gauche, X tourne à droite
je lumières intérieures -
LANGUETTE changer de perspective -
N Basculer entre différents types de caméra et lidar Chaque fois que le capteur est enfoncé
[1-9] Commutation séquentielle pour basculer entre différents types de caméras et lidars Appuyez sur la touche numérique pour passer directement au capteur correspondant
g Activer/désactiver le radar mmWave -
C changer la météo L'ordre de commutation Shift+C est opposé à C
Retour arrière Changer de modèle -
V Sélectionner une couche de carte Shift+V, l'ordre de commutation est opposé à V
B Charger la couche de carte actuelle Maj+B Décharger la couche de carte actuelle
Ô ouvrir/fermer toutes les portes -
T Passer à l'enregistrement automatique des mesures de conduction du véhicule Affiché sur l'interface client Carla
R. Enregistrer le mouvement du véhicule CTRL + R : passer à l'enregistrement réalisé par R
CTRL + P Relecture de l'enregistrement de R -
F1 Afficher/ne pas afficher les informations liées au capteur de gauche telles que l'accélération, le gyroscope, le GNSS, etc. -
H Peut faire apparaître une commande d'aide -
ÉCHAP quitter le jeu -

1.1.4 Conduite automatisée des véhicules

Exécutez le fichier automatic_control.py sous le chemin CARLA_0.9.13/PythonAPI/examples

python automatic_control.py 

Une fenêtre Pygame apparaîtra et le véhicule roulera automatiquement
insérer la description de l'image ici
. Après avoir atteint le point final, il se fermera automatiquement.

2. Débogage conjoint entre Universe et Carla

Article de référence : https://blog.csdn.net/yuteng12138/article/details/130102293

2.1 Configuration d'OpenPlanner

(1) Téléchargez le code d'extension

cd ~/autoware_universe
mkdir op_carla && cd op_carla/
git clone https://github.com/hatem-darweesh/op_bridge.git -b ros2
git clone https://github.com/hatem-darweesh/op_agent.git -b ros2
git clone https://github.com/hatem-darweesh/scenario_runner.git

(2) Téléchargez les cartes Town01.pcd et Town01.osm depuis https://drive.google.com/drive/folders/1Or0CMS08AW8XvJtzzR8TfhqdY9MMUBpS . Créez un dossier Town01 et copiez Town01.pcd et Town01.osm dans le dossier Town01_map.

  • Town01.pcd renommé pointcloud_map.pcd
  • Town01.osm renommé lanelet2_map.osm

(3) Modifiez le fichier : op_carla/op_bridge/op_scripts/run_exploration_mode_ros2.sh, à la ligne 8, si vous n'exécutez pas la simulation sur le même ordinateur, vous devez définir l'adresse IP de l'ordinateur exécutant la simulation. comme suit:

export SIMULATOR_LOCAL_HOST=“192.168.11.5”

Si vous exécutez la simulation sur cette machine, vous devez la modifier pour :

export SIMULATOR_LOCAL_HOST=“localhost”

insérer la description de l'image ici
(4) Modifiez le fichier : op_carla/op_agent/start_ros2.sh, à la ligne 15, modifiez-le en fonction du chemin d'installation réel.

source ${YouPath}/autoware_universe/autoware/install/setup.bash

A la ligne 18, modifiez le chemin du fichier de lancement pour démarrer Autoware en fonction du chemin d'installation réel, et modifiez le map_path en fonction du chemin de Town01.

ros2 launch \
  ${YouPath}/src/launcher/autoware_launch/autoware_launch/launch/autoware.launch.xml \
  map_path:=${YouPath}/autoware_universe/autoware/src/${map_name} \
  vehicle_model:=sample_vehicle \
  sensor_model:=sample_sensor_kit

(5) Modifiez le fichier : src/launcher/autoware_launch/autoware_launch/launch/autoware.launch.xml
ajoutez ce qui suit à la ligne 11 pour convertir le nuage de points Carla en nuage de points utilisé par Autoware.universe :

<arg name="launch_carla_interface" default="true" description="convert carla sensor data to autoware suitable format"/>

Remplacez true dans launch_sensing_driver par false à la ligne 17 et désactivez le pilote de capteur intégré. Vous pouvez directement copier ce qui suit pour remplacer la ligne 17.

<arg name="launch_sensing_driver" default="false" description="launch sensing driver"/>

Changez le false dans use_sim_time en true à la ligne 23, utilisez le temps de simulation, vous pouvez directement copier ce qui suit pour remplacer la ligne 23.

<arg name="use_sim_time" default="true" description="use_sim_time"/>

注意: Après avoir modifié ici, si vous utilisez un test sans simulation, vous devez le modifier à nouveau, sinon vous ne pourrez pas le localiser. De plus, vous pouvez ajouter des paramètres au lancement sans changer le fichier de paramètres, par exemple :

ros2 launch \
  ${YouPath}/src/launcher/autoware_launch/autoware_launch/launch/autoware.launch.xml \
  map_path:=${YouPath}/${map_name} \
  vehicle_model:=sample_vehicle \
  sensor_model:=sample_sensor_kit \
  use_sim_time:=true

Ajoutez ce qui suit à la ligne 52 pour convertir le nuage de points Carla en un nuage de points disponible pour Universe :

  <!-- CARLA -->
  <group if="$(var launch_carla_interface)">
    <node pkg="carla_pointcloud" exec="carla_pointcloud_node" name="carla_pointcloud_interface" output="screen"/>
  </group>

(6) Modifiez le fichier : src/sensor_kit/sample_sensor_kit_launch/sample_sensor_kit_launch/launch/gnss.launch.xml, changez 1 dans coordinate_system en 2 sur la 4ème ligne, le système de coordonnées utilise MGRS, vous pouvez directement copier ce qui suit pour remplacer la 4ème ligne.

<arg name="coordinate_system" default="2" description="0:UTM, 1:MGRS, 2:PLANE"/>

Ajoutez ce qui suit à la ligne 5 :

<arg name="plane_zone" default="0"/>

(7) Modifiez le fichier : src/sensor_kit/sample_sensor_kit_launch/sample_sensor_kit_description/config/sensor_kit_calibration.yaml, car il y a de nombreuses modifications, vous pouvez toutes les remplacer directement :

sensor_kit_base_link:
  camera0/camera_link:
    x: 0.7
    y: 0.0
    z: 0.0
    roll: 0.0
    pitch: 0.0
    yaw: 0.0
  camera1/camera_link:
    x: 0.0
    y: 0.0
    z: 0.0
    roll: 0.0
    pitch: 0.0
    yaw: 0.0
  camera2/camera_link:
    x: 0.0
    y: 0.0
    z: 0.0
    roll: 0.0
    pitch: 0.0
    yaw: 0.0
  camera3/camera_link:
    x: 0.0
    y: 0.0
    z: 0.0
    roll: 0.0
    pitch: 0.0
    yaw: 0.0
  camera4/camera_link:
    x: 0.0
    y: 0.0
    z: 0.0
    roll: 0.0
    pitch: 0.0
    yaw: 0.0
  camera5/camera_link:
    x: 0.0
    y: 0.0
    z: 0.0
    roll: 0.0
    pitch: 0.0
    yaw: 0.0
  traffic_light_right_camera/camera_link:
    x: 0.0
    y: 0.0
    z: 0.0
    roll: 0.0
    pitch: 0.0
    yaw: 0.0
  traffic_light_left_camera/camera_link:
    x: 0.0
    y: 0.0
    z: 0.0
    roll: 0.0
    pitch: 0.0
    yaw: 0.0
  velodyne_top_base_link:
    x: 0.0
    y: 0.0
    z: 0.8
    roll: 0.0
    pitch: 0.0
    yaw: 0.0
  velodyne_left_base_link:
    x: -0.5
    y: 0.0
    z: 0.8
    roll: 0.0
    pitch: 0.0
    yaw: 0.0
  velodyne_right_base_link:
    x: 0.5
    y: 0.0
    z: 0.8
    roll: 0.0
    pitch: 0.0
    yaw: 0.0
  gnss_link:
    x: 0.0
    y: 0.0
    z: 0.8
    roll: 0.0
    pitch: 0.0
    yaw: 0.0
  tamagawa/imu_link:
    x: 0.0
    y: 0.0
    z: 0.8
    roll: 0.0
    pitch: 0.0
    yaw: 0.0

(8) Modifiez le fichier : src/sensor_kit/sample_sensor_kit_launch/sample_sensor_kit_description/config/sensors_calibration.yaml, car il y a de nombreuses modifications, vous pouvez toutes les remplacer directement :

base_link:
  sensor_kit_base_link:
    x: 0.0
    y: 0.0
    z: 1.6
    roll: 0.0
    pitch: 0.0
    yaw: 0.0
  velodyne_rear_base_link:
    x: 0.0
    y: 0.0
    z: 0.0
    roll: 0.0
    pitch: 0.0
    yaw: 0.0

(9) Modifier les variables d'environnement

gedit ~/.bashrc

Après avoir modifié le chemin en fonction de l'emplacement d'installation, ajoutez-le à la variable d'environnement.

export CARLA_ROOT=/yourpath/carla
export SCENARIO_RUNNER_ROOT=/home/username/autoware_universe/op_carla/scenario_runner
export LEADERBOARD_ROOT=/home/username/autoware_universe/op_carla/op_bridge
export TEAM_CODE_ROOT=/home/username/autoware_universe/op_carla/op_agent
export PYTHONPATH=$PYTHONPATH:${CARLA_ROOT}/PythonAPI
export PYTHONPATH=$PYTHONPATH:${CARLA_ROOT}/PythonAPI/util
export PYTHONPATH=$PYTHONPATH:${CARLA_ROOT}/PythonAPI/carla
export PYTHONPATH=$PYTHONPATH:${CARLA_ROOT}/PythonAPI/carla/agents
# 注意下面的文件名称要对,可以去Carla文件夹看看(我的是,3.7)
export PYTHONPATH=$PYTHONPATH:${CARLA_ROOT}/PythonAPI/carla/dist/carla-0.9.13-py3.7-linux-x86_64.egg

insérer la description de l'image ici

2.2 Recompiler et exécuter

Recompilez les packages modifiés ci-dessus (ROS2 doit copier tous les fichiers à installer, donc toute modification de fichier dans le package doit être recompilée) :

colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release --packages-select autoware_launch sample_sensor_kit_description

Dépendances d'installation :

pip install py-trees networkx tabulate transforms3d
sudo apt-get install ros-galactic-sensor-msgs-py

Exécutez le serveur Carla :

cd $CARLA_ROOT
./CarlaUE4.sh -quality-level=Epic -world-port=2000 -resx=800 -resy=600

insérer la description de l'image ici
Ouvrez un autre terminal pour exécuter Universe et démarrez le pont Carla ros2 en même temps :

cd ${YouPath}/autoware_universe/op_carla/op_bridge/op_scripts
source ~/autoware_universe/install/setup.bash
./run_exploration_mode_ros2.sh

Chargement réussi du
insérer la description de l'image ici
test de pilote automatique de la carte :
insérer la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/zardforever123/article/details/132357436
conseillé
Classement