首先是如何创建一个工作空间的呢?
$ mkdir -p ~/overlay_ws
$ cd ~/overlay_ws
这样,overlay_ws就是一个工作空间了。
那么,工作空间的覆盖是怎么回事呢?
同一个工作空间下,不允许出现同名的功能包,否则无法编译。不同工作空间下,允许出现同名的功能包,但会出现工作空间覆盖的现象。
ros工作空间的路径记录在ROS_PACKAGE_PATH环境变量中,可以通过env命令查看计算机中的环境变量,再利用管道过滤出有关ros的环境变量。
env | grep ros
新添加的工作空间路径会自动放置在ROS_PACKAGE_PATH环境变量最前端。ros运行时,会按照顺序从前往后查找工作空间中是否存在指定的功能包。一旦找到指定的功能包就不再查找后面的工作空间。因此,如果我们的系统当中存在名称相同的功能包,就会出现工作空间向后覆盖的问题。当我们使用rospack find命令查找功能包的时候,只能查找到最新路径下的同名功能包,而一旦有第三方功能包依赖于原来的同名功能包,就有可能会出现问题。