ROS Python - 自作サービスのインポートエラー


エラー

Pythonノードで自作Serviceのライブラリが読み込めないエラーが発生しました

my_server.py
...

from my_servs.srv import *

...
error
Traceback (most recent call last):
  File "/home/hoshina/catkin_ws/src/pca_server/scripts/pca_server.py", line 3, in <module>
    from pca_server_srvs.srv import *
ModuleNotFoundError: No module named 'pca_server_srvs'

serviceのpythonライブラリが生成されているか確認

ls ~/catkin_ws/devel/lib/python3/dist-packages 

>> my_srvs 
生成されていればオッケー

>> 
何も出なければだめ

次のサンプルをビルドしてserviceのライブラリが生成されるか確認
https://github.com/fairlight1337/ros_service_examples

git clone https://github.com/fairlight1337/ros_service_examples.git

catkin build

ls ~/catkin_ws/devel/lib/python3/dist-packages 

>> ros_service_examples
オッケー,このリポジトリのCMakeLists.txtとpackage.xmlを参考にして、自分のものを修正する

エラーが治らない場合

pythonに以下を追加してライブラリのパスが通っているか確認

import sys
print(sys.path)

パスが通っていない場合は

source ~/catkin_ws/devel/setup.bash

をしたり、ターミナルを再立ち上げしたりする

C++でincludeできない場合

catkin_ws/devel/include/ 内にヘッダーファイルが生成されているか確認

ない場合

serviceパッケージのCMakeLists.txt内に

generate_messages()

を入れ忘れている可能性大

環境

  • ubuntu 20.04
  • ros noetic