Installez ROS cinétique sous Ubuntu16.04 LST et implémentez Hello, World!

Écrit devant, veuillez vous référer aux derniers documents de référence à étudier. Les informations faisant autorité sont : Wikipédia maintenu par l'équipe open source ROS :

http://wiki.ros.org/cn/ROS

http://wiki.ros.org/cn/kinetic/Installation/Ubuntu

http://wiki.ros.org/cn/ROS/Tutorials/CreatingPackage

Les informations ci-dessus font relativement autorité et la plupart des internautes ont leur propre compréhension systématique et unilatérale (y compris cet article).

Cependant, les informations présentes sur Internet nous fournissent quelques références, qui complètent bien les détails incomplets fournis par Wikipédia. Dans le même temps, il existe également des références très classiques, et certaines méthodes de résolution de problèmes peuvent également fournir des informations sur des domaines qui n'ont pas été expliqués par le responsable, et peuvent être mutuellement confirmées et tirées des leçons.

Il peut y avoir de nombreux problèmes, alors ne vous découragez pas et consultez plus d'informations sur Internet, en vous concentrant sur les sites Web mentionnés ci-dessus. Vous pouvez également vous référer à la version traduite de "A General Introduction to ROS" (A General Introduction to ROS), ci-dessous appelé introduction ROS).

1. Téléchargez et installez ROS

Commande de paramétrage source, commande de fichier open source :

sudo gedit /etc/apt/sources.list (source Ubuntu)
sudo gedit /etc/apt/sources.list.d/ros-latest.list (source de logiciel tiers)

1. Définissez la source ROS, qui peut être définie des manières suivantes :
(1) source officielle ros :

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

(2) Sources nationales de l’Université des sciences et technologies de Chine :

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'

S'il y a un problème avec l'exécution ci-dessus, utilisez les méthodes suivantes :

sudo sh -c 'echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

(S'il y a un problème avec cette invite source - une solution de référence https://blog.csdn.net/xiangxianghehe/article/details/78483799)

(3) En plus, il y a les Tsinghuayuan, etc.

Tout d'abord, vérifiez si votre source Ubuntu est normale. Si elle n'est pas normale, veuillez choisir la source la plus appropriée.

2.Configurer la clé :

udo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

3. Obtenez et installez ROS :

sudo apt-get update
sudo apt-get install ros-kinetic-desktop-full
sudo apt-get install python-rosinstall

dans:

sudo apt-get update (mettre à jour toutes les sources logicielles)
sudo apt-get install ros-kinetic-desktop-full (installer ros)
et sudo apt-get install python-rosinstall

Attendez que l'installation de ROS soit terminée, je l'ai téléchargé depuis la source officielle (le téléchargement a pris un peu plus de 14 minutes).

4. Initialisez et mettez à jour rosdep :

sudo rosdep init

rosdep update

5. Configurez l'environnement ROS :

echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

Les deux commandes ci-dessus écrivent les commandes dans le fichier .bashrc dans le répertoire racine et prennent effet immédiatement. Cela permet à bash de trouver le fichier de configuration ROS normalement et vous pourrez utiliser ROS normalement à l'avenir.

Si plusieurs versions de ROS sont installées (cinétique, etc.), ~/.bashrc ne doit fournir que le setup.bash correspondant à la version que vous utilisez actuellement.

Si vous souhaitez uniquement modifier les variables d'environnement dans le terminal actuel, vous pouvez exécuter la commande suivante : source /opt/ros/kinetic/setup.bash

6. Installez les dépendances du package de construction :

sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential

7. Testez si ros est installé avec succès :

roscore -h

Si les informations d'installation normales s'affichent, l'installation est réussie. Ou utilisez la méthode suivante pour tester :
1) Ouvrez Termial et entrez la commande suivante pour initialiser l'environnement ROS :

roscore

2) Ouvrez un nouveau Termial, entrez la commande suivante et une petite fenêtre tortue apparaîtra :

rosrun turtlesim turtlesim_node

3) Ouvrez un nouveau Termial et entrez la commande suivante. Vous pouvez contrôler le mouvement de la petite tortue grâce aux touches fléchées dans Termial (sans fermer la fenêtre précédente de la tortue) :

