前言:
最近在学习ros,为毕设作准备,和师兄交流过,想了想还是先把A*的路径规划给做完,然后在去做动态无限充电的实验好了。
目前学习的视频还是经典中的经典,古月ros21讲,这个看完之后再去看师兄推荐的文章。
vscode开发ROS1(3)-创建第一个ROS项目 - 穆士凝魂的文章 - 知乎
https://zhuanlan.zhihu.com/p/275654322
长路漫漫,要好好加油!
之所以写博客是因为发现自己不做记录之前所学的真的会忘的一干二净,所以还是得勤作记录。
之前也捣鼓了用github+hexo去发博客,但是还是存在一些问题,这个还要再去解决解决。
文中若有错误恳请大佬指正
正文:
目前学习到了第九讲《创建工作空间和功能包》。
定义:
工作空间:就是keil中的project文件夹,里面分为四个主要的文件夹
第一个文件夹:src:代码空间(source Space) ——用来存放功能包的,包括功能包的代码,配置文件等。
第二个文件夹:build:编译空间(Build Space)——存放编译过程中存放的中间文件。不用太过关心。
第三个文件夹:devel:开发空间(Development Space)——编译生成的文件,脚本等都是在这个文件中进行运行的。
第四个文件夹:install:安装空间(Install Space)——类似于安装路径。
创建工作空间的步骤:
1.创建工作空间:打开主文件夹,点击右键选择在终端打开 (也可以直接ctrl+alt+t),随后依次输入下列代码
也可以输入以下代码。
mkdir carkin_ws
cd carkin_ws/
mkdir src
cd src
atkin_init_workspace
这样弄虽然复杂但对于初学者来说,挺有益的,做完一步可以查看你所建的catkin_ws文件夹中的变化
代码输入完成后,最后产生一个.txt的文件就算成功了。说明当前路径是ros的工作空间了。
ps:画框的为自定义文件名,随意取。但是后面的src必须是scr,以作为 workspace的src(代码空间)
$catkin_init_workspace用于初始化当前文件夹
2.编译工作空间:在终端输入以下代码
cd ..
是为了返回工作空间的根目录,也就是刚才创建的catkin_ws文件夹的位置,可以使用pwd指令来查看当前位置。
catkin_make
此命令为ros中catkin编译工作器提供的编译工作指令(简单来说就是编译程序的指令)。
ps:该指令会编译src下的所有功能包的源码,结果会放到delve和install中。输入该指令后会发现只会产生devel和build两个文件夹,想要产生install这需要输入这个指令、
catkin_make install
3.创建功能包:输入指令
cd src
catkin_create_pkg teest_pkg roscpp rospy std_msgs
注:因为是在src文件夹中建立功能包,所以应该要先cd到src这个文件夹的路径下。
创建功能包的代码为
解释:”catkin_create_pkg“为创建功能包指令,<>中为功能包的名称,后面的depend为功能包的依赖,可以理解为C语言里面的调用库 #include<stido.h>。你需要调用什么库就在建立的时候加什么depend。
视频中的代码为:catkin_create_pkg teest_pkg roscpp rospy std_msgs
roscpp——是为了调用ros中的C++接口来写程序;rospy——是为了调用ros中的python接口来写程序;std_msgs——ros中定义的标准的消息结构(如:int等)
成功后会在src文件夹中出现teest_okg文件夹(裂开手抖多打了一个e,写文件才发现)
该文件夹下有这样一些文件
具体的作用:
src文件用于存放功能包代码;include用于存放头文件例如C++中的.h文件;CMakeLists和package文件存在能说明这个文件夹是一个功能包文件夹,它们是每个功能包必须存在的文件。
编译功能包:
注:要回到工作空间文件夹的根目录来,才能进行编译
编译的效果图如下,能显示多了一个名为teest_pkg的功能包
如果要运行功能包里面的某一个程序,需要先设置一下工作空间的环境变量
4.设置环境变量:(作用:上传功能包路径给“总部”)
source devel/setup.bash
只有这样设置了,系统才能找到我们的工作空间以及工作空间里的对应的一些功能包。
5.检查环境变量:(作用:在“总部”查找刚才自己创建功能包的位置,检查路径是否一致)
echo $ROS_PACKAGE_PATH
使用echo命令打开$ROS_PACKAGE_PATH。$ROS_PACKAGE_PATH为ros本身自带的一个环境变量,他会查找你所有ros功能包的路径。
你只有设置了 source devel/setup.bash之后,$ROS_PACKAGE_PATH中才会包含(找到)你自己所创建的功能包的路径。
运行结果如下
所显示的 /home/******/carkin_ws/src 即为所建功能包的路径。
6.package文件
此文件主要描述与你功能包相关的一些信息,名字,版本号,开元的许可证等。还会显示你功能包的depend,在运行时会先搜索输入的功能包是否存在(不存在会报错)。当然后续也可以进一步修改,进行库的扩展等功能
7.CMakeLists文件
用来描述功能包的编译规则。使用CMake语言进行编译。
最后 同一个工作空间下,不允许存在同名功能包。不同工作空间下,允许存在同名功能包