Ich weiß nicht, wie ich eine Sammlung von Funktionen, die nicht mit meinem eigenen ROS zusammenhängen, in ein ROS-Paket importieren kann. Daher habe ich bis jetzt ein dediziertes ROS-Paket erstellt und dieses importiert Schließlich wollte ich es unabhängig machen, also habe ich eine solche Methode mit Versuch und Irrtum ausprobiert.
catkin_ws
├─ build
├─ devel
└─ src
├─ my_py_utils
│ ├── __init__.py(Leere Akte)
│ └── util_functions.py
└─ my_ros_pkg
├── CMakeLists.txt
├── __init__.py(Leere Akte)
├── package.xml
└── src
├── __init__.py
└── robot_controller.py
Es ist fast so. Erwägen Sie hier die Verwendung der Funktion (do_something) in util_functions.py aus robot_controller.py.
in robot_controller.py
from my_py_utils.util_functions import do_something
Wird eingefügt. ↓
ImportError: No module named my_py_utils.util_functions
werden.
in robot_controller.py
from ...my_py_utils.util_functions import do_something
Wird eingefügt. ↓ Pycharm erkennt es, aber wenn es um "Rosrun" geht
ValueError: Attempted relative import in non-package
werden.
in robot_controller.py
import sys
sys.path.append('/home/[UserName]/catkin_ws/src')
from my_py_utils.util_functions import do_something
Wird eingefügt. ↓ Es funktioniert richtig!
Immerhin habe ich nur die Methode zum Importieren als normales Python ausprobiert, aber es ist schwierig, den absoluten Pfad anzugeben, und ich habe die Theorie, dass ich ROS package.xml verwenden sollte, also würde ich es gerne noch einmal versuchen. (Ich möchte, dass es mir jemand sagt) Außerdem habe ich nicht viel über Python oder ROS verstanden, als ich erwartet hatte (´ ・ ω ・ `). Geben wir unser Bestes.
Recommended Posts