ROS程序设计系列 - 2.ROS Package

ROS程序设计系列 - 2.ROS Package

  • 1. 源由
  • 2. 关键要点
    • 2.1 ROS包组成
    • 2.2 消息解耦
    • 2.3 包版本管理
    • 2.4 编译配置
    • 2.5 ROS C++ Client Library
      • 2.5.1 Initialization and spinning
      • 2.5.2 Node handle
      • 2.5.3 Logging
      • 2.5.4 Subscribe and Publisher
      • 2.5.5 Parameters
    • 2.6 Object Oriented Programming
    • 2.7 RViz
  • 3. 课程视频
  • 4. 补充 - Eclipse IDE
    • Step 1:配置Eclipse编译环境
    • Step 2:选择Workspace路径
    • Step 3:导入已经存在的工程
    • Step 4:建立工程Index信息
    • Step 5:工程相关文件目录

1. 源由

在《ROS程序设计系列 - 1.ROS介绍》简单介绍了下ROS中间件的一些基本概念,对已有示例进行了最基本的构建和运行等基本操作。

接下来,就是如何构建一个自己的ROS包?

2. 关键要点

2.1 ROS包组成

  • 配置
  • 源码include/src
  • 自测试test
  • 启动脚本launch
  • 其他CMakeLists.txt/package.xml

在这里插入图片描述

2.2 消息解耦

在前面介绍的时候,提及Node之间的交互采用ROS消息进行消息解耦。在ROS包在设计的时候,尽量将对外消息独立分立出来。

  • 设计先行的落地操作:API接口定义
  • 组件实现以及依赖应用的并行开发要求
  • HLD/LLD分离解耦,快速大通顶层逻辑

在这里插入图片描述

2.3 包版本管理

版本管理对于软件设计来说是重中之重,更是研发节奏的体现。

关于包的顶层设计依赖关系,里程碑节点,维护人员,版本(Alpha/Beta/Debug/Release)等都需要很好的进行安排协调,其落地操作方式就是这个文件的维护。

在这里插入图片描述

2.4 编译配置

ROS包采用CMake进行工程管理方式,相关的编译选项、源代码文件、目标交付件名称都在这里进行定义。

在这里插入图片描述
在这里插入图片描述

2.5 ROS C++ Client Library

ROSCPP是一个基础包,完成了以下基本功能:

  • Initialization and spinning
  • Node handle
  • Logging
  • Subscribe and Publisher
  • Parameters

2.5.1 Initialization and spinning

在这里插入图片描述

2.5.2 Node handle

在这里插入图片描述

2.5.3 Logging

在这里插入图片描述

2.5.4 Subscribe and Publisher

  • Subscribe
    在这里插入图片描述
  • Publisher
    在这里插入图片描述

2.5.5 Parameters

  • ROS Parameter Server

在这里插入图片描述

  • invoke C++ API

在这里插入图片描述

2.6 Object Oriented Programming

在这里插入图片描述

2.7 RViz

略,详见:https://wiki.ros.org/rviz

在这里插入图片描述

3. 课程视频

Programming for Robotics, Lecture 2 Your first ROS package

4. 补充 - Eclipse IDE

IDE环境有很多,笔者也不喜欢Eclipse,其实整个包组成知道,一个Notepad也能解决问题。

注:根据各自习惯和喜好,选择适合自己的就是好的。

Step 1:配置Eclipse编译环境

在这里插入图片描述

Step 2:选择Workspace路径

在这里插入图片描述

Step 3:导入已经存在的工程

在这里插入图片描述

Step 4:建立工程Index信息

在这里插入图片描述

Step 5:工程相关文件目录

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Android】使用Binder(AIDL)实现利用自定义Bean进行的进程间通信(二)

项目前置 这是我之前写的关于Binder的一些知识点和使用基本数据类型在通信的文章,感兴趣的可以看一下: Binder(一)Binder的介绍和AIDL使用Binder的实例 项目目标 在两个APP之间进行数据传递,使用Android推荐的Binder通讯&#…

产业生态远超预期,商用进程全面提速:5G RedCap,凭什么这么火?

2022年6月,3GPP R17版本正式宣布冻结。除了针对传统5G技术标准进行完善之外,R17还推出了一项新的中高速物联技术标准,也就是我们今天文章的主角——RedCap。 RedCap推出后,受到了业界上下的广泛关注。它在传统5G的基础上&#xff…

新手小白系列——关于 Docker 安装的方法

Docker 是一个应用打包、分发、部署的工具基础概念: 镜像:软件安装包,可以方便的进行传播和安装。 容器:软件安装之后的状态,每个软件运行环境都是独立的、隔离的,称之为容器 仓库:专门用来传播…

k8s集群新增计算节点使用华为iscsi存储创建的pvc存储挂载报错:FailedMount

背景: 因公司业务需求的增长,导致kubernetes集群测试环境的计算节点资源不够使用了,这时候就申请了几台服务器加入到kubernetes集群中,因为维护的kubernetes集群的对接华为了iscsi存储,通过storageclass组件来创建pvc存…

Vue3中的常见组件通信之插槽

