BeagleBone Black运行ROS项目launch文件报节点路径错误求助
错误诱因
- 功能包名称拼写错误:launch文件中
pkg属性填写的是pulse_sensor,但实际工作空间下的功能包文件夹名为puls_sensor(缺少字母e),ROS无法匹配到对应功能包,这是最核心的错误原因。 - 节点执行文件名拼写错误:launch文件中第三个节点的
type属性写为do_filter__calc.py(两个连续下划线),与实际文件名do_filter_calc.py不一致。 - Python脚本未配置可执行权限:存放在scripts目录下的
.py节点文件如果没有执行权限,ROS无法识别为可执行节点。 - CMakeLists.txt未正确配置脚本安装规则:功能包的CMakeLists.txt没有声明scripts目录下的Python脚本为可执行安装项,编译后ROS无法索引到节点文件。
- 脚本缺少shebang声明:Python脚本首行未添加对应Python版本的shebang声明,系统无法识别脚本的执行环境。
排查解决步骤
- 修正功能包名称拼写,两种方案二选一:
- 方案1:将launch文件中所有
pkg = "pulse_sensor"修改为pkg = "puls_sensor",和实际文件夹名保持一致 - 方案2:将
~/catkin_ws/src/下的puls_sensor文件夹重命名为pulse_sensor,和launch中的包名匹配
- 修正节点文件名拼写:将launch文件中第三个节点的
type="do_filter__calc.py"修改为type="do_filter_calc.py",删除多余的下划线。
- 修正节点文件名拼写:将launch文件中第三个节点的
- 给Python脚本添加可执行权限,进入scripts目录执行命令:
chmod +x *.py- 检查Python脚本首行声明:确保所有
.py节点文件的第一行添加了对应Python版本的shebang,ROS Melodic默认使用Python2的话写#!/usr/bin/env python2,使用Python3的话写#!/usr/bin/env python3。
- 检查Python脚本首行声明:确保所有
- 修正CMakeLists.txt配置:打开功能包下的
CMakeLists.txt,找到catkin_install_python相关配置段,取消注释并添加所有脚本文件:
同时确认catkin_install_python(PROGRAMS scripts/fotopletysmograf.py scripts/lp_filter.py scripts/do_filter_calc.py scripts/evaluate_data.py DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} )package.xml中已添加<exec_depend>python</exec_depend>(使用Python3则改为<exec_depend>python3</exec_depend>)。- 修正CMakeLists.txt配置:打开功能包下的
- 重新编译工作空间:回到catkin_ws根目录执行编译并刷新环境:
catkin_make source devel/setup.bash- 验证节点可访问性:编译完成后执行以下命令验证ROS是否能找到节点,不报错即为配置正常:
rospack find puls_sensor # 替换为你最终使用的功能包名 rosrun puls_sensor fotopletysmograf.py --help
内容的提问来源于stack exchange,提问作者Nicholai Mørch Rindarøy
相关产品推荐
相关产品推荐

