博客地址:https://www.cnblogs.com/zylyehuo/
系统环境:ros1 noetc
问题描述
launch文件不能用tab补全
全部手敲是能运行的(执行完 source ./devel/setup.bash)
解决方法
Tab 补全失败的原因通常是 ROS 的包索引缓存(rospack cache)没有更新。
在终端执行以下命令,强制刷新 ROS 的包索引
rospack profile

原因分析
-
Tab 补全的机制: ROS 的 Tab 补全(bash completion)并不像 roslaunch 运行命令那样直接实时去扫描所有文件夹。为了速度,它依赖一个缓存列表。
-
缓存滞后: 当你创建一个新的功能包(package)或者在一个包里新加了文件时,这个缓存列表并不总是立刻自动更新。虽然 source ./devel/setup.bash 告诉了系统"我的新包在哪里",但 Tab 补全工具查的还是旧的"户口本"。
-
rospack profile 的作用: 这个命令相当于让 ROS 重新扫描一遍 ROS_PACKAGE_PATH 下的所有目录,并修复缓存。通常新建了包之后,最好都手动敲一下这个命令。