Une histoire sur le développement de ROS appelé rosjava avec java

Basé sur l'idée étrange que je veux vraiment écrire ROS en java, il prend en charge un environnement où la formule peut être développée même en java appelé rosjava, et c'était le meilleur à utiliser (il y a des différences individuelles), donc je vais le résumer ici. Masu

Je veux que plus de développement Java ROS se propage!

environnement d'utilisation

C'est l'environnement que j'utilise. S'il vous plaît pour référence ubuntu16.04 (version japonaise) ROS ( kinetic ) java8 (Il semble que java9 ne le supporte pas?) gradle (probablement nécessaire)

0. À propos de la pré-introduction

En ce qui concerne l'installation de ROS et java, nous procéderons en supposant qu'elle est déjà terminée, donc si vous ne l'avez pas fait, veuillez terminer l'installation. Je pense que la méthode d'installation est également sur la page officielle

1. Introduction

1.1 Installer rosjava

Tout d'abord, installez rosjava lui-même

python


sudo apt-get install ros-kinetic-rosjava

Installez rosjava avec

1.2 Créer un espace de travail

Peut-être que ceux qui utilisent déjà ROS trouveront catkin_ws dans le répertoire Home Il n'y a pas de problème si vous le faites ensemble, mais un petit problème se produira plus tard, donc je le ferai séparément ici. Ici, créez-le avec le nom catkin_ws_java

Sous le répertoire d'accueil

python


mkdir catkin_ws_java
cd catkin_ws_java
mkdir src
cd src
catkin_init_workspace

Pour créer un espace de travail pour rosjava en exécutant chacun à son tour

1.3 Créer un projet ou un package

Ensuite, créez un paquet pour rosjava

Ici, des packages et des projets peuvent être créés en entrant ce qui suit.

python


catkin_create_rosjava_nom de package arbitraire pkg

python


catkin_create_rosjava_projet Nom de projet arbitraire

(Il semble que les lettres majuscules ne peuvent pas être utilisées dans chaque nom arbitraire)

Dans ce qui suit, nous parlerons de l'hypothèse que le nom arbitraire du package est test_pkg et le nom arbitraire du projet est test_pj.

Revenir à nouveau au répertoire d'accueil

python


cd catkin_ws_java/src

Bougez avec

python


catkin_create_rosjava_pkg test_pkg

Si la commande suivante est sortie, la création du package est réussie.

python


BUILD SUCCESSFUL

Total time: 8.479 secs

Ceci termine la création du package Se déplacer dans le projet créé tel quel

python


cd test_pkg

Puis créez un projet

python


catkin_create_rosjava_project test_pj

Si la commande suivante est sortie, la création du projet est réussie. rosjava est une spécification conviviale pour les débutants qui crée un fichier de base semblable à un didacticiel chaque fois que vous créez un projet Talker et Listener sont principalement utilisés dans ce domaine.

python


Creating rosjava project 
  Name      : test_pj
  File      : build.gradle
  File      : settings.gradle
  File      : Talker.java
  File      : Listener.java
  File      : CMakeLists.txt (gradle task update)

À propos, la structure de fichier de rosjava est

python


src ┳ Projet A
┃┣ Paquet B
┃┗Package C
    ┃ 
┗Projet E
┣ Forfait F
┗ Paquet G

Peut être étendu sous la forme de

1.4 catkin_make

Jusqu'à présent, je viens de créer un package et un projet et il ne peut pas être utilisé tel quel, donc catkin_make Cependant, catkin_make de rosjava est une triste spécification qui ne peut être utilisée qu'en ligne. Cependant, cela peut être évité et sera décrit dans un autre article.

python


cd ~/catkin_ws_java

Revenir à l'espace de travail avec

python


catkin_make

Il n'y a pas de problème si la sortie suivante est sortie

python


[100%] Built target gradle-test_pkg

Même si la sortie suivante est sortie, il n'y a pas de problème, vous pouvez donc l'ignorer.Il est possible tant qu'il n'y a pas de libellé qu'il a échoué.

python


avertissement: [options]Chemin de classe Bootstrap-source 1.Non défini avec 7

2. Exécutez rosjava

Tout ce que vous avez à faire est d'exécuter rosjava Exécutez rosjava à partir d'un fichier shell, pas à partir d'un fichier de lancement

Déplacez-vous d'abord vers l'emplacement où se trouve le script shell

python


cd ~/catkin_ws_java/src/test_pkg/test_pj/build/install/test_pj/bin

Voici le fichier shell et bat Vérifions avec la commande ls

Décidez quel nœud lancer ensuite Cette fois, ce projet a un locuteur et un auditeur Lancer d'abord Listener

Tout d'abord, si roscore n'est pas démarré, vous ne pouvez rien faire, alors démarrez-le dans un autre terminal

python


roscore

