自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(87)
  • 收藏
  • 关注

原创 【ROS】利用ROS标准消息std_msgs::String发送结构体

在ROS进行结构体消息收发时,经常用书写proto文件,然后将proto字段与结构体字段一一对应,额外需要写一个adaptor转换程序,如果想要发送n个结构体,那么要写n个proto以及n个adaptor。首先我想着ROS标准消息里有可以发送消息的例子,我找到了 std_msgs::String消息,下面是std_msgs::String 消息收发的Demo。接下来是详细解决过程,碰到的问题,调试过程以及解决思路,不喜勿喷!(下面是临时写的,大致框架,具体后面在补充cmake,以及完整的例子)

2024-03-20 09:29:11 1364

原创 【C++】类模板、模板类、函数模板、模板函数、重载、重写、赋值、转换

模板,类是形容词,重点是模板。模板,函数是形容词,重点是模板。类模板和函数模板重点是模板。类,模板是形容词,重点是类。函数,模板是形容词,重点是函数。所以,模板类是根据类模板实例化出来的具体类。模板函数是根据函数模板实例化出来的具体函数。

2024-03-12 11:05:01 229

原创 【ROS源码阅读】

ros源码编译

2024-03-04 17:02:55 250

原创 【Linux】diff 命令

如果指定要比较目录,则 diff 会比较目录中相同文件名的文件,但不会比较其中子目录。是一个提示,用来说明变动位置。diff 以逐行的方式,比较文本文件的异同处。的第 58 行至第 61 行有变化。a 后面的 “58,61”,表示。a 前面的 “57”,表示。的第 57 行变动后变成。的第 57 行有变化;

2023-09-27 16:59:34 279

原创 【docker】Error response from daemon Container is not running

今天,拉取了同事更新的 docker image,在执行实例化 container 脚本后,执行。显示 container 1秒前退出。

2023-09-27 15:04:18 430

原创 【git】submodule

(1) 项目很大参与开发人员多的时候,需要将各个模块文件进行抽离单独管理。(2) 使用 git submodule 来对项目文件做成模块抽离,抽离出来的文件可单独成为一个 git 仓库。整个主项目对抽离出来的子项目(子模块)有依赖关系,却又并不关心子项目(子模块)的内部开发流程细节。(3) 代码如果全员可见,可以做成分支进行管理;如果代码不可见,可以创建为子仓库(独立一个git 仓库);子仓库管理模块代码,主仓库定时更新。(4) 简单理解:项目工程为一个仓库;模块为一个仓库;

2023-09-27 14:36:59 585

原创 【CMake】add_dependencies 命令

官方文档对此的解释为 :在顶级目标之间添加依赖关系。使顶层 target 依赖于其他顶层目标,以确保它们在 target 之前构建。顶级目标是由 add_executable(),add_library() 或 add_custom_target() 命令之一创建的。

2023-09-27 13:41:59 625

原创 【CMake】find_package 命令

如果没有使用[version]选项,没有给出需要的包组件列表,就会使用外部调用的相应参数(包括[version]的EXACT选项)。参考链接:https://blog.csdn.net/challenglistic/article/details/130138476。对于必须的包组件可以在 COMPONENTS 选项后列出(如果使用了REQUIRED选项,也可以在REQUIRED选项后列出)。用于指定要查找的包的版本(版本格式为major[.minor[.patch[.tweak]]])。

2023-09-27 11:16:34 249

原创 【CMake】专用变量 ARGC ARGV ARGN 代表含义

参考了两位大神的说明,自己跑了一下,发现有些出入,可能是版本问题,我定义 CMake VERSION 至少是 3.10 版本。专用变量 ARGV0,ARGV1,…:顺序代表传入的参数。CMake 脚本执行。

2023-09-14 15:54:51 265

原创 【Linux】ubuntu 添加新硬盘进行分区

ubuntu添加新硬盘,进行分区,并挂载到/home目录。

2023-09-11 20:28:05 2791

原创 【Linux】tar 与 zip 命令

所以看到 .tar.gz, .tar.bz2, .tar.xz 等等文件其实是 tar 文件之后进行 Gzip, Bzip2, XZ 压缩之后的文件。tar 本质上只是一个打包命令,可以将多个文件或者文件夹打包到一个 tar 文件中,结合其他的压缩程序再将打包后的档案文件压缩。c/x/t 三个参数不能同时使用。

