ROS:创建工作空间和编译功能包

news2024/11/26 3:39:37

目录

  • 一、工作空间
  • 二、创建工作空间
  • 三、编译空代码的工作空间
  • 四、功能包
  • 五、创建功能包
  • 六、设置和检查环境变量
  • 七、功能包中的两个重要文件

一、工作空间

存放工程开发相关文件的文件夹。类似一个IDE(例如Pycharm)新建一个工程,就是一个工作空间。包含4个文件夹:
src:代码空间(Source Space):放置功能包代码
build:编译空间(Build Space):编译过程中产生的中间文件,不用过多关注
devel:开发空间(Development Space):放置编译生成的可执行文件、库、脚本
install:安装空间(Install Space):存放可执行文件,与上面有一定重复
在这里插入图片描述

二、创建工作空间

主要使用的命令行如下:

mkdir -p ~/catkin_ws/src   //创建一个src文件夹
cd ~/catkin_ws/src        //进入该文件夹
catkin_init_workspace     //将当前文件夹变为工作空间,使其拥有工作空间的属性

注:“~/”意为当前用户名目录;“-p”意为递归创建目录,即直接创建多级目录。
src文件夹即代码空间,不能自行用别的名称代替
在这里插入图片描述

三、编译空代码的工作空间

要编译工作空间,先要回到工作空间的根目录。
主要命令行如下:

cd ~/catkin_ws
catkin_make     //编译指令,将src里的源码都进行编译

在这里插入图片描述
执行完以上步骤没有生成install文件夹,要生成install文件夹,输入

catkin_make install

在这里插入图片描述
install中生成了可执行文件。
执行完以上步骤一个空的工作空间创建好了,并且空的代码空间(功能包)编译完成。

四、功能包

功能包是放置ROS源码的最小单元。
上面我们创建了一个空的工作空间,src文件夹里面没写东西,现在我们创建一个自己的功能包。
注意同一工作空间下,不允许存在同名功能包;不同工作空间下,允许存在同名功能包。

五、创建功能包

命令行

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

<package_name>为包名
[depend]为依赖,即指明编译的时候需要ROS中的其他功能包,如需要调用python、C++库,就要指明rospy、roscpp

cd ~/catkin_ws/src
catkin_create_pkg test_pkg std_msgs rospy roscpp

在这里插入图片描述
创建完成功能包后需要编译功能包,步骤和第三步一样

cd ~/catkin_ws
catkin_make

在这里插入图片描述

六、设置和检查环境变量

编译完功能包后,为了运行,先设置环境变量,以便系统找到我们的工作空间和功能包。

source devel/setup.bash

检查环境变量

echo $ROS_PACKAGE_PATH

echo为打开环境变量,通过 ROS_PACKAGE_PATH 查找所有ros功能包的路径。
前面source了 devel/setup.bash ,现在就会包含这个路径:
在这里插入图片描述

七、功能包中的两个重要文件

1、package.xml
使用xml语言描述功能包相关的信息:
在这里插入图片描述
2、CMakeLists.txt
描述功能包里的编译规则,使用CMake语法。
在这里插入图片描述
参考视屏:古月居ROS入门21讲
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/585959.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

权威认可!腾讯云EdgeOne入选Gartner® DDoS缓解方案市场指南

近日&#xff0c;Gartner发布《Market Guide for DDoS Mitigation Solutions》报告&#xff0c;腾讯云EdgeOne入选Gartner DDoS缓解方案市场指南。 “分布式拒绝服务&#xff08;DDoS&#xff09;缓解市场包括检测和缓解DDoS攻击并将其作为专用产品提供的供应商。它包括专业供…

有这个证书,网络安全工程师找工作不用愁

想要成为网络安全工程师&#xff0c;满足企业的用人要求。最基本的&#xff0c;你需要熟悉TCP/IP协议&#xff0c;熟悉sql注入原理和手工检测、熟悉内存缓冲区溢出原理和防范措施、熟悉信息存储和传输安全、熟悉数据包结构、熟悉Ddos攻击类型和原理。并且有一定的ddos攻防经验&…

I2C通信协议MPU6050

目录 I2C通信协议 硬件 软件 I2C时序 MPU6050 I2C通信协议 硬件 为了避免总线没协调好导致电源短路&#xff0c;配置为开漏输出&#xff0c;所有设备输出低电平不输出高电平&#xff0c;即右图。又为了避免高电平造成的引浮空&#xff0c;&#xff08;第三点&#xff09;总…

kotlin用CoroutineScope启动协程async等待结果返回

kotlin用CoroutineScope启动协程async等待结果返回 例如&#xff1a; import kotlinx.coroutines.*object MyCoroutineScope {private val coroutineContext Job() Dispatchers.Default CoroutineName("my_context")val coroutineScope CoroutineScope(corouti…

【Redis】聊一下Redis数据同步/复制

在分布式系统中&#xff0c;基本上所有的存储中间件都支持数据同步/复制功能&#xff0c;主要的原因是为实现高可用&#xff0c;单点宕机的故障&#xff0c;必须需要将数据进行共享&#xff0c;而共享的话&#xff0c;就需要将数据进行复制&#xff0c;对于已经学过的MySQL和Ka…

Jdk17中文在线手册(建议收藏)

本身学习技术就比较难&#xff0c;再来一个英文版的API&#xff0c;就难上加难&#xff0c;经过几周的研究翻译&#xff0c;JDK17最新版中文在线手册搞定&#xff0c;不要看错了哈是JDK17不是JDK1.7&#xff0c;全网最新的只有JDK11&#xff0c;JDK17中文在线手册是第一次出现&…

JavaEE进阶(5/29)SpringMVC

