Basé sur Ubuntu18.04 + ROS Melodic pour construire un ordinateur hôte de voiture SLAM (Raspberry Pi)


1. Le package de fonctions et le port série utilisés

1. Pack de fonctionnalités

Ce projet utilise plusieurs packages de fonctions de projet open source pour implémenter le mappage et la navigation SLAM basés sur lidar. Le code utilisé peut être téléchargé sur Code Cloud .

Le pack de fonctions doit être enregistré et compilé sur le maître et l'esclave.

2. Port série

Dans ce projet, le Raspberry Pi est utilisé comme ordinateur supérieur pour le développement, et le radar et l'ordinateur inférieur doivent être communiqués en série avec le Raspberry Pi. Grâce au test ici, le port série de mon radar est / dev / ttyUSB1 , et le port série de l'ordinateur inférieur est / dev / ttyUSB0 .

Si vous ne connaissez pas votre port série, vous pouvez vérifier le port série utilisé en branchant et en débranchant le périphérique, puis en utilisant la commande ls / dev / ttyUSB * .

Vous devez modifier les fichiers suivants en fonction de votre situation actuelle:

Port série inférieur de l'ordinateur

Modifiez le fichier bringup.launch dans le dossier de lancement sous le package de fonctions zxcar et placez votre numéro de port série comme indiqué dans la figure ci-dessous.
Insérez la description de l'image ici

Port série radar

Modifiez le fichier rplidar.launch dans le dossier launch / lidar sous le package de fonctions zxcar , et remplissez le port série de votre radar à la position dans la figure ci-dessous.
Insérez la description de l'image ici

Deuxièmement, créez un espace de travail et compilez

1. Créez un espace de travail

Créez un nouvel espace de travail et placez le package de fonctions téléchargé dans le dossier src en dessous.
Insérez la description de l'image ici

2. Compilez

Compilez dans l'espace de travail. Une erreur peut apparaître lors de la première compilation. Téléchargez simplement les dépendances en fonction de l'invite d'erreur.
Insérez la description de l'image ici

Pour plus de détails, veuillez consulter: Problème d'installation du package de dépendances ROS

Ici, utilisez la commande sudo apt-get install ros-melodic-Geographic-msgs pour installer les dépendances requises, puis compilez à nouveau.
Insérez la description de l'image ici

3. Autorisation

Pour exécuter des fichiers python sous Linux, vous devez leur donner des autorisations exécutables. Afin de réduire les problèmes, exécutez la commande ** sudo chmod -R + x src / ** pour donner des autorisations exécutables à tous les fichiers du package de fonctions.
Insérez la description de l'image ici

4. Rafraîchissez l'environnement

Afin de faciliter l'exécution ultérieure du programme ROS, il n'est pas nécessaire d'actualiser l'environnement à plusieurs reprises, cette fois la commande source est écrite dans le fichier .bashrc pour garantir que l'actualisation est directement effectuée à chaque fois que la ligne de commande est ouverte.

sudo vi ~/.bashrc

Écrivez le contenu à la fin du fichier:

source ~/ws/devel/setup.bash

Insérez la description de l'image ici

Trois, l'étalonnage

Comme imu peut avoir des problèmes tels que l'inclinaison lors de l'installation, un étalonnage est nécessaire.

1. Calibrez imu

Tout d'abord, démarrez le fichier bringup.launch sous le package de fonctions zxcar côté Raspberry Pi (côté hôte) . Lorsque les mots «zxcar_driver start success!» Apparaissent , cela signifie que le démarrage est réussi.

roslaunch zxcar bringup.launch

Insérez la description de l'image ici

Ensuite, démarrez une autre ligne de commande et continuez à démarrer le nœud do_calib du côté hôte pour effectuer l'étalonnage imu. Lors de cette opération, la voiture doit reposer à plat sur le sol, ne la touchez pas à la main pour garantir la précision de l'étalonnage.

rosrun imu_calib do_calib

Insérez la description de l'image ici

Suivez les invites Appuyez une fois sur [ENTER] Appuyez sur la touche Enter pour passer à la mesure suivante. Un total de six mesures sont nécessaires. Une
Insérez la description de l'image ici
fois l'étalonnage terminé, le fichier imu_calib.yaml sera généré dans le répertoire courant. Ce fichier doit être remplacé par le fichier du même nom dans le répertoire / zxcar / param / imu .

roscd zxcar/param/imu/
sudo rm -rf imu_calib.yaml 
mv ~/imu_calib.yaml ~/ws/src/zxcar/param/imu/

Insérez la description de l'image ici

2. Calibrez la vitesse angulaire

