自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 创建mysql库,及webserver使用编译

然后来到打开项目文件夹,运行。

2024-07-28 14:02:07 156

原创 计算一个序列化流的长度

采用内联函数便于加快计算速度,参数列表中采用的是boost库的array函数,一个对象为一个键值对。里面采用的模板参数为T和N。

2024-07-12 15:59:46 178

原创 this指针

this指针是C++中的一个隐含指针,它指向当前对象的地址。在类的成员函数中,可以使用this指针来访问当前对象的成员变量和成员函数。

2024-07-10 15:54:28 142

原创 static在c++中的作用

4. 静态成员函数:在类中定义的静态成员函数,不依赖于类的任何对象,可以直接通过类名加作用域解析运算符(::)来调用。静态成员函数不能访问非静态成员变量和非静态成员函数。1. 静态局部变量:在函数内部定义的静态局部变量,其生命周期为整个程序运行期间,但只能在该函数内部访问。每次调用该函数时,静态局部变量的值会保留下来。2. 静态全局变量:在全局范围内定义的静态变量,其作用域仅限于当前文件内,其他文件无法访问。3. 静态成员变量:在类中定义的静态成员变量,属于类的所有对象共享,而不是每个对象单独拥有一份。

2024-07-10 12:09:11 245

原创 protobuf及其使用

使用protobuf编译器protoc编译proto文件为.pb.h和.pb.c文件(c++)看绿色注释部分:从左至右为,编译器,.proto文件的路径,编译的语言类型,编译的源文件。首先打开proto文件,定义一个类(数据结构),并编写成员变量。

2024-07-07 17:47:49 183

原创 gdb及其使用

的缩写,用于显示当前线程的调用栈(call stack)的跟踪信息。当程序崩溃或出现错误时,调用栈是非常有用的调试工具,因为它可以帮助开发者理解在发生问题时,哪些函数被调用以及它们是如何被调用的。会从当前函数开始,向上回溯调用栈,并显示每个函数的名称、地址以及源代码中的位置(如果可用)。这样,开发者就可以从调用栈中看到函数调用的完整路径,从而找到可能导致问题的代码位置。中遇到了一个段错误(segmentation fault),并希望查看在发生错误时的调用栈,你可以使用。(GNU调试器)中,

2024-07-01 16:31:42 256

原创 std::enable_if和std::is_base_of

std::enable_if,其主要为了完成模板特偏化,有两个参数,第一个为布尔值类型,第二个如果布尔值为true,其为默认空值,如果已经赋值,则为对应的类型。

2024-06-26 21:03:26 213

原创 Stream流

IStream类,OStream类,Serializer类,serialize函数,deserialize函数,serializationLength函数,serializeMessage函数。Stream基类,为IStream和OStream提供通用功能。

2024-06-26 20:59:36 185

原创 roscpp_serialization序列化

链接器会根据符号名字在全局符号表中查找对应的地址,并将其与程序中的调用或访问点进行关联,从而使得程序能够正确地调用共享库中的函数或访问其中的变量。放在一个公用的接口里面,通过这个接口来存储序列化和反序列化的数据。首先是roscpp_serizlization_macros.h该文件的功能为定义ROSCPP_SERIALIZATION_DECL宏是否用于在构建ros的序列化功能时进行导出和导入符号的声明。(该部分的功能为,如果定义的为动态库,那么即为导出符号,如果定义的为静态库,就不是导出符号(为空))

2024-06-21 14:06:35 300

原创 ROS中的roscpp_core组件

为ROS通信相关软件包,包含ROS中间件/通信包,核心客户端库(roscpp、rospy、roslisp)和图形自省工具(rostopic、rosnode、rosservice、rosparam),他们为主题、节点、提供实现和工具服务和参数。本质就是校验数据的原信息是否符合ros的底层接口、通过该接口可以获取消息的元数据、Pub Sub的时候都会去校验,如果校验失败会报错,并且数据会发布和订阅失败。时间库,类似于c++时间库,是ros独有的自己封装的时间库,包含时间的换算。roscpp一共包含四个组件库。

