自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 机器人控制算法设计

系统辨识主要是依据系统输入输出的时间函数,来确定描述系统的行为,若系统里边所有的特性都是比较确定的 那基本可以使用这种数学方程的方式描述出来。但是在有一些比较精密的这样的加工领域里边,我们可能希望这个控制精度能够达到微米级,这样的系统里面,它有许多的这种非线性的因素、以及外界的干扰都是我们需要考虑的,比如这种摩擦力、机械变形等等,我们能通过这种系统辨识的方式,可以把这样的一些因素给它明确的确定出来。此外,在不同的应用场景下,使用什么样的算法,不同的参数应该如何调整。3、在七维空间中应用RRT进行路径规划。

2023-07-20 16:34:36 943

原创 静态成员变量与非静态成员变量

与实例变量不同,静态成员变量不依赖于特定的对象实例,因此可以在没有创建类实例的情况下访问它们。静态成员变量的值在所有实例之间是共享的,当一个实例修改了静态成员变量的值,其他实例也会受到影响。它的值与类相关联,而不是与每个汽车对象相关联。静态成员变量是属于类本身的变量,而不是类的实例(对象)的变量。在这个例子中,每个汽车对象有自己的maxSpeed值,但它们共享相同的carCount值,因为carCount是静态成员变量。非静态成员变量(实例变量)的值与每个对象实例相关联,每个对象有自己的变量副本。

2023-07-04 22:20:18 88

原创 C++学习日志

虚函数和纯虚函数都可以实现多态性,通过基类类型的指针或引用来调用派生类对象的方法,实现不同对象在相同的函数调用下表现出不同的行为。然后,狮子、老虎和长颈鹿可以作为Animal类的派生类,它们继承了Animal类的属性和方法,并可以在此基础上添加自己特定的行为。析构函数是一种特殊的成员函数,与类的名称相同,以波浪号(~)作为前缀,没有返回类型(包括void),在对象销毁时自动调用。构造函数和析构函数在对象的生命周期中起着重要的作用,构造函数负责对象的初始化,析构函数负责对象的清理。

2023-07-04 20:23:15 111

原创 const关键字作用与应用场景

类型检查:const关键字定义的常量具有类型检查,而宏定义(使用#define)的常量没有类型检查。错误定位:使用const关键字定义的常量在编译错误时能够提供更准确的错误定位,编译器可以指示出具体的常量名称和类型。内存使用:使用const关键字定义的常量会在内存中分配存储空间,而宏定义的常量只是简单的文本替换,没有存储空间的分配。同时,也可以防止在代码中不小心修改常量的错误,提高了代码的可维护性。调试信息:使用const关键字定义的常量可以在调试器中查看其值,而宏定义的常量无法在调试器中查看。

2023-07-04 15:42:01 422

原创 为什么Marlin没有使用实时操作系统?

然而,这并不是说在裸机上运行就是唯一的或者总是最好的选择。对于更复杂的应用,或者需要支持多任务、网络、文件系统等功能的应用,使用一个操作系统可能会更合适。每种设计都有其权衡和适用的场景。在裸机上运行一个固件或程序,意味着这个固件或程序可以直接控制硬件,不需要通过操作系统的抽象层。在实际操作中,由于3D打印机固件的特殊性和专用性,直接在裸机上运行通常是最有效和最简洁的方式。

2023-06-28 15:45:55 66 1

原创 步进电机中断时间计算:查找表、内插及权重计算方法详解

本文档详细讲解了步进电机中断时间计算的流程,包括查找表、内插和权重计算的定义原理,以及它们在中断时间计算中的应用。通过查找表的使用,我们可以提高计算效率;通过内插方法,我们可以在已知数据点之间进行估算;通过权重计算,我们可以在查找表项之间进行修正。这些方法的结合运用使得步进电机中断时间计算更加高效和准确。希望本文档能帮助您加深对这些知识点的理解,并在实际应用中取得更好的效果。

2023-03-31 22:43:40 176

原创 位掩码操作

例如,假设我们有一个16位二进制数1010101010101010,我们想提取其中的第5到第10位(含),我们可以定义一个掩码,将这些位设置为1,其余位设置为0,这个掩码是0000001111110000。例如,假设我们有一个8位二进制数11010101,我们想将它的第5和第6位设置为1,其余位不变,我们可以使用位掩码操作来实现这个目标。然后我们可以使用按位或操作符“|”将掩码应用于源操作数,将目标位设置为1。总的来说,位掩码操作是一种非常常见和有用的技术,它允许我们对二进制数据进行细粒度的操作和控制。

2023-03-31 15:31:16 1031

原创 C/C++参数传递

ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168015857516800182155320%2522%252C%2522scm%2522%253A%252220140713.130102334…(pass by reference):将参数的地址传递给函数,可以在函数内部通过该地址来直接操作原始变量,对原始变量的操作会影响函数外部的变量值。(pass by value):将参数的值复制一份,传递给函数,对函数内部的操作不会影响原始变量。

2023-03-30 15:02:26 39

原创 野指针、空指针、悬空指针与万能指针

参考链接:https://mp.weixin.qq.com/s/Jt57faEXX21_eshHLkIqAg。悬空指针 是指针最初指向的内存已经被释放了的一种指针。(是编码过程中最容易出现的问题)万能指针 void * 可指向任意内存空间地址,可强制类型转换为其他类型指针。空指针是指初值被赋为NULL的指针,不指向任何对象或函数。野指针是指没有被初始化的指针。#嵌入式与C/C+±每日一题。

2023-03-25 00:22:18 95

原创 Static关键字的作用

参考链接:https://mp.weixin.qq.com/s/yLj0cKT005455g2nEw5jWg。2.修饰全局变量,限制了作用域(只能被包含该定义的文件访问)3.修饰函数,限制了作用域,只能在包含该函数定义的文件中调用。1.可以修饰局部变量,延长生命周期。

2023-03-25 00:18:28 42

原创 Volatile关键字的作用

但在某些场合,譬如:中断里会改变全局变量的值、多任务共享一个全局变量,变量读取寄存器值时,可能会因为被优化而导致程序产生一些不可预知的错误。参考链接:https://mp.weixin.qq.com/s/FqarFGOlsNIhcWDqjRM4hA。总的来说,volatile就是告诉编译器不要过度优化,每次去从内存中取值,以确保读出来的值是最新的。编译器的优化原则之一:减少对于内存的访问次数,因为从内存里读取数据的效率较低。

2023-03-25 00:16:06 27

原创 大小端模式

数据在内存中以字节形式存放,X86结构是小端模式,而KEIL C51则为大端模式。很多的ARM,DSP都为小端模式。小端模式 是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。大端模式 指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;

2023-03-24 23:53:47 885

空空如也

空空如也

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

TA关注的人

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