【ROS2】PyCharm 启动 Gazebo 仿真报错?从配置 Shell 到修复路径的全流程复盘

【ROS2】PyCharm 启动 Gazebo 仿真报错?从配置 Shell 到修复路径的全流程复盘

📝 前言

在使用 PyCharm 进行 ROS2 开发时,为了方便调试,我们通常会配置 Run/Debug Configurations 来一键启动仿真环境。但最近我在配置 ros_gz_sim_demos 包时遇到了一个典型的"连环坑":先是因为没加 Shell 解释器导致环境无法加载,修复后又因为 Launch 文件名错误导致找不到文件。

今天就来复盘一下这个问题的完整排查过程,分享如何在 PyCharm 中优雅且正确地配置 ROS2 启动脚本。

🚨 报错现场与常见误区

误区一:直接写命令,忘了"壳"

很多同学在 PyCharm 的 Script text 里直接写:

bash 复制代码
source /home/user/ros2_ws/install/setup.bash && ros2 launch ...

结果: 毫无反应,或者提示 source: command not found。

原因: PyCharm 默认可能使用 /bin/sh 或者直接执行文本,它不懂什么是 source。你需要显式地调用 Bash。

误区二:Launch 文件名张冠李戴

修复了 Shell 问题后,终端终于开始跑代码了,但又报了红字:

text 复制代码
file 'vehicle.launch.py' was not found in the share directory of package 'ros_gz_sim_demos' which is at '/opt/ros/jazzy/share/ros_gz_sim_demos'

原因: 你用的文件名(如 vehicle.launch.py)在当前版本的包里根本不存在。

🛠️ 全流程解决方案

第一步:必须添加 Shell 解释器(最关键!)

在 PyCharm 的 Run/Debug Configurations -> Script text 中,千万不要直接写 ROS 命令。必须用 /bin/bash -c "..." 把命令包起来。

✅ 正确写法模板:

bash 复制代码
/bin/bash -c "source <你的工作空间路径>/install/setup.bash && <你的ROS2启动命令>"

💡 为什么要这样做?

  • 强制环境加载: && 保证了只有环境加载成功后,才会执行后面的启动命令。
  • 隔离性: 每次点击运行,都会开启一个新的 Bash 进程,避免旧的环境变量干扰。

第二步:确认正确的 Launch 文件名

如果报错提示 file not found,说明文件名错了。不要猜,直接用命令查!

在终端输入以下命令,列出该包下所有可用的 launch 文件:

bash 复制代码
ls /opt/ros/jazzy/share/ros_gz_sim_demos/launch/

注:请根据你的 ROS2 版本(humble/jazzy等)替换路径中的版本号。

你会发现,很多时候并没有 vehicle.launch.py,而是叫 diff_drive.launch.py 或者其他名字。

第三步:完善环境变量(防止闪退)

Gazebo 仿真对库路径很敏感。在 PyCharm 配置页面的 Environment variables 栏,建议填入以下标准配置(点击右侧文件夹图标添加):

text 复制代码
PYTHONUNBUFFERED=1;
LD_LIBRARY_PATH=/home/liurui/ros2_ws/install/my_robot_controller/lib:/opt/ros/jazzy/lib:$LD_LIBRARY_PATH;
PYTHONPATH=/opt/ros/jazzy/lib/python3.12/site-packages:/home/liurui/ros2_ws/install/my_robot_controller/lib/python3.12/site-packages

(注意:请将路径中的 liurui 和 my_robot_controller 替换为你自己的用户名和功能包名)

🚀 最终成功配置示例

经过上述修正,你的 PyCharm 配置应该是这样的:

  • Execute: 选择 Script text

  • Script text:

    bash 复制代码
    /bin/bash -c "source /home/liurui/ros2_ws/install/setup.bash && ros2 launch ros_gz_sim_demos diff_drive.launch.py"

    (这里假设我们要跑的是差速小车仿真)

  • Working directory: /home/liurui/ros2_ws

  • Environment variables: (已填入上述 PATH 配置)

💡 总结

在 PyCharm 里跑 ROS2,记住这句口诀:"启动必带 Bash 头,文件名错查目录,环境变量不能丢"。按照这个流程走,基本能避开 90% 的启动报错!

相关推荐
风华同学3 小时前
vscode远程连接
ide·vscode·编辑器
kiss strong4 小时前
idea显示前进后退按钮
java·ide·intellij-idea
ShuiShenHuoLe6 小时前
Visual Studio 2022 Community 下载指南
ide·visual studio
程序员-Benothing7 小时前
Shell脚本入门教程:Shebang、变量、注释与执行方式
前端·chrome
梦幻通灵7 小时前
IDEA导入外部Jar包进行反编译
pycharm·intellij-idea·jar
西索斯coding7 小时前
GPT-5.3-Codex 接口报 422 Unprocessable Entity 怎么办?排查到最后发现是 messages role 顺序校验的坑
chrome·gpt·ai·iphone
一路向北he17 小时前
trae或者vscode定义了文件,但是文件不亮是灰的
ide·vscode·编辑器
Frag0ut21 小时前
Chrome与Chromium内核浏览器在Windows 11上的新特性全景解析
前端·chrome·windows·web安全·chromium·gemini ai·playready drm
happylifetree1 天前
Python06-08:Python开发工具PyCharm安装
python·pycharm
啃火龙果的兔子1 天前
Google Chrome(谷歌浏览器)常用快捷键
前端·chrome