Vue3中的常见组件通信之插槽 概述 ​ 在vue3中常见的组件通信有props、mitt、v-model、 r e f s 、 refs、 refs、parent、provide、inject、pinia、slot等。不同的组件关系用不同的传递方式。常见的撘配形式如下表所示。 组件关系传递方式父传子1. props2. v-model3. $refs…

GANs网络在图像和视频技术中的应用前景

Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…

vue3中实现3D地图——three.js

需求点 地图区域大小随着父盒子大小变动,窗口缩放自动适配每个区域显示不同颜色和高度,描边每个区域显示名字label和icon点击区域改变其透明度,并且弹窗显示信息窗口点击点也可以可以自由放大缩小,360度旋转 包 npm install d3^…

lib9-02 配置扩展 ACL

实验:配置扩展 ACL 1、实验目的 通过本实验可以掌握编号扩展 ACL 定义和应用的方法命名扩展 ACL 定义和应用的方法 2、实验拓扑 实验拓扑如下图所示。使用扩展 ACL 实现如下访问控制 拒绝 PC1 所在网段访问 Server1 的 Web 服务拒绝 PC2 所在网段访问 Server1 …

Localization.strings文件显示乱码

项目场景: ios app 的多语言检测 问题描述 想检测app本地化文件,但打开Localization.strings文件发现都是乱码 原因分析: 1.编码问题 2.strings被识别编码成了binary的格式 解决方案: 使用苹果提供的plutil把binary转成json格…

天风宏观:再论经济“去金融化”

天风宏观认为,经济“去地产化”之后也正在“去金融化”,应逐渐淡化金融数据对于经济的指示意义,更关注经济数据本身和进行中的结构转型。 5月金融数据延续了此前逻辑, 受规范手工补息、存款分流等因素影响,M1同比-4.2%…

chrome 使用本地替换功能替换接口返回内容

前言 在web开发或测试过程中,我们经常会需要修改接口返回值来模拟数据进行开发或测试。 常用的方式一般通过抓包工具,如charles,或fildder 的功能。 例如我们可以使用charles打断点的方式,或者使用charles的map local 功能进行…

2024 AI大模型 常问的问题以及答案(附最新的AI大模型面试大厂题 )

前言 在2024年AI大模型的面试中,常问的问题以及答案可能会涵盖多个方面,包括AI大模型的基础知识、训练过程、应用、挑战和前沿趋势等。由于我无法直接附上174题的完整面试题库及其答案,我将基于提供的信息和当前AI大模型领域的热点&#xff…

高中数学:数列-累加法与累乘法

一、累加法 主要用来解决类似等差数列递推公式的相关变形题目 1、推导等差数列的通项公式 2、题型1 对递推式变形,通项的系数为1,常数项d变成含n的一次函数 解: 题型2 对递推式变形,通项的系数为1,常数项d变成含…

hdfs源码解析之DFSClient

1、DFSClient类简介 DFSClient 是 Hadoop 分布式文件系统(HDFS)中的一个核心类,用于客户端与 HDFS 之间的交互。它提供了一组方法,使客户端应用程序可以方便地与 HDFS 进行通信,包括文件的读取、写入、创建、删除、重命…

探索磁力搜索引擎:互联网资源获取的新视角

在当今数字化社会中,寻找和获取网络资源变得更加便捷和多样化。磁力搜索引擎作为这一趋势的一部分,提供了一种新颖而有效的方法来定位和获取用户所需的文件、媒体和其他数字内容。本文将深入探讨磁力搜索引擎的工作原理、使用场景及其在网络文化中的影响…

BizDevOps全局建设思路:横向串联,纵向深化

本文来自腾讯蓝鲸智云社区用户:CanWay BizDevOps概述 IT技术交付实践方法在不断迭代中持续优化。在工业化时代,Biz(业务)、Dev(开发)、Ops(运维)三者往往相对分离,甚至有…

JAVA的优势是什么?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「java的资料从专业入门到高级教程」, 点个关注在评论区回复“666”之后私信回复“666”,全部无偿共享给大家!!! java编程语言自1995年问世…

家人们,我最近迷上了食家巷的方形饼

那独特的方形造型,超级可爱。👏刚出炉的方形饼,热气腾腾,散发着诱人的香气。😋咬一口,酥脆的外皮“咔滋”作响,里面的面饼却又十分绵软,口感层次超丰富!🤩无论…

【查看显卡信息】——Ubuntu和windows

1、VMware虚拟机 VMware虚拟机上不能使用CUDA/CUDNN,也安装不了显卡驱动 查看显卡信息: lspci | grep -i vga 不会显示显卡信息,只会输出VMware SVGA II Adapter,表示这是一个虚拟机,无法安装和使用显卡驱动 使用上…

Chromium 开发指南2024 Mac篇-开始编译Chromium(五)

1.引言 在之前的指南中,我们已经详细介绍了在 macOS 上编译和开发 Chromium 的准备工作。您学会了如何安装和配置 Xcode,如何下载和配置 depot_tools,以及如何获取 Chromium 的源代码。通过这些步骤,您的开发环境已经搭建完毕&am…