# 3.2 ROS2工作空间介绍 上一节给大家介绍了一下节点,运行一个节点的时候使用的是 ``` ros2的run+包名+节点名称 ``` 那你有没有想过,我们想找到一个节点,就必须要先知道它在哪个包,那问题就来了,想要找到某个包,该去哪里找? **答案就是:工作空间** > 注意:一个工作空间下可以有多个功能包,一个功能包可以有多个节点存在 ## 1. 工作空间是什么 小鱼定义:工作空间是包含若干个功能包的目录,一开始大家把工作空间理解成一个文件夹就行了。这个文件夹包含下有`src`。所以一般新建一个工作空间的操作就像下面一样: ```shell mkdir -p turtle_ws/src cd turtle_ws/src ``` 是不是觉得就像创建一个目录(其实就是创建一个目录) 创建完目录就可以下载代码到`src`文件下进行编译运行了。 ## 2.该如何找到工作空间下的功能包 第二讲中,刚安装完ros2,大家使用ros2指令会出现下面的错误: ![image-20210720102200144](3.2ROS2工作空间介绍/imgs/image-20210720102200144.png) 不要怕,跟着小鱼输入一句话: ``` source /opt/ros/foxy/setup.bash ``` 再尝试一下,就可以了。 ![image-20210720102349238](3.2ROS2工作空间介绍/imgs/image-20210720102349238.png) 原因就在于,ros2这个指令本身和ros2自带的turtle_sim小乌龟模拟器都是在`/opt/ros/foxy/`这个目录下的,所以需要`source`这个指令让系统去这个目录找ros2和功能包,这个目录其实就是一个工作空间。 要想找到某个工作空间下的功能包,就去`source`一下这个工作空间对应的`setup.bash`文件就行了。 > 小鱼:刚刚你可只创建了一个src文件夹,没看到setup.bash文件呀?别着急,下一讲就会告诉大家如何生成这个文件。 > ## 3.功能包也分优先级 大家有没有想过,如果在系统的`/opt/ros/foxy/`目录下已经有了名字叫A的功能包了,我现在自己创建了一个工作空间,我也建立一个名字叫做A的功能包,然后我来运行A功能包下的某个节点,到底运行的是系统目录下的,还是自己的目录下的呢? **答案是自己的,这个叫做后来者的工作空间居上原则** 介绍完工作空间,接下来就可以讲讲ROS2的编译工具了~