2023-09-11 20:15:42 251

原创 侯捷老师【C++】构造函数

本文是个人学习笔记,素材来自C嘎嘎大佬——侯捷老师的教学视频。

2023-09-10 11:26:32 66

原创 【工程总结】Apollo-Cyber RT 中间件总结1

这个问题,首先 test_odom 下的 CMakeLists.txt 中,会包含 apollo_cm 库,会包含 【××× 工程】的其他库,直接 make,肯定不能链接其他库。库文件把【××× 工程】和 Apollo-Cyber 工程 CMakeLists.txt 中所有生成的库文件,在 docker 容器内打包到一个文件夹内,就是组成的库文件。第 1 版生成的库文件,是源码编译生成的库文件中抽取出关于消息收发的库文件,是源码编译生成库文件的子集。chmod 命令用于改变文件或目录的访问权限。

2023-09-08 23:54:39 553

原创 【C++11】final 与 override 关键字

(2) C++11:类定义时 加 final 关键字。(1) C++98:把构造函数进行私有。如何实现一个不能被继承的类?

2023-08-22 17:48:46 112

原创 【C++】 多态与虚函数

(1)通过基类的指针既可以访问基类的成员,也可以访问派生类的成员。(2) 试图使用不变的代码来实现可变的算法让父类的指针有 “多种形态”。(2) 用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。必须存在继承关系;继承关系中必须有同名的虚函数,并且它们是覆盖关系(函数原型相同)。存在基类指针,通过该指针调用虚函数。如果希望更改其功能的,一般应该将它声明为虚函数。如果成员函数在类被继承后功能不需修改,或派生类用不到该函数,则不要把它声明为虚函数。

2023-08-22 16:05:59 251

原创 【Linux】一切皆文件

只要是处于这些位置中的可执行文件,执行的时候就不需要指定路径,直接执行即可。什么是命令行解释器?参考链接。

2023-08-17 17:27:43 1129 2

原创 青岛大学_王卓老师【数据结构与算法】Week06_01_串的定义_学习笔记

串(string):零个或多个任意字符组成的有限序列。

2023-07-19 00:59:26 144

原创 青岛大学_王卓老师【数据结构与算法】Week05_15_队列的链式表示和实现_学习笔记

/ 最大队列长度// 队头指针// 队尾指针}LinkQuene;

2023-07-19 00:28:18 134

原创 青岛大学_王卓老师【数据结构与算法】Week05_14_队列的顺序表示和实现2_学习笔记

/ 最大队列长度// 初始化的动态分配存储空间// 头指针,若队列不空,则指向队列头元素int front;// 尾指针,若队列不空,则指向队尾元素的下一个位置int rear;}SqQueue;

2023-07-18 23:03:13 1217

原创 青岛大学_王卓老师【数据结构与算法】Week05_13_队列的顺序表示和实现1_学习笔记

base[0] 接在 base[MAXQSIZE - 1] 之后,若 rear + 1 == M,则令 rear = 0;当 rear 为 maxqsize 时,若向量的开始端空着,又可从头使用空着的空间。(2) 将队空间设想成一个循环的表,即分配给队列的 m 个存储单元可以循环使用。设数组大小为 MAXQSIZE,rear = MAXQSIZE 时,发生溢出。就好像下标为 0 的位置是接在下标为 5 的位置后面。每移动一次,队中元素都要移动。循环队列:循环使用为队列分配的存储空间。

2023-07-18 23:01:34 1077

原创 青岛大学_王卓老师【数据结构与算法】Week05_12_队列的类型定义_学习笔记

