【ROS】机械人开发--ROS工作空间与功能包

news2025/7/7 11:03:31

机械人开发--ROS工作空间与功能包

  • 一、ROS工作空间
    • 1.1 概念
    • 1.2 创建工作空间
    • 1.3 编译工作空间
    • 1.4 设置环境变量
    • 1.5 添加环境变量
  • 二、功能包
    • 2.1 概念
    • 2.2 功能包的内容
    • 2.3 创建功能包
  • 三、CMakeLists.txt文件
  • 四、package.xml文件

一、ROS工作空间

1.1 概念

工作空间(workspace):存放工程文件的文件夹。
具体组成为:
在这里插入图片描述

1.2 创建工作空间

① 创建文件夹

mkdir -p ~/catkin_ws/src

② 进入文件夹

cd ~/catkin_ws/src

③ 初始化工作空间

catkin_init_workspace

1.3 编译工作空间

④ 返回上一级

cd ..

⑤ 编译工作空间

catkin_make

1.4 设置环境变量

⑥ 设置环境变量

source devel/setup.bash

⑦ 查看ROS的环境变量

echo $ROS_PACKAGE_PATH

1.5 添加环境变量

命令行输入:

vi ~/.bashrc

最后一行添加:

source ~/ros/catkin/devel/setup.bash

根据你创建的目录路径来。


别的命令

编译单独功能包::

catkin_make -DCATKIN_WHITELIST_PACKAGES="package_name"

多线程编程:

catkin_make -j -l

多线程编程用于提高编译速度,但要根据你CPU的数量决定,超过的话会出问题
j:多少核编程
l:多少线程编程
例子:
在这里插入图片描述


二、功能包

2.1 概念

功能包(package):存放用户功能代码的文件夹。
具体如下:
在这里插入图片描述

2.2 功能包的内容

  • include文件夹: 包含.h文件(必要)
  • launch文件: launch文件
  • src文件夹: 包含.cpp文件(必要)
  • urdf文件夹:.urdf文件
  • config这类的文件夹:包含参数文件
  • scripts这类的文件夹:包含可执行脚本文件(python脚本)
  • CMakeLists.txt文件:定义编译的规则(必要)
  • package.xml 文件: 定义功能包(package)的属性(必要)

2.3 创建功能包

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

使用示例:

catkin_create_pkg new_package std_msgs rospy roscpp

三、CMakeLists.txt文件

定义编译的规则

官方介绍网站:
cmakelists

常用的cmakelists宏:

  • cmake_minimum_required() :CMake版本
  • project() :项目名称
  • find_package() :添加依赖
  • catkin_package() :编译生成信息导出
  • add_executable() :生成可执行文件
  • target_link_libraries() :可执行文件链接到库

部分文件截图:
在这里插入图片描述
其他的cmakelists宏:

add_message_files() 添加话题消息类型文件
add_service_files() 添加服务消息类型文件
add_action_files()  添加行为消息类型文件
generate_messages() 生成消息文件
include_directories() 添加头文件路径
add_dependencies()    添加依赖项
add_library()         生成自定义的库
install()             安装规则

四、package.xml文件

功能包的描述信息,文件使用的是标签语言

官方介绍网站:
package.xml

必要标签:

根标签
<package format="2">
。。。
</package>

<name>       包名
<license>    开源许可
<maintainer> 维护者
<description> 描述
<version>     版本号

可选标签:

<depend>        指定依赖项为编译、 导出、 运行需要的依赖
<build_depend>  编译依赖项
<build_export_depend> 导出依赖项
<exec_depend>         运行依赖(旧版本是<run_depend>)
<test_depend>         测试用例依赖项
<buildtool_depend>    编译构建工具
<doc_depend> 文档依赖项

在这里插入图片描述


到这里就结束啦!
在这里插入图片描述

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

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

相关文章

以“新IT”助“数智融合”,联想推开“智能化转型”下半场的大门