2024-06-19 22:26:27 845

原创 腾讯云服务器连接vscode ssh教程

首先在控制台需要确保用户名为自己终端@前的用户名终端:注意,这里控制台默认是ubuntu用户名,这里一定要改,要不后面用ssh密码登录是登录不上的。然后你自己重置一个密码。然后操作vscode端:首先安装ssh插件,对了忘了说了,得自己在云服务器安装ssh server安装完插件,配置ssh这里的话,需要注意,格式为 ssh 刚才的那个用户名@公网ip注意:这里是公网ip,不是你进入服务器后通过ifconfig查询的ip,那个是内网ip,公网ip能在控制台查询。

2024-05-02 16:41:00 472 1

原创 第二节 docker及其使用

docker是一种容器,容器就是一个虚拟化的独立的环境,容器区别于虚拟机,它不是一个独立的操作系统,而是对进程进行隔离。对于容器里面的进程来说,它接触到的各类资源都是虚拟的,这样就实现了其与底层系统的隔离。容器是进程的级别。docker里的概念:1.dockerfile --->docker会根据该文件进行镜像的创建2.docker build -f ros_x86.docker . --->根据dockerfile创建这个镜像。

2024-04-18 14:31:37 1032

原创 第一节 环境配置

首先进行openssh的安装,有了openssh才能在vscode上进行远程编程操作安装完后,查看server的状态如果是running说明是正常跑起来了这里systemctl的作用是(参考文心一言)systemctl是一个用于控制systemd系统和服务管理器的命令行工具。systemd是 Linux 系统初始化系统(init system)和服务管理器,它替代了传统的 init 系统(如 SysV init 或 Upstart),并提供了更为强大和灵活的服务管理能力。systemctl:你可以使用。

2024-04-12 16:05:35 489

原创 算法训练day7| 344.反转字符串 541. 反转字符串II 54.替换数字 151.翻转字符串里的单词 55.右旋转字符串

【代码】算法训练day7| 344.反转字符串 541. 反转字符串II 54.替换数字 151.翻转字符串里的单词 55.右旋转字符串。

2024-03-24 11:08:41 131

原创 算法训练day6| 454.四数相加II 383. 赎金信 15. 三数之和 18. 四数之和

【代码】算法训练day6| 454.四数相加II 383. 赎金信 15. 三数之和 18. 四数之和。

2024-03-12 13:13:14 364 1

原创 算法训练day5| 哈希表理论基础 有效的字母异位词 两个数组的交集 快乐数 两数之和

【代码】算法训练day5| 哈希表理论基础 有效的字母异位词 两个数组的交集 快乐数 两数之和。

2024-03-09 16:49:54 377 1

原创 算法训练day4| 两两交换链表中的节点 删除链表的倒数第N个节点 二分查找

【代码】算法训练day4| 两两交换链表中的节点 删除链表的倒数第N个节点 二分查找。

2024-02-08 22:10:44 362

原创 算法训练day3| 链表理论基础 移除链表元素 设计链表 反转链表

注意:这里的ListNode(int x) : val(x), next(NULL) {}为构造函数,int x为构造函数的参数,意为如果该链表定义有初始化赋值,那么将该链表值直接赋值为该值,且默认链表指针指向NULL.如果没有构造函数,则上述构造语句无效(不能直接给变量赋值)

2024-01-26 16:00:51 365 1

原创 算法训练day2| 有序数组的平方、长度最小的子数组

核心是result[k--],双指针的应用,主要在两边大,向内侧递减的情况,注意i

2023-12-28 17:41:34 394 1

原创 算法训练day1 | 二分法、双指针