队列(Queue)是仅在表尾进行插入操作,在表头进行删除操作的线性表。表尾即 a_n 端,称为队尾;表头即 a_1 端,称为队头。队列是一种先进先出( FIFO )的线性表例如插入元素称为入队;删除元素称为出队;队列的存储结构为链队或顺序队(常用循环顺序队)ADT Queue{数据对象: D={a_i | a_i ∈ ElemSet, i = 1, 2, ..., n, n ≥ 0)数据关系: R={<a_i-1, a_i> | a_i-1, a_i ∈ D, i=2, ..., n)

2023-07-14 23:03:45 490

原创 青岛大学_王卓老师【数据结构与算法】Week05_11_栈与递归_学习笔记

(1) 若一个对象部分地包含它自己,或用它自己给自己定义,则称这个对象是递归的。(2) 若一个过程直接或间接地调用自己,则称这个过程是递归的过程。例如:递归求 n 的阶乘if(n == 0)return 1;else阶乘函数2 阶 Fibonaci 数列。

2023-07-14 08:12:24 540

原创 青岛大学_王卓老师【数据结构与算法】Week05_10_顺序栈的操作3_学习笔记

数据结构与算法基础–第05周10–3.3栈的表示和实现6–3.3.3链栈表示和实现链栈:链式结构存储栈。链栈是运算受限的单链表,只能在链表头部进行操作链栈的存储(1) 链表的头指针就是栈顶(2) 不需要头结点(3) 基本不存在栈满的情况(4) 空栈相当于头指针指向空(5) 插入和删除仅在栈顶处执行判断链栈是否为空链栈的入栈链栈的出栈取栈顶元素

2023-07-14 06:48:12 563

原创 青岛大学_王卓老师【数据结构与算法】Week05_09_顺序栈的操作3_学习笔记

(1) 判断是否栈空,若空则出错(下溢)(2) 获取栈顶元素 e。(3) 栈顶指针减 1。

2023-07-14 00:29:18 702

原创 青岛大学_王卓老师【数据结构与算法】Week05_08_顺序栈的操作2_学习笔记

(1) 判断是否栈满,若满则出错(上溢)(2) 元素 e 压入栈顶。(3) 栈顶指针加 1。

2023-07-14 00:21:30 653

原创 青岛大学_王卓老师【数据结构与算法】Week05_07_顺序栈的操作1_学习笔记

/ 栈底指针// 栈顶指针// 栈可用最大容量}SqStack;

2023-07-13 23:54:06 400

原创 青岛大学_王卓老师【数据结构与算法】Week05_06_栈的顺序表示_学习笔记

同一般线性表的顺序存储结构完全相同,利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素。上溢是一种错误,使得问题的处理无法进行;而下溢一般认为是一种结束条件,即问题处理结束。由于栈本身就是线性表,于是栈也有顺序存储和链式存储两种实现方式。下溢(underflow):栈已经空,还要弹出元素。上溢(overflow):栈已经满,又要压入元素。,作为栈的存储空间,将原栈的内容移入新栈。,指示栈顶元素在顺序栈中的位置。,指示栈底元素在顺序栈中的位置。但是,为了方便操作,通常。栈的顺序存储——顺序栈。

2023-07-13 23:25:58 510

原创 青岛大学_王卓老师【数据结构与算法】Week05_05_栈的抽象数据类型定义_学习笔记

ADT Stack{数据对象:数据关系:约定 a_n 端为栈顶, a_1 端为栈底。基本操作:初始化、进栈、出栈,取栈顶元素等}ADT Stack。

2023-07-11 23:59:31 117

原创 青岛大学_王卓老师【数据结构与算法】Week05_04_案例引入_学习笔记

任何一个算术表达式都由操作数(常数、变量)、算术运算符(+、-、*、/)和界限符(括号,表达式结束符 ‘#’、虚设的表达式起始符 ‘#’)组成。若这个运算符比 OPTR 栈顶运算符的优先级低,则从 OPND 栈中弹出两个运算数,从 OPTR 中弹出栈顶运算符进行运算,并将运算结果压入栈 OPND。(2) 运算符(operator):算术运算符、关系运算符和逻辑运算符。表达式求值是程序设计语言编译中一个最基本的问题,它的实现也需要用栈。(1) 当扫描到的是运算数,则将其压入栈 OPND,

2023-07-11 23:58:03 442

原创 青岛大学_王卓老师【数据结构与算法】Week05_03_队列的定义和特点_学习笔记

队列(queue)是一种先进先出FIFO)的线性表。在表的一端插入(表尾),在另一端(表头)删除。(1) 定义限定只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表(头删尾插)(2) 逻辑结构与同线性表相同,仍为一对一关系。(3) 存储结构用顺序队或链队存储,但以循环顺序队列更常见。(4) 运算规则只能在队首和队尾运算,且访问结点时按照先进先出(FIFO)的原则。(5) 实现方式关键是掌握入队和出队操作,具体实现依顺序队或链队的不同而不同。

2023-07-10 08:30:01 483

原创 青岛大学_王卓老师【数据结构与算法】Week05_02_栈的定义和特点_学习笔记

栈(stack)是一个特殊的线性表,是限定仅在一端(通常在表尾)进行插入和删除操作的线性表。又称为后进先出(Last In First Out)的线性表,简称LIFO结构。(1) 定义限定只能在表的一端进行插入和删除运算的线性表(只能在栈顶操作)(2) 逻辑结构与同线性表相同,仍为一对一关系。(3) 存储结构用顺序栈或链栈存储即可,但以顺序栈更常见。(4) 运算规则只能在栈顶运算,且访问结点时按照后进先出(LIFO)的原则。(5) 实现方式。

2023-07-10 08:07:04 379

原创 青岛大学_王卓老师【数据结构与算法】Week05_01_栈和队列的定义和特点1_学习笔记

普通线性表的插入和删除操作栈和队列是两种常用的、重要的数据结构栈和队列是限定插入和删除只能在表的端点进行的线性表。

2023-07-10 07:16:39 565

原创 青岛大学_王卓老师【数据结构与算法】Week04_13_案例分析与实现3_学习笔记

图书信息管理系统结点定义。

2023-07-06 23:32:29 440

原创 青岛大学_王卓老师【数据结构与算法】Week04_12_案例分析与实现2_学习笔记

则循环比较 p1 和 p2 所指结点对应的指数值(p1->expn 与 p2->expn),有下列 3 种情况。当 p1->expn < p2->expn 时,则应摘取 p1 所指结点插入到 " 和多项式 " 链表中去;当 p1->expn > p2->expn 时,则应摘取 p2 所指结点插入到 " 和多项式 " 链表中去;当 p1->expn == p2->expn 时,则将两个结点种的系数相加。若和不为零,则修改 p1 所指结点的系数值,同时删除 p2 所指结点。(1) 创建一个新数组 c。

2023-07-06 23:28:26 545 1

原创 青岛大学_王卓老师【数据结构与算法】Week04_11_案例分析与实现1_学习笔记

实现两个多项式相加运算。

2023-07-06 21:04:11 306

原创 青岛大学_王卓老师【数据结构与算法】Week04_10_线性表的应用3_学习笔记

用 La 或 Lb 的头结点作为 Lc 的头结点都可以,这里用 La 的头结点作为 Lc 的头结点。

2023-07-06 07:02:15 299

原创 青岛大学_王卓老师【数据结构与算法】Week04_09_线性表的应用2_学习笔记

(1) 依次从 La 或 Lb 中 “摘取” 元素值较小的结点插入到 Lc 表的最后,直至其中一个表变为空为止。现要求将 La 和 Lb 归并为一个新的线性表 Lc,且 Lc 中的数据元素扔按值非递减有序排列。(2) 继续将 La 或 Lb 其中一个表的剩余结点插入在 Lc 表的最后。已知线性表 La 和 Lb 中的数据元素按值非递减有序排列,(1) 创建一个空表 Lc。

2023-07-06 05:08:59 595

原创 青岛大学_王卓老师【数据结构与算法】Week04_08_线性表的应用1_学习笔记

假设利用两个线性表 La 和 Lb 分别表示两个集合 A 和 B,现要求一个新的集合 A = A ∪ B。(2) 如果找不到,则将其插入 La 的最后。依次取出 Lb 中的每个元素,执行以下操作。(1) 在 La 中查找该元素。

2023-07-06 04:25:07 605

原创 青岛大学_王卓老师【数据结构与算法】Week04_07_顺序表和链表的比较_学习笔记

数据元素的逻辑次序靠结点的指针来指示,插入和删除时不需要移动数据元素。结点空间可以动态申请和释放。

2023-07-05 23:07:29 379

原创 青岛大学_王卓老师【数据结构与算法】Week04_06_单链表、循环链表、双向链表的比较

数据结构与算法基础–第04周06–单链表、循环链表、双向链表的比较📚 📌 📝 🔍 ⚠️ 😊 ⭐ 🔗 👋 ❓ 💬 🔹 🔸 🔖 ❗️ 💟 ➔

2023-07-05 23:02:13 243

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除