ROS - python3 パッケージがカスタム .py ファイルを呼び出す

問題の説明

  今日、ROS プロジェクトの Python パッケージの落とし穴を発見しました。それは、自分で作成した .py ファイルを直接インポートするのが難しいということです。

コマンドを直接使用する

python3 test.py

実行には問題ありませんが、rosrun または roslaunch コマンドを使用すると、エラーが報告されます。

rosrun control test.py
roslaunch control xxx.launch

エラーメッセージは次のとおりです。

Traceback (most recent call last):
  File "/home/lanx/Program/robot/devel/lib/control/test.py", line 15, in <module>
    exec(compile(fh.read(), python_script, 'exec'), context)
  File "/home/lanx/Program/robot/src/control/scripts/test.py", line 5, in <module>
    import Agent
ModuleNotFoundError: No module named 'Agent'

問題の原因

  ネットで色々な方法を試してみましたが、

  1. catkin_python_setup() を設定するために setup.py を追加しましたが、失敗しました
  2. インポートする必要がある .py ファイルをサブフォルダーに配置し、__init__.py を追加します。失敗しました
  3. ROS ノードにインポートする必要がある .py ファイルをコンパイルしてインポートしますが、失敗します。

1 日苦労した結果、ROS パッケージの CMakeLists.txt で宣言する必要がないことがわかりました。

catkin_install_python(PROGRAMS
  scripts/test.py
  DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

ROS ノードとして作成する必要がある .py ファイルは、許可を与えることでソースの後に rosrun コマンドを使用して見つけることができます。

chmod +x test.py

使用する場合は、test.py を対応する独自の .py ファイルに置き換えてください。

おすすめ

転載: blog.csdn.net/qq_16775293/article/details/116162616