rosrun turtlesim turtle_teleop_key

4) Ouvrez un nouveau terminal, entrez la commande suivante et une nouvelle fenêtre apparaîtra pour afficher les informations sur le nœud ROS :

rosrun rqt_graph rqt_graph

Les commandes précédentes doivent être actives sous le terminal correspondant pour fonctionner correctement (notamment contrôler le mouvement de la tortue).
Vous pouvez utiliser Ctrl+C pour arrêter le terminal.

2. ROS implémente Hello, World !

Veuillez vous référer à Wikipédia chinois : http://wiki.ros.org/cn/ROS/Tutorials/CreatingPackage

1. Créez un espace de travail :

$ mkdir -p ~/test_ros/src

 Certaines personnes sur Internet ont donné les deux étapes suivantes (initialisation de l'espace de travail). En fait, vous n'avez pas besoin de le faire (le système le fera par défaut plus tard - lors de la construction du package) :

cd ~/test_ros/src/ 
catkin_init_workspace 

La commande ci-dessus crée un espace de travail ROS nommé test_ros, qui crée en fait un répertoire. Il s'agit du répertoire standard de l'espace de travail ROS. L'espace de travail ROS contient un sous-dossier src, qui sert à enregistrer le code source à écrire, etc.

2. Créer un package de fonctions ROS

Référence : Introduction à ROS (a)

(1) Entrez le répertoire src sous l'espace de travail ROS :

cd  ~/test_ros/src/

(2) Créez un package de fonctions dans le répertoire src sous l'espace de travail : agitr

(Les initiales de "une introduction douce à ROS". Ce livre a une version chinoise, mais une partie du contenu n'est pas destinée à la cinétique, et des erreurs seront signalées si vous ne faites pas attention. Si vous rencontrez des problèmes après avoir consulté le contenu, veuillez vous référer à Wikipédia. D'ailleurs, la plupart des internautes se réfèrent à ce livre, et l'auteur y fait également référence, mais a trouvé quelques problèmes, je les mentionne donc ici. En fait, ce n'est pas un problème dans le livre , mais que je n'ai pas écrit les programmes et les commandes avec soin. Causé.)

 catkin_create_pkg agitr

Cette commande créera le package de fonctions agitr dans le répertoire src de l'espace de travail et générera deux fichiers importants dans le package :

Le premier fichier de configuration s'appelle package.xml ; ce fichier doit être un peu modifié, ce qui sera discuté plus tard.

Le deuxième fichier, appelé CMakeLists.txt, est un fichier de script Cmake. Cmake est un système de compilation multiplateforme standard de l'industrie. Ce fichier contient
une série d'instructions de compilation, notamment quel type de fichier exécutable doit être généré, quels fichiers source sont nécessaires et où trouver les fichiers d'en-tête et les bibliothèques de liens requis. Bien entendu, ce fichier montre que catkin utilise Cmake en interne.

Remarque : La dénomination des packages ROS suit une convention de dénomination : seules les lettres minuscules, les chiffres et les traits de soulignement sont autorisés, et le premier caractère doit être une lettre minuscule.

3. À ce stade, vous pouvez compiler et voir s'il y a des erreurs. Veuillez noter qu'il n'y a pas de programmation pour le moment, juste pour voir si elle peut être compilée et compilée.

(1) Retournez dans l'espace de travail ROS (c'est l'espace de travail !) et utilisez catkin pour compiler :

(Vous pouvez également compiler lors de la création de l'espace de travail, mais vous devez initialiser l'espace de travail à ce moment-là)

cd ~/test_ros/
catkin_make

Si la compilation réussit, si ce n'est pas le cas, cela signifie qu'il y a un problème avec ROS. Veuillez réinstaller ou résoudre le problème en fonction du problème.

Si la compilation se passe normalement, deux dossiers seront générés sous l'espace de travail : devel et build ; sous le dossier devel, vous pouvez voir plusieurs fichiers setup.*sh, qui contiennent les commandes du fichier de configuration de cet espace de travail ;

(2) Il doit être écrit dans le fichier ~/.bashrc mentionné précédemment :

echo "source ~/test_ros/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

À l'avenir, le terminal pourra reconnaître cet espace de travail, ou vous pourrez utiliser la commande source devel/setup.bash, mais cette commande n'est utile que pour cet espace de travail et la commande n'est pas écrite dans le fichier .bashrc ; certains rapports indiquent que il apparaîtra après le redémarrage de l'ordinateur. Problèmes tels que la non-reconnaissance.

Après avoir terminé le travail lié au package de fonctions (c'est-à-dire après avoir terminé une série de travaux tels que l'écriture, le débogage et les tests, le code est essentiellement finalisé), vous pouvez supprimer en toute sécurité les sous-répertoires devel et build.

(3) Vérifiez s'il a été enregistré dans bash : (il affiche simplement que l'adresse du package est écrite dans la variable d'environnement)

echo $ROS_PACKAGE_PATH  

S'il a été enregistré dans la variable d'environnement, le répertoire d'adresses du package de l'espace de travail que vous avez créé apparaîtra.

4. Enfin, on arrive au point : créez hello.cpp et écrivez le code source

(1) Allez dans le répertoire src :

cd ~/test_ros/src/

(2) Créez hello.cpp, ou vous pouvez le créer directement sans commande

touch hello.cpp

(3) Écrivez le code source de hello.cpp :

//"hello.world" program for ros.
// This header defines the standard ROS classes.
#include<ros/ros.h>
 int main( int argc,char **argv){
 
// Initialize the ROS system
	ros::init(argc,argv,"hello_ros");

// Enable ish this program as a ROS node.
	ros::NodeHandle nh;

// Send some output as a log message.
	ROS_INFO_STREAM("Hello,World!");

 }

5. Modifiez le makefile : le contenu de CMakelists.txt est remplacé par

cmake_minimum_required(VERSION 2.8.3)
project(agitr)

find_package(catkin REQUIRED COMPONENTS
	roscpp
)

catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES agitr
#  CATKIN_DEPENDS other_catkin_pkg
#  DEPENDS system_lib
)

include_directories(
 include
 ${catkin_INCLUDE_DIRS}
)

add_executable(hello hello.cpp)

target_link_libraries(hello ${catkin_LIBRARIES})

Pour spécifier les bibliothèques dépendantes, modifiez le fichier CMakeLists.txt dans le répertoire du package. La version par défaut de ce fichier contient la ligne suivante :
find_package(catkin REQUIRED)

D'autres packages catkin qui en dépendent peuvent être ajoutés
après le mot-clé COMPONENTS dans cette ligne, comme suit :
find_package(catkin REQUIRED COMPONENTS package-names)

Et ajoutez deux lignes à l'intérieur pour déclarer l'exécutable et ses dépendances :

add_executable (bonjour bonjour.cpp)

target_link_libraries(bonjour ${catkin_LIBRARIES})

6. Modifiez le contenu du fichier manifeste package.xml par : (Attention particulière)

<?xml version="1.0"?>
<package format="2">
  <name>agitr</name>
  <version>0.0.0</version>
  <description>The agitr package</description>

   <maintainer email="[email protected]">liu</maintainer>

  <license>TODO</license>

  <buildtool_depend>catkin</buildtool_depend>

  <build_depend>roscpp</build_depend>
  <!-- <run_depend>roscpp</run_depend> -->
  <!-- This is an error, the follow is ture.-->
  <exec_depend>roscpp</exec_depend>

  <!-- The export tag contains other, unspecified, tags -->
  <export>
    <!-- Other tools can request additional information be placed here -->

  </export>
</package>

Nous devons également lister les bibliothèques dépendantes dans le fichier manifeste du package, ce qui est
obtenu en utilisant les deux mots-clés build_depend (dépendance de compilation) et run_depend (dépendance d'exécution) :
<build_depend>nom du package</build_depend>
<run_depend>nom du package < /run_depend>

Notez que l'élément run_depend peut être remplacé par l'élément exec_depend (voir Wikipédia). Puisque run_depend est utilisé dans le livre d'introduction à ROS mentionné ci-dessus, il est donné ici. Lorsque l'auteur l'exécute pour la première fois, une erreur ros/ros.h sera signalée (pas ros/ros.h, pas d'espaces), principalement parce que le code est copié lors de l'utilisation et qu'il y a des erreurs d'espace. Nous faisons ici référence au dernier Wikipédia, qui utilise exec_depend. Le XML ci-dessus est disponible dans les tests réels et est correct. Si une erreur ros/ros.h est signalée, la raison est généralement que les dépendances ne sont pas définies correctement.

6. Compilez l'espace de travail, comme précédemment :

cd ~/test_ros/
catkin_make

Si tout est normal jusqu’à présent, alors 90 % sont réalisés.

S'il y a des erreurs de compilation, vous les verrez lors de l'exécution de cette étape. Après les avoir corrigés, vous pouvez réexécuter catkin_make pour terminer la compilation.

Si vous voyez une erreur de catkin_make indiquant que le fichier d'en-tête ros/ros.h est introuvable, ou une erreur indiquant que les fonctions ROS telles que ros::init ne sont pas définies, la possibilité la plus probable est que
votre CMakeLists.txt ne déclare pas correctement une dépendance à roscpp.

À l'origine, nous devions exécuter le script setup.bash, mais comme il a été écrit plus tôt dans le fichier .bashrc, il n'est pas nécessaire de l'exécuter. Il convient de mentionner que ce fichier de script généré automatiquement définit plusieurs variables d'environnement afin que ROS puisse trouver le package de fonctions créé et le fichier exécutable nouvellement généré. Sauf si la structure des répertoires a changé, vous ne devez exécuter cette commande qu'une seule fois dans chaque terminal, même si vous modifiez le code et effectuez une recompilation avec catkin_make. Si quelque chose ne va pas, le code à exécuter est :

source devel/setup.bash (allez d'abord dans l'espace de travail)

7. Exécuter le programme bonjour

(1) Exécuter dans un nouveau terminal :

roscore

(2) Ouvrez un autre terminal et exécutez rosrun agitr bonjour

rosrun agitr hello

(3) Le message suivant apparaîtra, indiquant que l'exécution a réussi et que vous avez terminé :

[ INFO] [1546072659.372736726] : Connecté au maître à [localhost:11311]
[ INFO] [1546072659.375831122] : Bonjour, Monde !

Remarque : N'oubliez pas de démarrer roscore en premier : ce programme est un nœud, et le nœud nécessite un gestionnaire de nœuds pour fonctionner correctement. À propos,
les nombres dans cette ligne de sortie représentent le temps, en secondes, depuis le 1er janvier 1970, date à laquelle ROS_INFO_STREAM a commencé à s'exécuter.

Cette commande rosrun, ainsi que d'autres commandes ROS, peuvent produire des erreurs telles que les suivantes :
[rospack] Erreur : pile/package nom du package introuvable

Deux causes possibles de cette erreur sont :
(1) une faute d'orthographe du nom du package ;
(2) un échec d'exécution réussie de setup.bash dans votre espace de travail.

Si des questions se posent, veuillez vous référer aux documents de référence plus haut dans le billet de blog, car ils font davantage autorité. De plus, vous pouvez rechercher les solutions d'autres personnes. Il y aura toujours une solution, soyez patient et trouvez une solution (o^o), et persévérez, persévérez, persévérez. . .

Ce qui précède sont quelques-unes des idées et des compréhensions de l'auteur au cours de la pratique. Comme c'est la première fois que j'écris un article de blog aussi long et que le temps pour apprendre ROS est court, il est inévitable que des erreurs soient commises. S'il y a des erreurs, pardonnez-moi et corrigez-moi. En même temps, je voudrais me plaindre de l'éditeur CSDN, qui a toujours des problèmes, des sauts inexplicables et des fonctions d'affichage d'interface ennuyeuses. Si vous pensez qu'il a une valeur de référence, j'espère qu'il vous plaira et le sauvegardera. C'est un honneur pour moi de pouvoir vous aider.

Je suppose que tu aimes

Origine blog.csdn.net/liuxhCSDN/article/details/85335580
conseillé
Classement