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