ROS catkin_make 使用记录
编译指定 ROS 包
# 编译指定 ros 包
catkin_make -DCATKIN_WHITELIST_PACKAGES="package1;package2"
# 或
catkin_make --only-pkg-with-deps <target_package>
异常记录
- ModuleNotFoundError: No module named ‘***’
执行 python 脚本节点时,缺少指定库文件而报错。
解决方法:
1> 检查当前环境中包含指定的库并且安装正确。 - 当环境中确定包含第三方库,仍然报错
检查 ros 包的 CMAkeLists.txt 文件是否使用了 catkin_install_python() 函数。 ROS 包在执行时会优先使用函数catkin_install_python() 指定的 python 来运行节点,而不使用 python 文件首行指定的 python 环境也不会使用 terminal 正在运行的 python 环境。其优先级如下:
catkin_install_python() 指定 > python 脚本指定 > terminal 环境运行
所以当 catkin_install_python() 函数中指定的 python 解释器和预计的 python 解释器不同时,也会报错。
解决方法:
1> 修改 catkin_install_python() 函数中的python解释器。
2> 或者在 devel/lib 路径下找到指定的 ROS 包以及名称对应的 python 文件,修改该 python 文件中的解释器。
3> 或者重新编译报错的包,并在编译时指定使用的 python 解释器。
# 编译时使用指定 python
catkin_make -DPYTHON_EXECUTABLE=/home/wy/anaconda3/envs/YOLO/bin/python3
4> 也可以不使用 catkin_install_python() 函数,只在对应的 python 脚本中指定 python 解释器,这样就不会因为环境问题而报错了。
本文记录了在使用ROS的catkin_make编译指定包时遇到的异常情况,特别是关于ModuleNotFoundError的问题。当执行Python脚本时,如果缺少指定库,可能是因为ROS包的CMakeLists.txt文件中catkin_install_python()函数设置不当,导致使用了错误的Python解释器。解决方法包括检查环境、修改catkin_install_python()函数、直接修改Python文件中的解释器或避免使用catkin_install_python()。编译时可通过指定PYTHON_EXECUTABLE环境变量来确保使用正确的Python环境。
2859

被折叠的 条评论
为什么被折叠?



