Annuaire d'articles
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 :
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
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 :
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
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é.
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
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
. 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”
(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
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
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
test de pilote automatique de la carte :