Ensuite, lancez Listner (le répertoire d'exécution est le répertoire bin)

python


bash test_pj com.github.rosjava.test_pkg.test_pj.Listener

Puis lancez Talker dans un autre terminal (déplacez-vous également vers bin avec la commande cd)

python


bash test_pj com.github.rosjava.test_pkg.test_pj.Listener

Maintenant au terminal côté Listner

python


5 10, 2018 8:20:38 h org.ros.internal.node.RosoutLogger info
information: I heard: "Hello world! 3"
5 10, 2018 8:20:39 h org.ros.internal.node.RosoutLogger info
information: I heard: "Hello world! 4"
5 10, 2018 8:20:40 h org.ros.internal.node.RosoutLogger info
information: I heard: "Hello world! 5"
5 10, 2018 8:20:41 am org.ros.internal.node.RosoutLogger info
information: I heard: "Hello world! 6"

La communication est terminée si s'affiche comme

Merci de rester avec nous pendant longtemps

A partir de maintenant, je voudrais écrire une explication détaillée de chacun, un peu plus en profondeur, et comment rendre rosjava plus facile à utiliser.

* Une addition

Il semble qu'il y ait des endroits où cela se produit par des personnes et des endroits où cela ne se produit pas En relation avec gradle, comme la création du premier package

python


Exception in thread "main" java.lang.RuntimeException
java.util.zip.ZipException: error in opening zip file

Si vous obtenez une erreur comme, essayez les méthodes suivantes

Afficher les fichiers cachés avec ctrl + H dans le répertoire de base Ensuite, vous devriez avoir un fichier .gradle Débarrassons-nous de nos cœurs et jetons simplement le dossier .gradle dans la poubelle

C'est probablement la solution. Je vous remercie pour votre travail acharné.

Recommended Posts

Une histoire sur le développement de ROS appelé rosjava avec java
[Note] Une histoire sur la modification des outils de compilation Java avec VS Code
Une histoire sur l'utilisation de l'API League Of Legends avec JAVA
Une histoire sur la prise en charge de Java 11 pour les services Web
Une histoire sur le JDK à l'ère de Java 11
Histoire d'essayer de faire fonctionner le fichier JAVA
[PHP] Histoire de la sortie de PDF avec TCPDF + FPDI
Une histoire d'essayer de s'entendre avec Mockito
Une histoire sur la réduction de la consommation de mémoire à 1/100 avec find_in_batches
Une histoire de rendre catkin_make de rosjava compatible hors ligne
Remarques sur Java GC
Une histoire bloquée avec NotSerializableException
Histoire de créer une application de gestion de tâches avec Swing, Java
À propos du comportement lors de la création d'un mappage de fichiers avec Java
Une histoire confuse sur un opérateur ternaire avec plusieurs expressions conditionnelles
Une histoire de malentendu sur l'utilisation du scanner Java (mémo)
Une histoire que j'ai eu du mal à défier le pro de la concurrence avec Java
En savoir plus sur les points de sauvegarde des transactions (avec Java)
Histoire vraiment effrayante (anti-motif Java)
À propos de l'authentification par signature avec Java Time 1
L'histoire de la création d'un lanceur de jeu avec une fonction de chargement automatique [Java]
L'histoire de la création d'un service qui raconte l'histoire du portfolio en se développant seul
Une histoire sur un projet Spring Boot écrit en Java qui prend en charge Kotlin
[Débutant] Histoire de commencer à étudier Java pour la recherche d'emploi ~ 2e mois ~
[Débutant] Une histoire sur le début de l'étude de Java pour la recherche d'emploi ~ 1er mois ~
[Débutant] Une histoire sur le début de l'étude de Java pour la recherche d'emploi ~ 5ème mois ~
[Débutant] Une histoire sur le début de l'étude de Java pour la recherche d'emploi ~ 4ème mois ~
A propos du renvoi d'une référence dans un Java Getter
[Création] Un mémorandum sur le codage en Java
Une petite histoire addictive avec def initialize
Diviser une chaîne avec ". (Dot)" en Java
Lire une chaîne dans un fichier PDF avec Java
À propos de l'obtention d'un chiffre des dizaines avec "(entier à deux chiffres) / 10% 10"
Créer un CSR avec des informations étendues en Java
Créez un tableau d'affichage simple avec Java + MySQL
[Windows] [IntelliJ] [Java] [Tomcat] Créer un environnement pour Tomcat 9 avec IntelliJ
Créons un processus chronométré avec la minuterie de Java! !!
Une histoire très utile sur la classe Struct de Ruby
[Java] Créer une collection avec un seul élément
Une histoire sur la création d'un Builder qui hérite du Builder
Préparer un environnement de scraping avec Docker et Java
L'histoire d'un nouvel ingénieur lisant un programmeur passionné
Essayez de déboguer un programme Java avec VS Code
J'ai essayé de casser le bloc avec java (1)
Créer un environnement de développement Java avec VS Code
[Jackson] Une histoire sur la conversion de la valeur de retour du type BigDecimal avec un sérialiseur personnalisé.
Une histoire sur la création de chemin PKIX a échoué lors de la tentative de déploiement sur Tomcat avec Jenkins
Lorsque j'ai installé npm sur Laravel Homestead, une erreur s'est produite lors de la correspondance avec la valeur de la somme de contrôle.