You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 10:12:36