
【ROS2】PyCharm 启动 Gazebo 仿真报错从配置 Shell 到修复路径的全流程复盘 前言在使用 PyCharm 进行 ROS2 开发时为了方便调试我们通常会配置Run/Debug Configurations来一键启动仿真环境。但最近我在配置ros_gz_sim_demos包时遇到了一个典型的“连环坑”先是因为没加 Shell 解释器导致环境无法加载修复后又因为 Launch 文件名错误导致找不到文件。今天就来复盘一下这个问题的完整排查过程分享如何在 PyCharm 中优雅且正确地配置 ROS2 启动脚本。 报错现场与常见误区误区一直接写命令忘了“壳”很多同学在 PyCharm 的Script text里直接写source/home/user/ros2_ws/install/setup.bashros2 launch...结果毫无反应或者提示source: command not found。原因PyCharm 默认可能使用/bin/sh或者直接执行文本它不懂什么是source。你需要显式地调用 Bash。误区二Launch 文件名张冠李戴修复了 Shell 问题后终端终于开始跑代码了但又报了红字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 ...把命令包起来。✅ 正确写法模板/bin/bash-csource 你的工作空间路径/install/setup.bash 你的ROS2启动命令 为什么要这样做强制环境加载保证了只有环境加载成功后才会执行后面的启动命令。隔离性每次点击运行都会开启一个新的 Bash 进程避免旧的环境变量干扰。第二步确认正确的 Launch 文件名如果报错提示file not found说明文件名错了。不要猜直接用命令查在终端输入以下命令列出该包下所有可用的 launch 文件ls/opt/ros/jazzy/share/ros_gz_sim_demos/launch/注请根据你的 ROS2 版本humble/jazzy等替换路径中的版本号。你会发现很多时候并没有vehicle.launch.py而是叫diff_drive.launch.py或者其他名字。第三步完善环境变量防止闪退Gazebo 仿真对库路径很敏感。在 PyCharm 配置页面的Environment variables栏建议填入以下标准配置点击右侧文件夹图标添加PYTHONUNBUFFERED1; 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 textScript text:/bin/bash-csource /home/liurui/ros2_ws/install/setup.bash ros2 launch ros_gz_sim_demos diff_drive.launch.py(这里假设我们要跑的是差速小车仿真)Working directory:/home/liurui/ros2_wsEnvironment variables:(已填入上述 PATH 配置) 总结在 PyCharm 里跑 ROS2记住这句口诀“启动必带 Bash 头文件名错查目录环境变量不能丢”。按照这个流程走基本能避开 90% 的启动报错