IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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.

??????? 接下来,我介绍如何创建一个工作空间

??????? a、mkdir -p catkin_ws/src

???????? mkdir是LINUX的基本语法,意思是要创建一个文件夹,这个文件夹的名字叫做"catkin_ws","src"就是它的子目录。了解这个之后,或许你还会有疑问,为什么要加一个“-p”,“-”这个东西在LINUX开发中经常能看到,它的意思就是告诉LINUX,我要给命令添加一个参数,在这里就是告诉LINUX,我要给"mkdir"添加一个-p的参数。感兴趣的小伙伴可以试试这个参数有什么作用。

??????? b、cd catkin_ws/src

??????? c、catkin_init_workspace

?执行完这一步,你就能看到如下:

???????? 继续解释b、c代码的意思,这里的"cd",就是进入到这个文件夹目录里面,"catkin_init_workspace"就是初始化ROS文件。

??????? d、cd ..

??????? e、catkin_make

?

执行完上述步骤,你可以看到这样一个结果。到此,我们的工作空间就编译完成了。当然还是有必要解释一下,"cd.."是什么意思呢,它会帮助我们从src返回到catkin_ws目录。catkin_make就是编译我们的工作空间。

????????

?相信到此,你已经能看见catkin_ws下从原本只有一个src变成了有build、devel、src三个了,那它们到底发挥着什么作用呢?

????????

?

相信大家看到这张图就能明白,src就是我们最为关注的文件,因为它将保存着我们的代码文件,而build和devel则是编译产物。

??????? 以上就是工作空间的创建。

??????? 工作空间创建完成之后,紧接着需要介绍一下linux本身的一个机制,source命令,意为刷新,刷新什么捏?环境变量!

??????? 现在解释为什么要进行刷新可能有些笼统,但是尽管按接下来的步骤去做,之后慢慢就知道为什么了。

??????? catkin_make之后,我们执行????????source devel/setup.bash

?令人讨厌的是,这个刷新时具有限制的,它只在你当前的终端才有效,如果你有一定linux基础的话,你知道可以执行

echo $ROS_PACKAGE_PATH

???????? 那么解决办法是什么呢?

??????? 就让我们每次打开终端的时候,自动刷新一次,怎么操作呢?

????????a、cd ~

??????? b、vi? ~/.bahsrc

??????? c、在末尾添加? source ..../devel/setup.bash

??????? d、返回终端执行 source? ~/.bashrc

??????? 完成上述操作后,接下来关注的就是src目录里面的内容了。从上文可以知道,src目录下会保存着我们的代码文件,ROS也给代码文件取了一个名字,叫做功能空间——package.

??????? package里有什么捏?

????????

??????? 正如上图所示,功能包可以包含上面所示的子目录文件。注意它是可以包含,不是必须包含,在创建功能包时,除了CmakeList.txt文件和package.xml文件时编译时产生之外,其它所有文件都是根据我们的需求来创建的。

??????? 介绍完了功能包是什么,那如何创建一个功能包呢

??????? catkin_create_pkg <package_name> [depend1] [depend2] [depend3]

????????只需要catkin_creat_pkg这个命令即可,package_name就是功能包的名字,可以根据自己的需要取,depend意即依赖。

??????? 如下例:

catkin_create_pkg new_package std_msgs roscpp rospy

???????? 我们创建了一个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做出如下整理:

内容留给大家进行分析。

????????

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-26 12:31:17  更:2021-08-26 12:33:01 
 
开发: 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-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码