作者 | 曾响铃 文 | 响铃说 近年来&#xff0c;我国对数字化的重视达到前所未有的高度&#xff0c;从“十四五”规划纲要首次将数字经济单独列为一篇&#xff1b;到二十大报告中指出&#xff1a;“坚持把发展经济的着力点放在实体经济上”、“促进数字经济和实体经济深度融合…

SpringMVC学习篇(五)

SpringMVC之json数据传递 1.1 准备工作 1.1.1 导入lombok依赖(方便写实体类) <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.24</version></dependency>1.1.2 导入mvc js…

mysql经典案例带解析(你没见过的全新版本)55题

首先给出初始表格 表格创建命令 create table emp(id int primary key auto_increment,name varchar(20),job varchar(20),manager int,hiredate date,sal double(8,2),comm double(6,2),dept_id int)charsetutf8;create table dept(id int primary key auto_increment,nam…

AcrelEMS-BP生物制药工厂能效管理系统

安科瑞 华楠 聚焦全厂能源采集、监控、分析、调度,降本提效,实现企业双碳目标;致力于全域化设备监视、巡检、故障报警、工单管理,运维优化,提升设备使用效率。 综合自动化系统 110kV及以下变电站综合自动化系统实现遥测、遥信、遥控、事故追忆、故障录波、安全防护、上传调度 …

搭建接口平台YApi详解(含搭建node环境)

公司之前使用的doclever 感觉不太好用&#xff0c;打算私有化部署YApi 步骤 准备使用yapi的可视化部署&#xff0c;需要有node环境 安装node环境 测试一下有没有node环境 如下就是有 [root192 sbin]# node -v v14.17.0 [root192 sbin]# npm -v 6.14.13没有就创建 cd /us…

webpack5 打包环境抽离分环境基本配置

两种开发模式 开发模式&#xff1a;代码能编译自动化运行生产模式&#xff1a;代码编译优化输出Webpack 基本功能 开发模式&#xff1a;可以编译 ES Module 语法生产模式&#xff1a;可以编译 ES Module 语法&#xff0c;压缩 js 代码Webpack 配置文件5 个核心概念 entryoutput…

FL Studio21最新演示测试版本下载FL水果V21

FL Studio是市场上最受欢迎的音乐制作软件之一。它被世界各地的许多专业制作人和艺术家使用。FL Studio音乐软件的每日下载量超过40&#xff0c;000次&#xff0c;其增长是不断的&#xff0c;而且没有迹象表明很快就会放缓。随着新的 FL 产品版本在 Windows 和 Mac 上不断发布&…

25.gateway的Filter 过滤器工厂(springcloud)

1 概述 gateway 里面的过滤器和 Servlet 里面的过滤器&#xff0c;功能差不多&#xff0c;路由过滤器可以用于修改进入Http 请求和返回 Http 响应2 分类 2.1 按生命周期分两种 pre 在业务逻辑之前 post 在业务逻辑之后2.2 按种类分也是两种 GatewayFilter 需要配置某个路由&…

阿里同步神器Canal原理+安装+快速使用

文章目录前言Canal简介MySQL主备复制原理canal 工作原理1、MySQL配置1.1 修改MySQL配置支持binloglog-binmysql-binbinlog-formatROW1.2 创建canal用户1.3 重启mysql服务1.4 基本的查看binlog命令2、下载安装canal2.1 解压canal2.2 配置与mysql信息2.3 启动canal3. 快速使用3.1…

【文件传输】实现下载

文章目录下载&#xff1a;下载的过程&#xff1a;单文件传输&#xff1a;多文件传输&#xff1a;下载&#xff1a; 如下图&#xff1a; 如果刚发完size&#xff0c;客户端不回复ok&#xff0c;直接发送数据&#xff0c;会出现粘包问题。如果想要确保客户端收到数据&#xff0…

流行的前端开源报表工具有哪些?适合在企业级应用的

前端开源报表工具有很多&#xff0c;但是如果是企业级应用真心不建议选用。比如非要选择开源的报表工具&#xff0c;你需要投入一个或多个程序员来做这个事情&#xff0c;他们还得先学习这个开源报表工具的界面、功能使用操作等等&#xff0c;尤其是很多开源工具的学习资料还是…

dpdk Vhost 库

1、 怎么实现vhost_dev的VhostOps的vhost_set_vring_kick和vhost_set_vring_call&#xff1b; vhost_net kernel方式的vhost_set_vring_kick和vhost_set_vring_call依赖于/dev/vhost_net的ioctl。 有两种实现方式&#xff1a; 1、guest是server&#xff0c;dpdk vhost user是…

Sourcetree的实际使用开发笔记

目录 前言 一、Sourcetree是什么 二、Sourcetree使用步骤 1.创建仓库 2.拉取和推送的使用 3.创建新的自己的分支 三、使用Sourcetree来进行不提交本地的代码&#xff0c;而获取最新的代码拉取 总结 前言 本章主要是记录一下Sourcetree的基本使用功能。 一、Sourcetree是…

Android:Binder思考笔记

基础知识 进程空间划分 一个进程空间分为用户空间与内核空间。用户空间与内核空间都是虚拟内存&#xff0c;映射到物理内存。所有进程的内核空间映射到同一块物理内存&#xff0c;是共享的二者区别&#xff1a; 进程间&#xff0c;用户空间的数据不可共享&#xff0c;即用户空…

线性与树型数据结构可视化模拟器

线性与树型数据结构可视化模拟器 题目2:线性与树型数据结构可视化模拟器 [问题描述] 数据结构课程是计算机类专业的核心课程之一&#xff0c;是计算机科学与技术必修的专业基础课程。数据结构研究的范围和计算机软件有着密切的联系。课程涉及到大量的概念、定义以及数据结构的…

JS数据类型的探究

JS数据类型的探究 分思考三部曲? 是什么?为什么?怎么做? 一:什么是数据类型? 在程序设计的类型系统中&#xff0c;数据类型&#xff08;英语&#xff1a;Data type&#xff09;&#xff0c;又称资料型态、资料型别&#xff0c;是用来约束数据的解释。在编程语言中&…

我去面试聊了半天MySQL索引,结果面试官黑脸让我回家等结果...

V-xin&#xff1a;ruyuanhadeng获得600页原创精品文章汇总PDF 目录 1、面试真题2、面试官心理分析3、面试题剖析 1、面试真题 MySQ索引的原理和数据结构能介绍一下吗&#xff1f;b树和b-树有什么区别&#xff1f;MySQL聚簇索引和非聚簇索引的区别是什么&#xff1f;他们分别是…

影响网站排名的4个因素,教你提高网站排名的方法

我们优化网站的目的是&#xff0c;使网站的排名靠前&#xff0c;让更多的用户看到并访问网站&#xff0c;达到营销的效果。网站排名靠前&#xff0c;可以提高企业品牌的知名度&#xff0c;对网站是非常有益的。在网络多变的环境下&#xff0c;影响网站排名有哪些因素呢&#xf…

JAVA使用springboot整合佳博标签打印机(三)

在JAVA使用springboot整合佳博标签打印机&#xff08;二&#xff09;的文章中使用的是花生壳进行的内网穿透 花生壳内网穿透会有异常情况,因为使用的是花生壳免费版本的内网穿透,可能会有服务异常的情况出现,免费服务没有保障 优化方案使用NGINX替换花生壳来实现内网穿透 准…

从头开始实现一个留言板-README

前言 仓库地址&#xff1a;da1234cao/RestFulAPIDemo 由于我没做过C服务器的开发&#xff0c;没有这方面的工程经验&#xff0c;所以代码中&#xff0c;大概率有一些我意识不到的问题&#xff0c;欢迎提issue。 PS: 代码使用C实现restful接口&#xff0c;给前端提供数据读取…