目录 1.复习 2.URL传参PathVariable 3.上传文件RequestPart 4.获取Cookie/Session/header 5.传统/维新获取cookies 6.传统/维信获得Header 7.获取Session&#xff08;非常重要&#xff09; 8.不加ResponseBody 9.如何获取Json数据&#xff0c;RequestBody 10.想…

王者之力,驭见未来 | 圣戈班量子膜全国核心店面大会圆满落幕!

5月24日&#xff0c;“王者之力&#xff0c;驭见未来”——2023年圣戈班量子膜全国核心店面大会在成都缇沃丽酒店隆重召开&#xff01; 圣戈班舒热佳特殊镀膜有限公司全球总裁Mehrotra Vishal先生、圣戈班舒热佳特殊镀膜有限公司亚太总裁陈剑超先生、圣戈班舒热佳特殊镀膜有限公…

opencv_c++学习(二十九)

一、监督学习的聚类方法 K近邻的方法&#xff1a; 首先给出一个阈值k&#xff0c;后寻找距离黑色圆点最近的k个元素&#xff0c;占据比例大的元素即为黑色所属的类别。如图所示&#xff0c;即k3时&#xff0c;黑色圆属于三角形&#xff0c;k5时圆点属于正方形。 支持向量机方…

设计模式-享元模式

问题背景 有一个小型的外包项目&#xff0c;就是给客户A做一个展示的网站&#xff0c;例如展示&#xff1a;这个网站展示的都是客户A的产品。然后可以A的朋友觉得不错&#xff0c;也希望做这样一个网站&#xff0c;但是要求有些不同&#xff0c;要求以新闻的形式展示。还有更多…

DORIS----漏斗转化分析案例实现

综合案例之漏斗转化分析 业务目标、到达路径&#xff0c;路径步骤、步骤人数&#xff0c;步骤之间的相对转换率和绝对转换率 每一种业务都有他的核心任务和流程&#xff0c;而流程的每一个步骤&#xff0c;都可能有用户流失。 所以如果把每一个步骤及其对应的数据&#xff08;…

【Linux】深入了解冯诺依曼体系结构与操作系统

目录 导读 &#x1f31e;专栏导读 &#x1f31e;冯诺依曼 &#x1f31e;冯诺依曼体系结构 &#x1f31b;木桶效应 &#x1f31e;操作系统(Operator System) &#x1f31b;概念 &#x1f31b;设计OS的目的 &#x1f31b;系统调用和库函数概念 导读 六一儿童节快到了&…

Envoy 物联网模块开发---串口服务器 (一)

一、背景 最近业余时间想基于Envoy 开发一个串口网关&#xff0c;主要是想把一些 modbus、bacnet 以及 mqtt 等物联网协议接入Envoy中&#xff0c;当读到串口数据后可以转发成对应的网络协议 二、Envoy的优势 选择Envoy的话主要是因为Envoy的代码已经十分健全了&#xff0c;零…

(数字图像处理MATLAB+Python)第九章图像形态学运算-第三节:二值图像的形态学处理

文章目录 一&#xff1a;形态滤波&#xff08;1&#xff09;概述&#xff08;2&#xff09;程序 二&#xff1a;图像的平滑处理&#xff08;1&#xff09;概述&#xff08;2&#xff09;程序 三&#xff1a;图像的边缘提取&#xff08;1&#xff09;概述&#xff08;2&#xff…

redux与react-redux状态集中管理

一、redux:可用于react、Vue等中 redux应用&#xff1a;状态的管理&#xff0c;共享状态&#xff0c;Redux用一个单独的常量状态树&#xff08;state对象&#xff09;保存这一整个应用&#xff08;如tab选项卡的状态、城市等需要应用在整个页面的信息&#xff09;的状态。其本…

算法|13.贪心

1.字典序最小的字符串连接方案 题意&#xff1a;给定一个由字符串组成的数组strs&#xff0c;必须把所有的字符串拼接起来&#xff0c;返回所有可能的拼接结果中字典序最小的结果。 public static class MyCom implements Comparator<String>{Overridepublic int compa…

@程序员【提升代码质量,快走出学习迷茫的状态吧】

思路清晰&#xff0c;能上钻一 思路清晰&#xff0c;能上钻一写代码如同打游戏上分。写代码如同中医治病。 思路清晰&#xff0c;能上钻一 ⭐⭐想成为一名优秀的电玩高手&#xff0c;你需要有清晰的思路;想成为一名顶级的电玩高手&#xff0c;你需要的是顶级的思路和异于常人的…

裁员后投递了300次简历,面试22家,终于上岸!

这是一位群友的励志故事&#xff0c;生活虽然很苦&#xff0c;但是朝着自己想要的方向去努力很值得&#xff01; 求职109天&#xff0c;沟通2212次&#xff0c;投简历355次&#xff0c;面试22家&#xff0c;涨薪10%&#xff0c;终于上岸&#xff0c;在这里复盘下我的经历&#…

[创业之路-72] :创业公司发展模式的选择:技工贸还是贸工技?

目录 前言&#xff1a; 一、什么是技、工、贸&#xff1f; 二、概述 2.1 推动力不同 2.2 适合领域不同 2.3 经营模式的主导地位不同 三、技、工、贸详解 3.1 常见的七种营销模式 3.2 常见的三种生产模式 3.3 常见的三种研发模式 四、经营模式的战略选择与影响因素 …

短视频矩阵源码如何做应用编程?

短视频矩阵源码&#xff0c; 短视频矩阵系统技术文档&#xff1a; 可以采用电子文档或者纸质文档的形式交付&#xff0c;具体取决于需求方的要求。电子文档可以通过电子邮件、远程指导交付云存储等方式进行传输、 短视频矩阵{seo}源码是指将抖音平台上的视频资源进行筛选、排…