Je ne sais pas comment importer une collection de fonctions qui ne sont pas liées à mon propre ROS dans un package ROS, donc jusqu'à présent, j'ai créé un package ROS dédié et je l'ai importé. Après tout, je voulais le rendre indépendant, alors j'ai essayé une méthode comme celle-là avec essais et erreurs.
catkin_ws
├─ build
├─ devel
└─ src
├─ my_py_utils
│ ├── __init__.py(Fichier vide)
│ └── util_functions.py
└─ my_ros_pkg
├── CMakeLists.txt
├── __init__.py(Fichier vide)
├── package.xml
└── src
├── __init__.py
└── robot_controller.py
C'est presque comme ça. Ici, envisagez d'utiliser la fonction (do_something) dans util_functions.py de robot_controller.py.
dans robot_controller.py
from my_py_utils.util_functions import do_something
Est inséré. ↓
ImportError: No module named my_py_utils.util_functions
devenir.
dans robot_controller.py
from ...my_py_utils.util_functions import do_something
Est inséré. ↓ pycharm le reconnaît, mais quand il s'agit de `` rosrun```
ValueError: Attempted relative import in non-package
devenir.
dans robot_controller.py
import sys
sys.path.append('/home/[UserName]/catkin_ws/src')
from my_py_utils.util_functions import do_something
Est inséré. ↓ Cela fonctionne correctement!
Après tout, j'ai seulement essayé la méthode d'importation en tant que python normal, mais il est gênant de spécifier le chemin absolu, et j'ai une théorie selon laquelle je devrais utiliser ROS package.xml, donc j'aimerais essayer à nouveau. (Je veux que quelqu'un me dise) De plus, je ne comprenais pas grand-chose à Python ou ROS que je ne le pensais (´ ・ ω ・ `). Faisons de notre mieux.
Recommended Posts