【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% 的启动报错!

相关推荐
丑大王19 小时前
ultralytics 环境安装与正确使用Vscode
ide·yolo·编辑器
golang学习记20 小时前
Python vs Go:2026年到底该怎么选
java·vscode·python·golang·pycharm·goland
兮动人21 小时前
Chrome 152 升级后本地请求全挂了?是 LNA 策略在搞事
前端·chrome·lna·local network
lhh_qrsly1 天前
TI CCS(Code Composer Studio,德州仪器嵌入式 IDE)2015~2026 版本总览
ide·php·composer
1024奇点2 天前
【仓颉语言入门 · 第二篇 第 8 课】
开发语言·数据库·ide·mysql·开源
xiaoye-duck2 天前
《C++ 项目:手写大模型接入 SDK》Trae IDE 开发环境搭建与依赖管理
c++·ide·语言模型
一只笨菜鸟2 天前
IDEA如何让多个项目同时显示
java·ide·intellij-idea
Frag0ut3 天前
Chrome最新版不再支持Win7?解决方案与原因解析
chrome·谷歌浏览器·windows7·supermium·firefox esr·chrome 109
前程6193 天前
我用 Chrome 插件把小红书的灵感收集做成了有字段的工作流
chrome
哎写bug的程序员3 天前
关于VSCode上gcc,gdb的安装配置问题
ide·vscode·编辑器