ROS2——功能包(六)
ROS2机器人操作系统
文章目录
- ROS2机器人操作系统
- 前言
- 一、功能包是什么
- 二、功能包的具体使用
- 1.创建功能包
- 2.编译功能包
- 3.功能包的结构
- C++功能包
- Python功能包
前言
每个机器人可能有很多功能,比如移动控制、视觉感知、自主导航等,如果我们把这些功能的源码都放到一起当然也是可以的,但是当我们想把其中某些功能分享给别人时,就会发现代码都混合到了一起,很难拆分出来。
一、功能包是什么
举个例子,我们手上有很多红豆、绿豆、黄豆,假设都放在一个袋子里,如果只想把黄豆都拿出来,是不是得在五颜六色的豆子里一颗一颗都找出来,数量越多,你就越头疼;如果我们把不同颜色的豆子放在不同的三个袋子里,需要拿出某种豆子的时候,不就立刻可以找出来了么。
功能包就是这个原理,我们把不同功能的代码划分到不同的功能包中,尽量降低他们之间的耦合关系,当需要在ROS社区中分享给别人的时候,只需要说明这个功能包该如何使用,别人很快就可以用起来了。
所以功能包的机制,是提高ROS中软件复用率的重要方法之一。
二、功能包的具体使用
1.创建功能包
我们可以使用这个指令:
ros2 pkg create --build-type <build-type> <package_name>
ros2命令中:
**pkg:**表示功能包相关的功能;
**create:**表示创建功能包;
build-type:表示新创建的功能包是C++还是Python的,如果使用C++或者C,那这里就跟ament_cmake,如果使用Python,就跟ament_python;
**package_name:**新建功能包的名字。
比如在终端中分别创建C++和Python版本的功能包:
cd ~/dev_ws/src
ros2 pkg create --build-type ament_cmake learning_pkg_c # C++
ros2 pkg create --build-type ament_python learning_pkg_python # Python
2.编译功能包
在创建好的功能包中,我们可以继续完成代码的编写,之后需要编译和配置环境变量,才能正常运行:
cd ~/dev_ws/src
colcon build # 编译工作空间所有功能包
source install/local_setup.bash
3.功能包的结构
C++功能包
首先看下C++类型的功能包,其中必然存在两个文件:package.xml和CMakerLists.txt。
package.xml文件的主要内容如下,包含功能包的版权描述,和各种依赖的声明。
CMakeLists.txt文件是编译规则,C++代码需要编译才能运行,所以必须要在该文件中设置如何编译,使用CMake语法。
Python功能包
C++功能包需要将源码编译成可执行文件,但是Python语言是解析型的,不需要编译,所以会有一些不同,但也会有这两个文件:package.xml和setup.py。
package.xml文件的主要内容和C++版本功能包一样,包含功能包的版权描述,和各种依赖的声明。
setup.py文件里边也包含一些版权信息,除此之外,还有“entry_points”配置的程序入口
ROS2——功能包(六)相关推荐
- ROS2入门教程—创建ROS2功能包(C++版)
ROS2入门教程-创建ROS2功能包(C++版) 1 ROS2中的功能包 2 创建功能包 3 编译功能包 4 设置环境变量 5 运行功能包 6 功能包中的内容 7 修改package.xml文件 ...
- 《动手学ROS2》3.5.1创建工作空间和功能包
本系列教程作者:小鱼 公众号:鱼香ROS QQ交流群:139707339 教学视频地址:小鱼的B站 完整文档地址:鱼香ROS官网 版权声明:如非允许禁止转载与商业用途. 3.4.1 创建工作空间和功能 ...
- 二十六、rosbag功能包
文章目录 一.引言 二.命令行实现 2.1 启动ros相关节点,创建存储目录 2.2 开始录制 2.3 查看文件 2.4 回放文件 三.代码实现 3.1 C++实现 3.1.1 写bag 3.1.2 ...
- 原创 | R的基础及进阶数据可视化功能包介绍
R 作为入门级编程语言,被经常运用在数据整理.数据可视化.以及机器学习中. 本篇文章将主要介绍在R中如何可视化数据 (基础+进阶). R绘图的原理 使用R绘图,我们需要在脑海中明确几个必要元素.首先, ...
- ROS 2 index翻译(七)——用Colcon编译功能包(package)
这是一个用colcon如何创建和编译ROS工作区的简要教程.这是一个实用的教程,并非来替代核心文档. ROS 2 在Bouncy之前的发行版,使用的编译工具是ament_tools,这在ament教程 ...
- 蓝桥ROS机器人系统更新和功能包安装记录
直接系统更新会有错误: ☞ ROS域名解析问题记录(蓝桥云课ros.asc) sudo apt update 使用ros.asc如下: -----BEGIN PGP PUBLIC KEY BLOCK- ...
- ROS Noetic入门笔记(二)ROS Noetic创建工作空间和功能包
ROS Noetic入门笔记(一)在ubuntu20.04中安装ROS Noetic并简单测试 ROS Noetic入门笔记(二)ROS Noetic创建工作空间和功能包 ROS Noetic入门笔记 ...
- 机器人编程趣味实践18-他山之石(功能包)
机器人操作系统功能包可以使用如下两种方式使用: sudo apt install xxx colcon build xxx 第一种是打包的安装文件,第二种是源代码编译. 如何自己编写功能包后续细说,本 ...
- ROS功能包在线把速腾聚创点云格式转为velodyne点云格式
国外算法很多slam算法是基于velodyne_lidar开发的,对国内雷达型号不友好,在这里记录一下使用rs_to_velodyne功能包实时在线将速腾聚创点云转化为velodyne点云的过程 环境 ...
最新文章
- node-sass安装失败解决方法
- 【ios】Storyboard教程
- html清除溢出,深入理解CSS overflow:hidden——溢出,坍塌,清除浮动
- 【To Do 难点】最大搜索二叉树
- leetcode 221. Maximal Square 求一个数组中由1组成的最大的正方形面积 ---------- java...
- php薪资图表,加薪利器,老板再也不用担心生成图表图片了
- Lingo基础语法笔记
- php可以用cmd运行,用cmd运行php代码
- xp计算机硬盘东西不显示,XP系统中认不到移动硬盘怎么办?XP系统无法识别移动硬盘解决方法...
- 工业企业外购材料进项税额的会计处理
- matlab保存pgm图形,pgm格式文件及其在matlab中的读取存储方法(1)
- 关于MAC安装windows【支持老版本】 支持安装全系列windows
- 路由器WDS桥接教程
- (附源码)springboot社区养老医疗服务平台 毕业设计 041148
- 数据结构 —— ADT(抽象数据类型)
- 短网址dwz.cn批量注册
- APISpace 中文分词API
- markdown图片旋转
- 微信公众号前后端分离授权登录
- 和韩雪冬学到的网页设计点滴
热门文章
- 【IoT】NFC CPU 卡在实际产品中的应用
- iOS审核拒绝苹果官方原因详解
- 线性可编程电源是如何工作?设计原理是什么?
- 通过对射式红外传感器计次实验讲解EXTI中断
- ribbon源码分析之自定义配置、全局配置
- 来控制自己的力量和旋转
- c++builder 2010 [ILINK32 Error] Fatal: Unable to open file 'xxxxxx.OBJ'
- POI:从Excel文件中读取数据,向Excel文件中写入数据,将Excel表格中的数据插入数据库,将数据库中的数据添加到Excel表
- 编写一个函数,输入整数m和n,计算m的n次幂,用c语言实现
- 公司业务系统与呼叫中心系统的对接方式