【ROS入门】创建工作空间与功能包

文章结构

  • 工作空间文件结构
  • 创建工作空间流程
    • 创建工作空间
    • 编译工作空间
    • 设置环境变量/创建功能包
      • 创建功能包
      • 编译功能包
    • 检查环境变量

工作空间文件结构

工作空间(workspace)是一个存放工程开发相关文件的文件夹,类似于在windows中使用IDE创建的工程。主要分为以下四个文件夹:

  • src: 代码空间(Source Space):用于放置功能包,包括代码和配置文件
  • build: 编译空间(Build Space):用于放置在编译过程中产生的中间文件
  • devel: 开发空间(Development Space):用于放置编译生成的一些可执行文件、库和脚本
  • install: 安装空间(Install Space)

在这里插入图片描述

创建工作空间流程

创建工作空间

$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ catkin_init_workspace

步骤如下:

1.在主文件夹打开终端

$ mkdir catkin_ws

在这里插入图片描述

2.在主文件夹下创建catkin_ws文件夹

$ cd catkin_ws/

在这里插入图片描述

3.在catkin_ws文件夹中创建src文件夹,用于放置功能包和源码

$ mkdir src

在这里插入图片描述

4.在src文件夹中初始化当前文件夹,将其属性变成ros workspace。可以看到src中产生了一个txt文件,说明当前路径是一个ros的工作空间了。

$ cd src
$ catkin_init_workspace

在这里插入图片描述

编译工作空间

$ cd ~/catkin_ws/
$ catkin_make

步骤如下:

1.切换到工作空间的根目录

$ cd..

在这里插入图片描述

2.输入编译命令

$ catkin_make

这个命令是ROS中catkin这个编译工具所提供的编译器指令。通过该指令可以编译src下面所有功能包的源码,然后根据配置来编译。其结果会放在devel和install中。可以由下图看出,在执行编译之后,出现了devel(开发空间)和build(编译空间)两个文件夹。但是并没有出现install这个文件夹,同时从日志中也可发现并无代码相关的记录,说明并没有进行真正的编译。

在这里插入图片描述

3.因此还需要完成最后一步:

$ catkin_make install

此时生成了install的文件夹,里面会放置最终编译生成的可执行文件。

在这里插入图片描述

设置环境变量/创建功能包

在创建代码的时候一定要创建一个功能包。功能包是放置ROS源码中的最小单元,即所有源码全部都必须放到功能包里面,不可直接放在src下去编译。创建功能包指令如下:

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

package_name: 功能包的名字
depend: 依赖,可以依赖其他的功能包

创建功能包

$ cd src/
$ catkin_create_pkg test_pkg roscpp rospy std_msgs

在这里插入图片描述

可以看到src中已经创建了一个test_pkg的功能包。

在这里插入图片描述
打开之后会发现里面有这样一系列文件和文件夹。其中src用于放置功能包的代码,例如cpp文件、py文件。include用于放置头文件。剩余的CMakeLists和package文件是每个功能包都必须要存在的两个文件
,标志着这个文件夹是功能包的属性。

注意: 在同一个工作空间下,不允许存在同名功能包;不同工作空间下,允许存在同名功能包。

编译功能包

$ cd ..
$ catkin_make

在这里插入图片描述

如果想要运行功能包中的某一个程序的话,需要先设置一下工作空间的环境变量

$ source devel/setup.bash

在这里插入图片描述
这个文件是针对catkin_ws工作空间的一个环境变量设置。只有设置这个环境变量之后,才能让系统找到这个工作空间,以及对应的功能包。

检查环境变量

$ echo $ROS_PACKAGE_PATH

在这里插入图片描述
ROS_PACKAGE_PATH是ROS本身的环境变量,它会通过这个环境变量来查找所有ROS功能包的路径。所以只有设置这个工作空间的setup.bash之后,PATH里头才会包含该工作空间的路径。

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

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

相关文章

276_C++_HTTP请求处理的内部实现,具体处理逻辑在其中完成

这个函数是HTTP请求处理的内部实现,具体处理逻辑在其中完成。 根据参数的值和请求的类型,它会处理不同的情况,包括错误处理、身份验证和设置回调函数等操作。 ok这段代码主要实现了一个HTTP服务器的请求处理逻辑,处理IPC升级相关的请求。 具体的处理逻辑和细节需要查看代码…

tree型数组平铺,一维数组结构tree型

一维数组结构成tree型关键是每个一维数字里面必须有一个自己唯一识别的标识&#xff08;id&#xff09;和父级唯一识别的表示 &#xff08;pid&#xff09; function oneTotree(data,pid,idKey,pidKey){ let node[] pid pid||"" //这里的值是以哪个pid的值为根节点…

【element-ui】form表单动态修改rules校验项

在项目开发过程中&#xff0c;该页面有暂存和提交两个按钮&#xff0c;其中暂存和提交必填项校验不一样&#xff0c;此时需要动态增减必填项校验 &#xff0c;解决方法如下&#xff1a; 增加rules校验项 this.$set(this.formRules,name,[{required:true,message:请输入名称,t…

【python】anaconda使用指南

安装anaconda 访问官方 官网链接注册并登陆安装 无脑下一步即可配置path D:\ProgramData\anaconda3D:\ProgramData\anaconda3\ScriptsD:\ProgramData\anaconda3\Library\binD:\ProgramData\anaconda3\Library\mingw-w64\bin 进入anaconda环境 # 查询版本 conda --version# …