核心还是想清楚,当如果right = middle - 1 的情况下,那么因为是左闭右开的缘故,就取不到value[middle-1]的值(只能取到它左边一位的值)。同时左闭右开右边为right=nums.size()而不是nums.size()-1;是比正常的数组长度多了一位的,这是左闭右开的核心。双指针法,不一定是双for循环,核心是nums[j++]

2023-12-28 12:57:31 354 1

原创 make_shared()

是C++11引入的一种智能指针,它用于创建一个指向动态分配的对象的。函数确保在堆上分配内存,以容纳对象本身以及。

2023-12-01 15:56:37 3145 1

原创 内联函数inline

具体来说,编译器会在发现某段代码在调用一个内联函数时,将该函数的代码整段插入到当前位置,而不是进行通常的函数调用过程。这一特性使得内联函数在处理一些频繁调用的小函数时具有优势,因为可以避免大量的函数入栈操作,从而节省栈空间或栈内存的消耗。第二个const为一个常量引用,其表示这个引用引用的对象不能被修改,在这里面,其引用的是_internal_comname()函数返回的字符串,这样就保证了其不会修改字符串的内容,即返回后的内容并不会被修改。首先,内联函数的代码体积较大,可能会增加目标程序的大小;

2023-12-01 15:26:03 51 1

原创 c++进行字符串查找,如果找到就替换为一个新的指定字符串的函数

replace(),其参数第一项为位置,第二项为替换项的长度,第三项为替换内容。其中,find()如果找到,会返回这个元素位置的索引。

2023-12-01 15:12:13 77 1

原创 override

C++ 中override的意义及作用

2023-12-01 14:40:45 36 1

原创 基于STM32的ROS车辆底层开发(调速部分)

其中的改进代码并不具有唯一性,需要结合自身的使用和学习进行进一步的改进和扩充,以便加强自身对stm32内容的理解。左右轮速(线速度,角速度)是根据前后两轮定时器中断的脉冲差值计算的,因此,不同型号的编码器,其参数不同,我这里使用编码器为13线,电机减速比为30,采用四倍频读取脉冲,因此,每旋转一圈编码器的脉冲数为13*30*4。这里需要注意的是,这段代码涉及到电机的底层驱动方式,由于我们采用的是DRV8848芯片,使用双路PWM输出以控制电机,所以这里需要对CCR寄存器进行赋值操作以实现PWM的变化。

2023-10-16 15:34:33 499 1

原创 pip默认安装不到python2.7而是默认安装在python3

按其他博客提示正常安装完后,更新一下环境变量,然后重启机器即可。

2023-10-09 15:44:11 164 1

原创 7.LQR算法解析及实现

Apollo星火计划 PNC专项课程 LQR算法解析及实现

2023-02-03 16:48:10 2403

原创 6.PID算法解析及实现

Apollo星火计划 PNC专项课程笔记 PID算法解析及实现

2023-02-03 16:42:19 853

原创 5.开放空间规划算法解析及实现

Apollo星火计划PNC专项课程 开放空间规划算法解析及实现

2023-02-03 16:40:15 2644

原创 4.速度规划算法解析及实现

Apollo星火计划 PNC专项课程笔记 速度规划算法解析及实现

2023-02-03 16:29:39 4156 1

原创 3.路径规划算法解析及实现

Apollo 星火计划 PNC专项课程笔记 路径规划算法解析及实现

2023-02-03 16:23:17 3373

原创 2.参考线平滑算法解析及实现

Apollo 星火计划PNC专项 参考线平滑算法解析及实现

2023-02-03 16:21:19 1362

原创 1.决策技术解析与实现

Apollo PNC专项 1.决策技术解析与实现

2023-02-03 16:16:32 434

原创 从零开始编写移动机器人下位机(stm32)程序

本文将介绍使用stm32驱动双直流电机的程序框架。

2022-01-18 09:45:32 3463 1

空空如也

空空如也

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

TA关注的人

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