ROS自定义Python节点启动报错:Roslaunch提示文件或目录不存在
解决ROS Launch找不到Python节点脚本的问题
咱们一步步来排查解决这个「No such file or directory」的问题:
1. 先修正执行权限的命令(你之前路径写错了!)
你之前执行的chmod 777 /contact_charger -R完全不对,目标路径应该是你的Python脚本所在位置,正确的命令是:
chmod +x /home/ubuntu/catkin_ws/src/contact_charging/nodes/contact_charging.py
执行完后,用ls -l检查脚本权限,确保末尾有x标记(代表可执行):
ls -l /home/ubuntu/catkin_ws/src/contact_charging/nodes/contact_charging.py
2. 给Python脚本加上Shebang头
打开你的contact_charging.py,在第一行必须加上这行代码(根据你用的Python版本选):
- 如果你用Python2:
#!/usr/bin/env python - 如果你用Python3:
#!/usr/bin/env python3
ROS需要这个头来识别用什么程序执行你的脚本,没有它即使有权限也可能报错。
3. 正确配置包内的setup.py
你说在「根目录」创建了setup.py,这是错误的!setup.py必须放在你的ROS包目录下,也就是/home/ubuntu/catkin_ws/src/contact_charging/这个文件夹里。
把下面的内容复制到这个setup.py里:
from distutils.core import setup from catkin_pkg.python_setup import generate_distutils_setup d = generate_distutils_setup( packages=['contact_charging'], package_dir={'': 'src'} ) setup(**d)
另外,确保你的包目录结构规范,src/contact_charging下要有__init__.py(空文件就行),这样catkin才能正确识别Python模块。
4. 检查Launch文件的节点配置
可以尝试在node标签里加上launch-prefix强制用Python运行脚本,修改后的launch节点部分:
<node pkg="contact_charging" type="contact_charging.py" name="contact_charging" output="screen" launch-prefix="python"></node>
这能绕过ROS自动查找可执行文件的逻辑,直接调用Python解释器运行脚本。
5. 重新编译并刷新环境
这一步非常关键,很多人编译后忘了source环境:
cd ~/catkin_ws catkin_make source devel/setup.bash
之后可以先单独用rosrun测试脚本能不能运行,排除launch文件的问题:
rosrun contact_charging contact_charging.py
如果这个命令能正常启动,那再用roslaunch就没问题了。
内容的提问来源于stack exchange,提问作者KiKiPOV
相关产品推荐
相关产品推荐

