La configuration de base de la plateforme de simulation de drone basée sur ROS et PX4 sous Ubuntu 18.04
Documents de référence:
https://www.yuque.com/xtdrone/manual_cn/basic_config_1.11
https://blog.csdn.net/qq_42585108/article/details/106781596
https://blog.csdn.net/qq_44830040/article / details / 106049992
https://blog.csdn.net/abc869788668/article/details/78323395?locationNum=8&fps=1
Le projet XTDrone de Xiao Kun a été utilisé pour la construction de la plate-forme de simulation d'UAV. Merci beaucoup. La page Web associée: https://gitee.com/robin_shaun/XTDrone. Ici, je ne suis qu'un résumé de la construction de la plate-forme de simulation d'UAV.
Cet article n'est qu'un résumé et une expérience d'installation personnelle basée sur ces articles. Il peut y avoir de nombreuses citations au milieu. S'il s'agit d'une infraction, veuillez me contacter pour le supprimer.
Système Ubuntu18.04, j'ai commencé l'installation à partir d'un Ubuntu fraîchement installé, étape par étape, et j'ai intégré certaines méthodes de construction de réseau et les problèmes rencontrés, et je les ai enregistrés pour votre référence. S'il y a une erreur, veuillez me corriger.
Une installation dépendante
1,
sudo apt install -y \
ninja-build \
exiftool \
python-argparse \
python-empy \
python-toml \
python-numpy \
python-yaml \
python-dev \
python-pip \
ninja-build \
protobuf-compiler \
libeigen3-dev \
genromfs \
xmlstarlet \
libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev
2 、
pip install \
pandas \
jinja2 \
pyserial \
cerberus \
pyulog \
numpy \
toml \
pyquaternion
Si l'erreur suivante se produit, vous pouvez d'abord mettre à jour setuptools et pip
Collecting pandas
Using cached https://files.pythonhosted.org/packages/64/f1/8fdbd74edfc31625d597717be8c155c6226fc72a7c954c52583ab81a8614/pandas-1.1.2.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-build-qtvsjq8t/pandas/setup.py", line 349
f"{extension}-source file '{sourcefile}' not found.\n"
^
SyntaxError: invalid syntax
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-qtvsjq8t/pandas/
pip install --upgrade setuptools
#若未报错不需要输入这两行命令
python -m pip install --upgrade pip
Deux, installation ROS
Pour l'installation, veuillez vous
référer au site officiel de ROS: http://wiki.ros.org/Installation/Ubuntu ou reportez-vous au tutoriel: https://blog.csdn.net/qq_44830040/article/details/106049992 (ce tutoriel est une installation source domestique, Bien que ros puisse être utilisé, il peut y avoir des problèmes lors de son utilisation avec d'autres tels que darknet_ros. Bien que le téléchargement à partir de sources nationales soit beaucoup plus rapide, il est toujours recommandé de le télécharger à partir du site officiel)
Remarque: Ubuntu 18.04 peut être installé directement (c'est-à-dire la commande sudo apt-get install ros-melodic-desktop, c'est-à-dire, pour ROS Melodic, choisissez l'installation complète du bureau, qui installera Gazebo9 et les bibliothèques liées à la perception en même temps), mais je recommande personnellement 18.04 L'installation de gazebo9.0 présente directement des défauts et des problèmes peuvent survenir plus tard. Il est recommandé d'installer desktop, puis d'installer gazebo9.13 ou supérieur
Ubuntu16.04 (ROS Kinetic) dans les étapes suivantes. Sélectionnez destop ou install. Gazebo7 ne peut pas effectuer de simulations ultérieures.
Voici également l'installation de ROS (en prenant Melodic comme exemple):
1. Configurez le référentiel Ubuntu
. Cliquez sur le code source dans le logiciel et mettez à jour.
2. Définissez la source.list. Les éléments
suivants sont Tsinghua Mirror, Zhongke University Mirror et le choix officiel par défaut. Cependant, je recommande personnellement le miroir domestique, le téléchargement sera beaucoup plus rapide
Miroir Tsinghua:
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
Miroir de l'Université chinoise des sciences et de la technologie:
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
Le défaut officiel:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
3. Réglez la clé
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
4. Installation
sudo apt update
sudo apt install ros-melodic-desktop
Si vous installez ROS normalement, vous pouvez sudo apt installer ros-melodic-desktop-full, ici je suis sudo apt installer ros-melodic-desktop, la raison a déjà été mentionnée
5. Définissez l'environnement
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
6. Créer des dépendances
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
sudo apt install python-rosdep
sudo rosdep init
Si une erreur se produit:
ERREUR: impossible de télécharger la liste des sources par défaut à partir de:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list Le
site Web est peut-être en panne.
Exécutez la commande suivante :
cd /etc
sudo gedit hosts
Ajoutez à la fin: 151.11.84.133 raw.githubusercontent.com, puis enregistrez le fichier et quittez.
Si une erreur se produit: ERREUR: le fichier de liste des sources par défaut existe déjà:
/etc/ros/rosdep/sources.list.d/20-default.list
Veuillez supprimer si vous souhaitez réinitialiser la
solution, exécutez la commande suivante:
sudo rm /etc/ros/rosdep/sources.list.d/20-default.list
Puis exécutez à nouveausudo rosdep init
7. Effectuer la mise à jour rosdep
rosdep update
Si l'erreur suivante se produit:
ERREUR: erreur lors du chargement de la liste des sources:
('L'opération de lecture a expiré',) est
probablement un problème de réseau, exécutez simplement la commande rosdep update à plusieurs reprises
Démarrez ROS après l'installation:
roscore
La sortie suivante indique que l'installation a réussi:
... logging to /home/robin/.ros/log/a5118af0-5474-11ea-8b86-e454e828c524/r
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://robin-G3-3590:34223/
ros_comm version 1.12.14
SUMMARY
========
PARAMETERS
* /rosdistro: kinetic
* /rosversion: 1.12.14
NODES
auto-starting new master
process[master]: started with pid [30244]
ROS_MASTER_URI=http://robin-G3-3590:11311/
setting /run_id to a5118af0-5474-11ea-8b86-e454e828c524
process[rosout-1]: started with pid [30261]
started core service [/rosout]
Pour créer un nouvel espace de travail, il est recommandé d'utiliser catkin-tools pour gérer l'espace de travail. Après cela, sauf pour le démarrage de l'environnement de simulation PX4, les autres projets liés à ROS sont gérés dans cet espace de travail.
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_make
source devel/setup.bash
Trois, installation de gazebo
Qu'il s'agisse de ros Kinetic ou Melodic, le gazebo intégré présente des défauts.Si le gazebo a été installé lors de l'installation de ros, il est recommandé de le désinstaller et de le réinstaller. Il est recommandé que la version de gazebo soit supérieure à 9.13.
Veuillez consulter le site Web officiel pour l'installation de Gazebo:
http://gazebosim.org/tutorials?tut=install_ubuntu&cat=install
Remarque:
1. Choisissez une autre installation: installation étape par étape
2. Installez Gazebo9.13 Ou au-dessus
L'installation du gazebo est également répertoriée ici pour plus de commodité
1. Configurez votre ordinateur pour accepter les logiciels de package.osrfoundation.org
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
cat /etc/apt/sources.list.d/gazebo-stable.list
#如果出现deb http://packages.osrfoundation.org/gazebo/ubuntu-stable xenial main表示没问题
2. Réglez la clé
wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
sudo apt-get update
3. Installez les instructions de gazebo9.1:
sudo apt-get install gazebo9=9.1*
Après l'installation, entrée du terminal, gazebo
si Gazebo est ouvert, l'installation est réussie
4.Gazebo lui-même est indépendant de ROS, vous devez donc également installer le plugin Gazebo pour ROS
sudo apt install ros-melodic-gazebo9-*
sudo apt install ros-melodic-gazebo-*
tester
roscore
rosrun gazebo_ros gazebo
Si Gazebo peut être ouvert, le plug-in entre Gazebo et ROS a également été installé avec succès. Vous pouvez également vérifier la version de gazebo en
tapantgazebo --version
Quatre, installation MAVROS
sudo apt install ros-melodic-mavros ros-melodic-mavros-extras
roscd mavros
sudo wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
sudo chmod a+x ./install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh
Le sudo final ./install_geographiclib_datasets.sh Cette étape prend un certain temps à installer, veuillez patienter
Cinq, configuration PX4 (version 1.11)
git clone https://github.com/PX4/Firmware
mv Firmware PX4_Firmware
cd PX4_Firmware
git checkout -b xtdrone/dev v1.11.0-beta1
git submodule update --init --recursive
Le téléchargement du code source et la mise à jour du sous-module étant trop lent, j'ai fourni le lien PX4_Firmware téléchargé et mis à jour ici. Après le téléchargement, décompressez-le et extrayez-le dans le répertoire principal: https://download.csdn.net/download/qq_45067735/12713464
Installez les dépendances python nécessaires:
cd ~/PX4_Firmware
bash
bash ./Tools/setup/ubuntu.sh --no-nuttx --no-sim-tools
Compiler
make px4_sitl_default gazebo
Si l'erreur de compilation provoque l'instruction ignition :: math :: Matrix4 xformV (vq); dans PX4_Firmware / Tools / sitl_gazebo / src / gazebo_usv_dynamics_plugin.cpp; dans l'instruction, xformV n'a pas défini le type auparavant,
modifiez-le en ignition :: math :: Matrix4 xformV ( vq); Recompilez après l'enregistrement.
Modifiez ~ / .bashrc dans PX4_Firmware, ajoutez le code suivant, faites attention au chemin correspondant
source ~/PX4_Firmware/Tools/setup_gazebo.bash ~/PX4_Firmware/ ~/PX4_Firmware/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware/Tools/sitl_gazebo
Exécutez ensuite la commande suivante, Gazebo démarrera à ce moment, comme illustré dans la figure ci-dessous.
cd ~/PX4_Firmware
roslaunch px4 mavros_posix_sitl.launch
Et courir
rostopic echo /mavros/state
Si connecté: True, cela signifie que MAVROS et SITL communiquent avec succès.
---
header:
seq: 11
stamp:
secs: 1827
nsecs: 173000000
frame_id: ''
connected: True
armed: False
guided: False
manual_input: True
mode: "MANUAL"
system_status: 3
---
Remarque:
1. Il est recommandé de télécharger scientifiquement en ligne. La vitesse de téléchargement sur GitHub est relativement lente et peut échouer. J'ai également essayé de modifier le réseau et l'effet est presque nul. Il est recommandé de mettre le code source PX4 sur GitHub sur gitee avant le clonage de git. Veuillez utiliser le cloud de code vous-même. rechercher.
Si vous téléchargez le code sur le nuage de code, le téléchargement depuis GitHub dans le sous-module de mise à jour (git submodule update --init --recursive) est également très lent. Cela semble devoir modifier le sous-module, mais je ne sais toujours pas comment fonctionner , S'il y a un grand dieu qui veut donner quelques conseils.
2. Le processus de création du gazebo px4_sitl_default peut tester la mémoire de l'ordinateur. Plusieurs fois sur mon ordinateur, le processeur fonctionne à 100% et la
situation peut être la suivante:
Vous pouvez d'abord essayer d'augmenter l'espace d'échange temporaire, puis exécuter la commande make px4_sitl_default gazebo, ou exécuter directement à nouveau la commande make px4_sitl_default gazebo, ce qui peut nécessiter plusieurs exécutions.
#注释:of=/home/swap,放置swap的空间; count的大小就是增加的swap空间的大小,64M就是块大小,这里是64MB,所以总共空间就是bs*count=1024MB.这里分配空间的时候需要一点时间,等待执行完毕。
sudo dd if=/dev/zero of=/home/swap bs=64M count=16
#注释:把刚才空间格式化成swap各式
sudo mkswap /home/swap (可能会提示warning: don't erase bootbits sectorson whole disk. Use -f to force,不用理会)
#注释:使刚才创建的swap空间
sudo swapon /home/swap
3. L'erreur suivante peut survenir lors de l'exécution de la dernière commande (make px4_sitl_default gazebo):
Solution:
sudo apt-get install libgstreamer-plugins-base1.0-dev
4. Les conditions suivantes peuvent se produire pendant le fonctionnement:
ces erreurs et avertissements n'affectent pas l'utilisation et peuvent être ignorés.
5. Le processus est lent lorsqu'il s'exécute pour la première fois. Gazebo peut avoir un écran noir pendant un certain temps. En fait, ceci est en cours d'initialisation. Veuillez patienter, car ce sera le cas plus tard.
6. Il est recommandé de modifier le fichier ./bashrc directement dans le répertoire principal, d'utiliser control + h pour afficher les fichiers cachés, de copier les trois lignes ci-dessus directement vers le bas et d'entrer pour source ~/.bashrc
redémarrer barshc, afin que cela soit fait une fois pour toutes, mais après la modification, ouvrez la commande à chaque fois La ligne apparaîtra juste ajoutée
6. Installation de la station au sol QGC (en option)
Lien d'installation: https://docs.qgroundcontrol.com/en/getting_started/download_and_install.html Après le
démarrage, l'écran ci-dessous apparaît. Notez qu'Ubuntu16.04 ne peut pas utiliser directement la série QGroundcontrol version 4 (la série 3 peut être utilisée). Ubuntu16.04 nécessite la compilation du code source de la série 4. Veuillez vérifier attentivement le lien d'installation.
Seven, XTDrone téléchargement des sources
git clone https://gitee.com/robin_shaun/XTDrone.git
cd XTDrone
cp sitl_config/init.d-posix/rcS ~/PX4_Firmware/ROMFS/px4fmu_common/init.d-posix/
cp sitl_config/worlds/* ~/PX4_Firmware/Tools/sitl_gazebo/worlds/
cp -r sitl_config/models/* ~/PX4_Firmware/Tools/sitl_gazebo/models
cp -r sitl_config/models/* ~/.gazebo/models/
cp sitl_config/launch/* ~/PX4_Firmware/launch/
#如果之前没有catkin_ws,需要建立一下,之后的教程会用到
mkdir -p ~/catkin_ws/src
mkdir -p ~/catkin_ws/scripts
Remarque: cp -r sitl_config / models / * ~ / .gazebo / models / Cette étape peut avoir la situation suivante:
vous pouvez la laisser tranquille pour le moment, continuer avec les étapes suivantes et réessayer après la compilation, ou vous pouvez aller à la correspondante manuellement Créez un dossier, puis utilisez
8. Utilisez le clavier pour contrôler le vol du drone
Exécuter dans un terminal
cd ~/PX4_Firmware
roslaunch px4 indoor1.launch
Lors de l'exécution de roslaunch px4 indoor1.launch pour la première fois, le chargement du gazebo peut prendre un certain temps, veuillez patienter
Une fois Gazebo démarré, exécutez-le dans un autre terminal
cd ~/XTDrone/communication/
python multirotor_communication.py iris 0
Après avoir établi la communication avec l'iris 0, exécutez dans un autre terminal
cd ~/XTDrone/control/
python multirotor_keyboard_control.py iris 1 vel
Après succès, comme le montre la figure,
vous pouvez contrôler le déverrouillage / verrouillage d'un iris via le clavier, modifier le mode de vol, la vitesse de l'avion, etc. Utilisez le mode de vol au décollage pour décoller avec t, et les paramètres pertinents (vitesse de décollage, altitude) doivent être définis dans rcS. Généralement, le mode offboard peut être utilisé pour décoller, à ce moment, la vitesse de décollage doit être supérieure à 0,3 m / s pour décoller. (Méthode de décollage: appuyez d'abord sur la touche t pour déverrouiller, puis appuyez sur la touche i pour rendre la vitesse ascendante supérieure ou égale à 0,3. À ce stade, vous pouvez voir le rotor tourner vers le haut, et enfin appuyez sur la touche b pour décoller. L'intervalle entre les touches devrait être plus rapide, sinon le temps Si l'intervalle est trop long, le drone se verrouille automatiquement et vous devez répéter les étapes tout de suite) À
ce stade, la configuration de base de la plate-forme de simulation est terminée.
Remarque: Les
erreurs suivantes peuvent survenir lors du lancement de roslaunch px4 indoor1.:
1.
Voir la solution: https: // blog .csdn.net / abc869788668 / article / details / 78323395? locationNum = 8 & fps = 1
Entrez ensuite la commande suivante:
sudo /opt/ros/melodic/lib/mavros/install_geographiclib_datasets.sh
Cela peut prendre beaucoup de temps et vous devez attendre patiemment
. 2. L'
auteur original a dit que cela pouvait être un problème de lidar 3D, mais après quelques jours d'essais, j'ai trouvé que le gazebo9.0 installé aura l'erreur ci-dessus, et gazebo9.13 peut fonctionner, vous pouvez essayer d'installer gazebo Pour essayer, changez la version en 9.13 C'est pourquoi je recommande de choisir melodic-desktop lors de l'installation de ros et gazebo, et l'installation de gazebo 9.13 ou version ultérieure.
Page Web de référence:
[1]: https://www.yuque.com/xtdrone/manual_cn/basic_config_1.11
[2]: https://blog.csdn.net/qq_42585108/article/details/106781596
[3]: https : //blog.csdn.net/qq_44830040/article/details/106049992
[4]: https://blog.csdn.net/abc869788668/article/details/78323395?locationNum=8&fps=1