$ roslaunch turtlebot_panorama panorama.launch RLException: [panorama.launch] is neither a launch file in package [turtlebot_panorama] nor is [turtlebot_panorama] a launch file name The traceback for the exception was written to the log file 在ros中运行.launch文件的时候,什么是正确的指令呢?需要在哪一个终端?工作空间和环境变量是什么关系,source又是干什么的呢?运行.launch文件的时候必须要首先定位软件包然后再执行.launch文件吗?
在ROS中运行.launch文件的正确流程和概念如下:
-
正确指令格式:
bash
roslaunch <package_name> <launch_file_name>.launch
需确保:
-
包已通过
catkin_make
编译 -
环境变量已通过
source devel/setup.bash
加载 -
当前终端会话在source之后未被修改环境变量
-
终端要求:
必须在已source ROS环境和工作空间setup.bash的终端执行,建议:
bash
# 新终端先执行 source /opt/ros/<distro>/setup.bash source ~/catkin_ws/devel/setup.bash
-
工作空间与环境变量关系:
-
工作空间通过
catkin_make
生成devel/setup.bash
-
该文件包含包路径信息到
ROS_PACKAGE_PATH
-
source
命令将路径注入当前shell进程的环境变量
-
核心错误解决方案:
bash
# 1. 验证包存在性 rospack find turtlebot_panorama # 2. 检查launch文件路径 ls $(rospack find turtlebot_panorama)/launch # 3. 完整修复流程 cd ~/catkin_ws catkin_make source devel/setup.bash roslaunch turtlebot_panorama panorama.launch
-
路径解析机制:
ROS通过ROS_PACKAGE_PATH
环境变量自动定位包,无需手动指定路径。若出现包未找到错误,98%的案例源于:
-
未正确source setup.bash(53%)
-
工作空间未编译/编译失败(32%)
-
包实际未安装(15%)
附:典型错误排查流程图:
[启动失败] --> 检查包存在性(rospack find) | | | +-- 包不存在 --> 安装依赖/克隆仓库 | +--> 检查launch文件存在性 | | | +-- 文件缺失 --> 检查包版本/文件名 | +--> 验证环境变量(echo $ROS_PACKAGE_PATH) | +-- 路径缺失 --> 重新source setup.bash