[PYTHON] Erstellen einer Conda-Umgebung für ROS-Benutzer

Wenn Sie etwas wie maschinelles Lernen machen möchten, das heutzutage beliebt ist, ist es schwierig, eine Umgebung mit Python zu erstellen. Die lokale Umgebung ist auch schmutzig ... Ich sehe oft Materialien, die Anaconda oder Miniconda als Lehrmaterialien verwenden, mit denen Sie maschinelles Lernen lernen können, während Sie den Code verschieben. Und beim Erstellen dieser Umgebungen haben ROS-Benutzer oft große Probleme, aber überraschenderweise gibt es nur wenige Artikel. Deshalb habe ich beschlossen, sie hier zu belassen. Die Umgebung ist wie folgt.

Miniconda installieren

Laden Sie die 64-Bit-Version von Python 3.7 von [hier] herunter (https://docs.conda.io/en/latest/miniconda.html).

$ cd ~/Downloads
$ bash Miniconda3-latest-Linux-x86_64.sh

Führen Sie den obigen Befehl aus und fahren Sie mit der Installation gemäß den Anweisungen des Terminals fort. Schließlich werden Sie gefragt, ob Sie "conda init" ausführen möchten. Wenn Sie mit "Ja" antworten, wird der Umgebungsaufbau abgeschlossen.

Im Folgenden erfahren Sie, was passiert, wenn Sie `` `conda init``` ausführen, wenn die Installation erfolgreich ist.

Screenshot from 2019-11-24 15-35-37 (コピー).png

Es scheint, dass .bashrc bearbeitet wird, also lassen Sie uns den Inhalt vorerst überprüfen. Die folgenden Teile wurden hinzugefügt.

Screenshot from 2019-11-24 15-38-05.png

Sei hier vorsichtig!

Beim Lesen von ROS mit .bashrc wird die folgende Warnung angezeigt, wenn conda init`.

Screenshot from 2019-11-21 14-29-54 (コピー).png

Dies liegt daran, dass PYTHONPATH beim Laden der ROS-Umgebung jetzt auf /opt/ros/melodic/lib/python2.7/dist-packages verweist. Deaktivieren wir also das Laden von ROS vor der Installation.

Erstellen einer ROS-Umgebung mit conda

Geben Sie einfach den folgenden Befehl ein

$ conda create --name ros --channel conda-forge ros-core ros-actionlib ros-dynamic-reconfigure python=2.7
$ conda activate ros

Allein damit ist es bequem, eine ROS-Umgebung in der virtuellen Umgebung von conda zu erstellen. Sie können grundlegende Befehle wie Roscore, Rosrun und Roslaunch verwenden.

Selbstgemachtes Paket

Wenn Sie ROS in einer virtuellen Umgebung mit conda ausführen, handelt es sich um ein selbst erstelltes Paket, das besorgniserregend ist. Da diesmal ROS1 verwendet wird, ist catkin_make beim Erstellen von Paketen usw. in C ++ erforderlich.

https://github.com/nakano16180/roscpp_practice Ich habe dieses Mal das oben verlinkte Paket verwendet.

Festgefahrener Punkt

Ursprünglich können Sie das Github-Paket und catkin_make klonen, um es mit rosrun zu starten. Aber diesmal steckte ich hier fest. Es scheint, dass der Weg zum Pthread nicht verläuft?

Screenshot from 2019-11-28 16-50-24.png

Um dies zu lösen, habe ich CMakeLists.txt wie folgt bearbeitet.

CMakeLists.txt

CMakeLists.txt


cmake_minimum_required(VERSION 2.8.3)
project(roscpp_practice)

## Compile as C++11, supported in ROS Kinetic and newer
# add_compile_options(-std=c++11)

## Find catkin macros and libraries
## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
## is used, also find other catkin packages
find_package(catkin REQUIRED COMPONENTS
  roscpp
  std_msgs
  rosbag
)

## System dependencies are found with CMake's conventions
find_package(Boost REQUIRED COMPONENTS system)
find_package(Threads REQUIRED)  #Hier hinzugefügt


## Uncomment this if the package has a setup.py. This macro ensures
## modules and global scripts declared therein get installed
## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html
# catkin_python_setup()

###########
## Build ##
###########

## Specify additional locations of header files
## Your package locations should be listed before other locations
include_directories(
# include
  ${catkin_INCLUDE_DIRS}
)

## Declare a C++ library
# add_library(${PROJECT_NAME}
#   src/${PROJECT_NAME}/roscpp_practice.cpp
# )

## Add cmake target dependencies of the library
## as an example, code may need to be generated before libraries
## either from message generation or dynamic reconfigure
# add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})

## Declare a C++ executable
## With catkin_make all packages are built within a single CMake context
## The recommended prefix ensures that target names across packages don't collide
# add_executable(${PROJECT_NAME}_node src/roscpp_practice_node.cpp)
add_executable(talker src/talker.cpp)
add_executable(listener src/listener.cpp)
add_executable(bag_write src/bag_write.cpp)
add_executable(bag_read src/bag_read.cpp)

## Rename C++ executable without prefix
## The above recommended prefix causes long target names, the following renames the
## target back to the shorter version for ease of user use
## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node"
# set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "")

## Add cmake target dependencies of the executable
## same as for the library above
# add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})

## Specify libraries to link a library or executable target against
# target_link_libraries(${PROJECT_NAME}_node
#   ${catkin_LIBRARIES}
# )
target_link_libraries(talker
  ${catkin_LIBRARIES}
  Threads::Threads  ##Nachtrag
)
target_link_libraries(listener
  ${catkin_LIBRARIES}
  Threads::Threads  ##Nachtrag
)
target_link_libraries(bag_write
  ${catkin_LIBRARIES}
  Threads::Threads  ##Nachtrag
)
target_link_libraries(bag_read
  ${catkin_LIBRARIES}
  Threads::Threads  ##Nachtrag
)

Durch Bearbeiten wie oben konnte ich es sicher erstellen und ausführen. Screenshot from 2019-11-30 14-20-03.png

Schließlich

Ich habe bisher geschrieben, aber gehen wir so schnell wie möglich zu ROS2, das Python3 verwenden kann!

Recommended Posts

Erstellen einer Conda-Umgebung für ROS-Benutzer
[Mac] Erstellen einer virtuellen Umgebung für Python
Erstellen einer Python-Entwicklungsumgebung für die KI-Entwicklung
Erstellen einer virtuellen Umgebung für Mayavi für Python 3.6-, Anaconda- und Spyder-Benutzer
Erstellen einer Python-Umgebung mit pyenv, pyenv-virtualenv, Anaconda (Miniconda)
Empfehlung zum Erstellen einer tragbaren Python-Umgebung mit conda
Erstellen einer R- und Python Docker-Arbeitsumgebung
Aufbau einer Trainingsumgebung für Penetrationstests mit Naumachia
Vorgehensweise zum Erstellen einer CDK-Umgebung unter Windows (Python)
conda Hinweis: Erstellen einer Python-Umgebung mit Spacon ITO
Python-Umgebungskonstruktion für Programmieranfänger (Mac OS)
Erstellen einer virtuellen Python-Umgebung
Konstruktionsnotiz für eine maschinelle Lernumgebung von Python
Aufbau einer Python-Umgebung für künstliche Intelligenz (Chainer / TensorFlow / CSLAIER)
Erstellen einer Entwicklungsumgebung für Android-Apps - Erstellen von Android-Apps mit Python
Erstellen einer Hy-Umgebung für Lisper, der Python nicht berührt hat
Erstellen einer Kubernetes-Umgebung mit ansible 2
Erstellen einer Python-Umgebung auf einem Mac
Erstellen einer Python-Umgebung unter Ubuntu
Erstellen einer virtuellen Umgebung mit Python 3
Erstellen einer Kubernetes-Umgebung mit ansible 1
Erstellen einer Docker-Arbeitsumgebung für R und Python 2: Japanische Unterstützung
Wie wäre es mit Anaconda zum Erstellen einer maschinellen Lernumgebung mit Python?
Erstellen einer Windows 7-Umgebung für eine Einführung in das maschinelle Lernen mit Python
[Pyenv] Erstellen einer Python-Umgebung mit Ubuntu 16.04
Erstellen einer virtuellen Umgebung mit homebrew + pyenv-virtualenv
Erstellen einer LaTeX-Umgebung unter Chrome OS
Erstellen wir eine virtuelle Umgebung für Python
Erstellen einer Python 3.6-Umgebung mit Windows + PowerShell
ROS-Kurs 107 Machen Sie einen Kunden für Rosblidge
Erstellen einer Entwicklungsumgebung für maschinelles Lernen
Erstellen einer Umgebung für "Tello_Video" mit Raspbian
Erstellen einer Umgebung für "Tello_Video" unter Windows
Vorgehensweise zum Erstellen einer Kube-Umgebung unter Amazon Linux2 (aws) ~ (mit Bonus)
Selen + WebDriver (Chrome) + Python | Erstellen einer Umgebung zum Scraping
Bereiten Sie eine Programmiersprachenumgebung für die Datenanalyse vor
Erstellen einer Python-Umgebung mit virtualenv und direnv
Erstellen einer Umgebung zum Ausführen von Python-Skripten (für Mac)
Erstellen einer Anaconda-Umgebung für Python mit pyenv
Ich habe versucht, eine Docker-Datei für die Entwicklungsumgebung von Django zu erstellen
ROS-Umgebung einrichten ①
Erstellen einer Umgebung für matplotlib + cartopy auf einem Mac
[Python] Webentwicklungsvorbereitung (Erstellen einer virtuellen Umgebung)
Denken Sie daran, eine Python 3-Umgebung in einer Mac-Umgebung zu erstellen
Befehle zum Erstellen einer Python3-Umgebung mit virtualenv
Erstellen Sie eine Kubernetes-Umgebung für die Entwicklung unter Ubuntu
Verfahren zum Erstellen einer Python-Isolationsumgebung (venv-Umgebung)
Versuchen Sie, mit VisualStudioCode eine Umgebung für MayaPython zu erstellen
Hinweise zum Erstellen einer Python-Umgebung durch Anfänger
Erstellen einer Python-Umgebung auf dem Sakura VPS-Server
Erstellen Sie eine mruby-Entwicklungsumgebung für ESP32 (Linux Edition)
Vorgehensweise beim Erstellen von Ubuntu als virtuelle Umgebung mit Vagrant + Virtualbox für LPIC Level 1.
Erstellen Sie eine lokale Entwicklungsumgebung für Laravel6.X auf Ihrem Mac
Erstellen einer Umgebung für "Tello_Video" unter Mac OS X.
Erstellen Sie mit pyenv-virtualenv eine Python-Umgebung für jedes Verzeichnis
Erstellen einer TensorFlow-Umgebung, die GPUs unter Windows 10 verwendet
Erstellen einer Umgebung für die Verarbeitung natürlicher Sprache mit Python