Layui快速入门之第十三节 日期与时间选择器

目录 一&#xff1a;基本用法 API 渲染 属性 弹出提示 2.8 获取实例 2.8 解除实例绑定 2.8 关闭日期面板 2.7 获取某月的最后一天 二&#xff1a;常规用法 三&#xff1a;多类型选择器 四&#xff1a;范围选择 五&#xff1a;直接静态显示 六&#xff1a;更多功能…

断点测试怎么做?一文教你用Charles 工具做好接口测试!

在测试工作过程中&#xff0c;我们经常会在程序的某一行或者某一环节设置断点&#xff0c;在程序请求的过程中&#xff0c;修改断点处的参数、请求或者响应&#xff0c;借此定位问题&#xff0c;这就是所谓的断点测试。这类断点测试主要用于接口测试。 断点测试可以通过查看接…

Dubbo常考知识点

Dubbo常考知识点 Dubbo⽀持哪些负载均衡策略Dubbo是如何完成服务导出的&#xff1f;Dubbo是如何完成服务引⼊的&#xff1f;Dubbo的架构设计是怎样的&#xff1f; Dubbo⽀持哪些负载均衡策略 随机&#xff1a;从多个服务提供者随机选择⼀个来处理本次请求&#xff0c;调⽤量越…

C语言关于自定义字符函数和字符串函数的相关笔试题(找工作必看)

本篇字符函数和字符串函数 求字符串长度 strlen 长度不受限制的字符串函数 strcpy strcat strcmp 长度受限制的字符串函数介绍 strncpy strncat strncmp 字符串查找 strstr strtok 错误信息报告 strerror 内存操作函数 memcpy memmove memset memcmp 在我们笔试时&#xff0c;很…

mysql限制用户登录失败次数,限制时间

mysql用户登录限制设置 mysql 需要进行用户登录次数限制,当使用密码登录超过 3 次认证链接失败之后,登录锁住一段时间,禁止登录这里使用的 mysql: 8.1.0 这种方式不用重启数据库. 配置: 首先进入到 mysql 命令行:然后需要安装两个插件: 在 mysql 命令行中执行: mysql> INS…

易基因|ONT:三代原核甲基化在痤疮杆菌噬菌体表观遗传印迹中的工程选择性研究

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 痤疮表皮杆菌&#xff08;Cutibacterium acnes&#xff0c;C.acnes&#xff09;是一种革兰氏阳性细菌&#xff0c;是人类皮肤微生物组成员。尽管是最丰富的皮肤共生体&#xff0c;但某些…

linux开机自动启动java的jar包项目及开机自动启动Nacos的配置

linux开机自动启动java的jar包项目及开机自动启动Nacos [开机自动启动Nacos的配置 ](https://blog.csdn.net/weixin_42225792/article/details/129805877)[开机自动启动jar包项目的配置 ](https://blog.csdn.net/qq_42320934/article/details/131698450) 开机自动启动Nacos的配…

详细介绍下VLAN隔离与VLAN之间互联

什么VLAN&#xff1f; VLAN代表虚拟局域网&#xff08;Virtual Local Area Network&#xff09;&#xff0c;它是一种在物理网络基础上创建逻辑上独立的虚拟网络的技术。VLAN允许将一个局域网划分为多个虚拟的逻辑网络&#xff0c;这些虚拟网络在逻辑上相互隔离&#xff0c;就…

支付宝开发问题:很抱歉,系统监测到你的支付宝账号有异常,入驻失败,如需帮助请拨打热线

想开发个支付宝小程序&#xff0c;结果困难重重啊 妹的&#xff0c;这一个星期一直都被这个问题困扰&#xff0c;找了一个个体户资质&#xff0c;一直失败&#xff0c;专门去注册了一个公司&#xff0c;还是提交失败。 给支付宝客服打电话&#xff0c;跟没打一样&#xff0c;…

外包干了2个月,技术退步明显.......

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入武汉某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

4. 寻找两个正序数组的中位数

4. 寻找两个正序数组的中位数 有序数组&#xff0c;二分/分治。 class Solution {public double findMedianSortedArrays(int[] nums1, int[] nums2) {int m nums1.length;int n nums2.length;int left (m n 1) / 2;int right (m n 2) / 2;// 将偶数和奇数的情况合并…

Windows系统如何部署Wing FTP Server与公网远程访问【内网穿透】

Wing FTP Server安装配置结合内网穿透实现公网访问本地站点 文章目录 Wing FTP Server安装配置结合内网穿透实现公网访问本地站点前言1.Wing FTP Server下载安装2.Wing FTP Server配置部署3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3…

使用 sklearn 进行数学建模的通用模板

前言 无论是本科和研究生都会有的数学建模含金量还是很高的&#xff0c;下面将介绍一下进行数学建模的一些基本操作方法&#xff0c;这里主要是利用sklearn 进行建模&#xff0c;包括前期的一些数据预处理以及一些常用的机器学习模型以及一些简单粗暴的通用建模步骤&#xff0…

在 Simscape Electrical 中对两区 MVDC 电动船的建模和仿真(Simulink实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

leetcode top100(6) 三数之和(双指针)

/*** 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请* <p>* 你返回所有和为 0 且不重复的三元组。* <p>* 注意&#xff1a;答案中不可…

springboot集成mybatis-plus

一、在spring boot中配置mybatis-plus 1、创建一个spring boot项目&#xff0c;注意勾选mysql 2、在pom.xml文件中添加mybatis-plus的依赖包 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0&qu…