| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> ROS(1)——工作空间与功能包 -> 正文阅读 |
|
[系统运维]ROS(1)——工作空间与功能包 |
??????? 我们知道在写一般的程序过程中,不管是cpp还是py程序都需要有一个文件夹来存储我们的程序。按这个逻辑,ROS也不例外,我们称这个存储ROS工程代码的文件夹叫做工作空间——WorkSpace. ??????? 接下来,我介绍如何创建一个工作空间
???????? mkdir是LINUX的基本语法,意思是要创建一个文件夹,这个文件夹的名字叫做"catkin_ws","src"就是它的子目录。了解这个之后,或许你还会有疑问,为什么要加一个“-p”,“-”这个东西在LINUX开发中经常能看到,它的意思就是告诉LINUX,我要给命令添加一个参数,在这里就是告诉LINUX,我要给"mkdir"添加一个-p的参数。感兴趣的小伙伴可以试试这个参数有什么作用。
?执行完这一步,你就能看到如下: ???????? 继续解释b、c代码的意思,这里的"cd",就是进入到这个文件夹目录里面,"catkin_init_workspace"就是初始化ROS文件。
? 执行完上述步骤,你可以看到这样一个结果。到此,我们的工作空间就编译完成了。当然还是有必要解释一下,"cd.."是什么意思呢,它会帮助我们从src返回到catkin_ws目录。catkin_make就是编译我们的工作空间。 ???????? ?相信到此,你已经能看见catkin_ws下从原本只有一个src变成了有build、devel、src三个了,那它们到底发挥着什么作用呢? ???????? ? 相信大家看到这张图就能明白,src就是我们最为关注的文件,因为它将保存着我们的代码文件,而build和devel则是编译产物。 ??????? 以上就是工作空间的创建。 ??????? 工作空间创建完成之后,紧接着需要介绍一下linux本身的一个机制,source命令,意为刷新,刷新什么捏?环境变量! ??????? 现在解释为什么要进行刷新可能有些笼统,但是尽管按接下来的步骤去做,之后慢慢就知道为什么了。
?令人讨厌的是,这个刷新时具有限制的,它只在你当前的终端才有效,如果你有一定linux基础的话,你知道可以执行
???????? 那么解决办法是什么呢? ??????? 就让我们每次打开终端的时候,自动刷新一次,怎么操作呢?
??????? 完成上述操作后,接下来关注的就是src目录里面的内容了。从上文可以知道,src目录下会保存着我们的代码文件,ROS也给代码文件取了一个名字,叫做功能空间——package. ??????? package里有什么捏? ???????? ??????? 正如上图所示,功能包可以包含上面所示的子目录文件。注意它是可以包含,不是必须包含,在创建功能包时,除了CmakeList.txt文件和package.xml文件时编译时产生之外,其它所有文件都是根据我们的需求来创建的。 ??????? 介绍完了功能包是什么,那如何创建一个功能包呢
????????只需要catkin_creat_pkg这个命令即可,package_name就是功能包的名字,可以根据自己的需要取,depend意即依赖。 ??????? 如下例:
???????? 我们创建了一个new_package的功能包,里面有什么呢? ???????? 可以看到出来CMakeLists.txt和package.xml之外还有两个空的文件夹,这些都是可以根据自己的需求创建并放置自己的内容。 ??????? 这就是功能包的内容。 ??????? 接下来,我们讲一下CMakeLists.txt和package.xml里面有什么东西。 ??????? 首先我们简单介绍一下CMakeLists.txt里面主要有什么东西: ???? ???????? ?回到我们new_package的CMakeLists.txt,看看里面有什么东西(只看为注释部分), ?第一行表明了cmake编译的版本,project是功能包的名字 ? 这是我们创建 new_package 时引用的依赖,如果之后想增添其他依赖,也可以在这里进行增添。 增添头文件路径 由于目前我们时空的一个文件夹,所以没有编译导出信息。 这就是我们目前一个空的new_package功能包具有的一个CMakeList.txt信息。等我们结束之后我们再来看一下会不会有什么不一样。 同样的Package.xml做出如下整理: 内容留给大家进行分析。 ???????? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 13:02:09- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |