3.2ROS2工作空间介绍.md 2.3 KB

3.2 ROS2工作空间介绍

上一节给大家介绍了一下节点,运行一个节点的时候使用的是

ros2的run+包名+节点名称

那你有没有想过,我们想找到一个节点,就必须要先知道它在哪个包,那问题就来了,想要找到某个包,该去哪里找?

答案就是:工作空间

注意:一个工作空间下可以有多个功能包,一个功能包可以有多个节点存在

1. 工作空间是什么

小鱼定义:工作空间是包含若干个功能包的目录,一开始大家把工作空间理解成一个文件夹就行了。这个文件夹包含下有src。所以一般新建一个工作空间的操作就像下面一样:

mkdir -p turtle_ws/src
cd turtle_ws/src

是不是觉得就像创建一个目录(其实就是创建一个目录)

创建完目录就可以下载代码到src文件下进行编译运行了。

2.该如何找到工作空间下的功能包

第二讲中,刚安装完ros2,大家使用ros2指令会出现下面的错误:

image-20210720102200144

不要怕,跟着小鱼输入一句话:

source /opt/ros/foxy/setup.bash

再尝试一下,就可以了。

image-20210720102349238

原因就在于,ros2这个指令本身和ros2自带的turtle_sim小乌龟模拟器都是在/opt/ros/foxy/这个目录下的,所以需要source这个指令让系统去这个目录找ros2和功能包,这个目录其实就是一个工作空间。

要想找到某个工作空间下的功能包,就去source一下这个工作空间对应的setup.bash文件就行了。

小鱼:刚刚你可只创建了一个src文件夹,没看到setup.bash文件呀?别着急,下一讲就会告诉大家如何生成这个文件。

3.功能包也分优先级

大家有没有想过,如果在系统的/opt/ros/foxy/目录下已经有了名字叫A的功能包了,我现在自己创建了一个工作空间,我也建立一个名字叫做A的功能包,然后我来运行A功能包下的某个节点,到底运行的是系统目录下的,还是自己的目录下的呢?

答案是自己的,这个叫做后来者的工作空间居上原则

介绍完工作空间,接下来就可以讲讲ROS2的编译工具了~