ROS——python3包 调用自定义.py文件

问题描述

  今天发现了一个ROS工程中python包很坑的一个地方,就是难以直接import自己写的.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. 添加setup.py配置catkin_python_setup(),失败
  2. 将需要import的.py文件放到子文件夹内,并添加__init__.py,失败
  3. 将需要import的.py文件也编译成ROS的node,然后import,失败

折腾了一天,后面发现根本不用在ROS包的CMakeLists.txt里面声明:

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

需要创建成ROS节点的.py文件,只需要给予权限即可在source后,通过rosrun命令找到

chmod +x test.py

使用时将test.py换成你自己对应的.py文件

猜你喜欢

转载自blog.csdn.net/qq_16775293/article/details/116162616