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 解释器,这样就不会因为环境问题而报错了。