Démarrez le fichier bringup.launch sous le package de fonctions zxcar du côté Raspberry Pi (côté hôte) et ouvrez la ligne de commande pour démarrer le nœud calibrate_angular . Lorsque les mots "Appeler rqt_reconfigure pour contrôler le test." Apparaissent , cela signifie que le démarrage a réussi.
Insérez la description de l'image ici
Démarrez l'outil rqt côté PC (côté esclave) selon les invites.

rosrun rqt_reconfigure rqt_reconfigure 

Insérez la description de l'image ici

Les paramètres modifiables ici sont les suivants:

  • test_angle: teste l'angle de rotation
  • speed: tester la vitesse de rotation
  • tolérance: la plage d'erreur du test

Conservez les paramètres par défaut inchangés, affichez la boussole du téléphone portable et placez-la au-dessus de la voiture, enregistrez la valeur d'angle actuelle et vérifiez start_test pour démarrer le test et enregistrer l'angle final sur le téléphone mobile, et calculer l'angle de rotation de la voiture.
Insérez la description de l'image ici
Ici, ma voiture pivote de 355 degrés, j'utilise donc 355/360 pour calculer le facteur de zoom. Mesurez à nouveau l'effet de la rotation et remplissez le fichier bringup.launch avec le nombre moyen de mesures multiples.

roscd zxcar/launch/
sudo vi bringup.launch 

Insérez la description de l'image ici

3. Calibrez la vitesse de ligne

De même, la vitesse de la ligne doit être calibrée. Dans l'
hôte, exécutez les commandes suivantes dans deux lignes de commande:

roslaunch zxcar bringup.launch
rosrun zxcar_nav calibrate_linear.py

Une fois que l' invite Appeler rqt_reconfigure pour contrôler le test apparaît, exécutez l'outil rqt sur l'esclave

rosrun rqt_reconfigure rqt_reconfigure

Insérez la description de l'image ici
Cliquez également sur start_test pour tester et mesurez la distance de marche du chariot avec un ruban à mesurer. Ici, j'ai mesuré 1,02 mètre de marche, divisé par 1 mètre, et j'ai rempli le facteur de zoom résultant dans le fichier bringup.launch.

roscd zxcar/launch/
sudo vi bringup.launch 

Insérez la description de l'image ici

Quatrièmement, cartographie radar et navigation

Une fois l'étalonnage terminé, le travail de cartographie radar peut être effectué.

1. Créez une carte

Lancez le fichier lidar_slam.launch dans l'hôte

roslaunch zxcar lidar_slam.launch

La première erreur de démarrage est la suivante et les dépendances pertinentes doivent être installées.

sudo apt-get install ros-melodic-gmapping
sudo apt-get install ros-melodic-move-base
sudo apt-get install ros-melodic-amcl
sudo apt-get install ros-melodic-map-server
sudo apt-get install ros-melodic-global-planner
sudo apt-get install ros-melodic-dwa-local-planner

Insérez la description de l'image ici
Une fois l'installation terminée, vous pouvez l'exécuter à nouveau et le mot odom reçu! Apparaît pour indiquer un démarrage réussi.
Insérez la description de l'image ici

Ensuite, vous devez exécuter le fichier lidar_slam_rviz.launch sur l' esclave pour démarrer l'interface RVIZ et démarrer le nœud teleop_twist_keyboard en même temps .

roslaunch zxcar lidar_slam_rviz.launch
rosrun teleop_twist_keyboard teleop_twist_keyboard.py

Insérez la description de l'image ici

Le nœud teleop_twist_keyboard est utilisé pour contrôler la voiture à marcher, et la méthode d'utilisation est la même que l'invite:
Insérez la description de l'image ici
en manipulant la voiture pour marcher, vous pouvez voir l'effet de la création de la carte dans RVIZ.
Insérez la description de l'image ici

2. Enregistrez le dessin

Après avoir construit une carte radar en manipulant la voiture pour marcher, vous devez enregistrer la carte créée sous zxcar / maps .

Exécutez la commande suivante à partir de la machine pour enregistrer le dessin.

roscd heimarobot/maps
rosrun map_server map_saver -f house

Après l'enregistrement, vous pouvez arrêter le fichier lidar_slam.launch sur l'hôte.

3. Navigation

Exécutez les commandes suivantes sur l'esclave, et les mots ** odom reçus! ** sont également affichés, ce qui signifie que le démarrage est réussi.

roslaunch zxcar navigate.launch

Exécutez la commande sur l'hôte pour démarrer RVIZ

roslaunch zxcar navigate_rviz.launch

Insérez la description de l'image ici

À ce stade, vous devez utiliser le pinceau 2D Pose Estimate dans la barre d'outils au-dessus de RVIZ pour calibrer la position initiale de la voiture, puis utiliser 2D Nav Goal pour naviguer.

Je suppose que tu aimes

Origine blog.csdn.net/weixin_45929038/article/details/114061424
conseillé
Classement