自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

展翅飞翔mxq的博客

机器人算法工程师,擅长领域:机械臂运动学、动力学算法 轨迹规划 离线仿真 matlab仿真 移动机器人运动控制 C/C++、linux、ROS

  • 博客(23)
  • 资源 (1)
  • 收藏
  • 关注

原创 C++学习笔记——多态与虚函数

虚函数作用:通过基类指针只能访问派生类的成员变量,但是不能访问派生类的成员函数。为了让基类指针能够访问派生类的成员函数,C++ 增加了虚函数(Virtual Function)。使用虚函数非常简单,只需要在函数声明前面增加 virtual 关键字。虚函数的使用要点:只需要在虚函数的声明处加上 virtual 关键字,函数定义处可以加也可以不加。为了方便,你可以只将基类中的函数声明为虚函数...

2020-11-24 16:21:20 398

原创 C++学习笔记——继承与派生

继承与派生定义C++ 中的继承是类与类之间的关系:继承(Inheritance)可以理解为一个类从另一个类获取成员变量和成员函数的过程。派生(Derive)和继承是一个概念,只是站的角度不同,可以理解为被另一个类获取成员变量和成员函数;派生类除了拥有基类的成员,还可以定义自己的新成员,以增强类的功能。例如: Quaternion类继承了QuadWord类,当创建一个Quaternion类型的对...

2019-10-15 15:20:26 389

原创 C++学习笔记——类和对象

类和对象类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量;创建对象的过程也叫类的实例化。每个对象都是类的一个具体实例(Instance),拥有类的成员变量和成员函数。与结构体一样,类只是一种复杂数据类型的声明,不占用内存空间。而对象是类这种数据类型的一个变量,或者说是通过类这种数据类型创建出来的一份实实在在的数据,所以占用内存空间;所以在定义类时不能对成员变量进行初始化...

2019-09-20 19:27:25 357

原创 VS Code 配置、编译、运行C/C++程序基本操作

1.下载安装VS codehttps://code.visualstudio.com/Download2.安装C/C++编译环境(MinGW-w64)https://sourceforge.net/projects/mingw-w64/点击下载,并安装。注意:MinGW和MinGW-w64是两个不同的项目,我们安装的是后者!注意与红色框内选择一致即可,点击Next继续安装。点击...

2019-01-18 22:33:36 6022 1

原创 C语言学习笔记——指针、数组作为函数参数传递的方式

指针作为函数参数传递一维数组C 语言中声明了一个数组TYPE array[n],则数组名称array 就有了两重含义:第一,它代表整个数组,它的类型是TYPE[n];第二,它是一个常量指针,该指针的类型是TYPE*,该指针指向的类型是TYPE。因此,指针作为函数参数传递一维数组有4种形式:#include <stdio.h>#define N 3float average...

2019-01-03 20:08:58 12931 1

原创 MATLAB机器人工具箱6轴机械臂DH建模仿真

1、SDH建模仿真:L1 = Link('d', 0, 'a', 0, 'alpha', pi/2);L2 = Link('d', 0, 'a', 0.5, 'alpha', 0,'offset',pi/2);L3 = Link('d', 0, 'a', 0, 'alpha', pi/2,'offset',pi/4);L4 = Link('d', 1, 'a', 0, 'alpha', -...

2018-12-25 22:09:06 25712 7

原创 标准DH建模与改进DH建模

standard_DH   根据DH表示法确定一个一般步骤为每个关节指定参考坐标系,然后确定如何实现任意两个相邻坐标系之间的变换,最后写出机器人的总变换矩阵。如图所示表示了三个顺序关节和两个连杆,每个关节都是可以转动和平移的。第一个关节指定为关节i-1,第二个关节指定为关节i,第三个关节指定为关节i+1。在这些关节前后可能还有其他关节,连杆也是如此表示,连杆i位于关节i与关节i+1之间。(1)...

2018-12-23 19:17:47 29084 13

原创 姿态的三种描述方式——欧拉角、轴角、四元数

欧拉角  旋转矩阵对于坐标系的描述是冗余的。旋转矩阵用了9个元素来描述姿态,而事实上,由正交性条件带来6个约束,这9个元素之间不是独立的,而是相关的。这就意味着,只要三个参数就能描述一个刚体在空间中的姿态。(1)X-Y-Z固定角坐标系  先将{B}绕{A}的X轴旋转γ\gammaγ,然后绕{A}的Y轴旋转β\betaβ,最后绕{A}的Z轴旋转α\alphaα,每个旋转都是绕着固定参考坐标系{...

2018-12-20 22:25:06 21086 2

原创 机器人坐标系——工具坐标、用户坐标系标定

坐标系变换方程   如果有n个未知变换和n个变换方程,这个变换可由变换方程解出。例如:图1中变换TBT{^B_T}TTB​T描述了操作臂指向的坐标系{T},它是相对于操作臂基座的坐标系{B}的,又已知工作台相对于操作臂基座的空间位置SBT{^B_S}TSB​T,并且已知工作台上螺栓的坐标系相对于工作台坐标系的位置,即GST{^S_G}TGS​T,计算螺栓相对于操作手的位置,GTT{^T_G}TG...

2018-12-20 18:24:52 28151 1

原创 位置、姿态与坐标系

位置描述:一旦建立了坐标系,就可以用一个3×1的位置矢量对世界坐标系中的任何点进行定位。因为在世界坐标系中还有其他坐标系,因此必须在位置矢量上附加信息,表明是在哪个坐标被定义的。位置矢量用一个前置的上标来表明其参考坐标系。例如:AP。表明AP的数值是在坐标系{A}中的表示。矢量中的各个元素用下标x,y,z来表明:...

2018-12-19 20:40:47 5622

原创 C语言学习笔记——链表

       链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。它可以根据需要开辟内存单元。链表有一个“头指针”变量,以head表示,它存放一个地址。该地址指向一个元素。链表中每一个元素称为“结点”,每个结点都应包括两个部分:一为用户需要用的实际数据,二为下一个结点的地址。因此,head指向第一个元素:第一个元素又指向第二个元素;……,直到最...

2018-12-13 20:42:11 294

原创 C语言学习笔记——字符串

一、字符串1、字符串常量:字符串:是一个或多个字符的序列;一个字符在内存中只占一字节,而字符串本质上是多个字符组成的字符数组。C语言规定,在每一个字符串常量的结尾,系统都会自动加一个字符’\0’作为该字符串的“结束标志符”,系统据此判断字符串是否结束。在 C 语言中,字符串不属于数据类型;字符串有两种存储方式,一种是通过字符数组存储,另一种是通过字符指针存储。如:"How are you"中,...

2018-12-11 21:57:27 539

原创 C语言学习笔记——static用法

在C语言中static的作用如下:1、修饰局部变量:1)位置:静态局部变量被编译器放在全局存储区静态存储区,所以它虽然是局部的,但是在程序的整个生命周期中存在。2)访问权限:静态局部变量只能被其作用域内的变量或函数访问。也就是说虽然它会在程序的整个生命周期中存在,由于它是static的,它不能被其他的函数和源文件访问。3)值:static局部变量初次定义时就要初始化,且只能初始化一次。如果...

2018-12-08 14:16:02 518

原创 C语言学习笔记——typede用法

typedef 关键字:自定义数据类型名称,来替代系统默认的基本类型名称、数组类型名称、指针类型名称与用户自定义的结构型名称、共用型名称、枚举型名称等。(1)为基本数据类型定义新的类型名也就是说,系统默认的所有基本类型都可以利用 typedef 关键字来重新定义类型名,示例代码如下所示:typedef unsigned int COUNT;而且,我们还可以使用这种方法来定义与平台无关的类型...

2018-12-08 11:54:14 1760

原创 C语言学习笔记——结构体

一、结构体1、结构体定义:结构体是将不同类型的数据按照一定的功能需求进行整体封装,封装的数据类型与大小均可以由用户指定。2、结构体声明:声明一个结构体类型的一般形式为:struct 结构体名{ 成员列表};例如:struct BOOK { char title[20]; char author[20]; float value;}...

2018-12-08 11:53:56 716

原创 算法基本原理

一、时间复杂度:(1)常数时间的操作: 一个操作如果和数据量没有关系, 每次都是固定时间内完成的操作, 叫做常数操作。(2)时间复杂度为一个算法流程中, 常数操作数量的指标。 常用O(读作big O) 来表示。 具体来说, 在常数操作数量的表达式中,只要高阶项, 不要低阶项, 也不要高阶项的系数, 剩下的部分如果记为f(N), 那么时间复杂度为O(f(N))。(3)评价一个算法流程的好坏, ...

2018-12-06 21:15:16 5093

原创 C语言学习笔记——指针:动态内存分配

C程序的内存映像C程序的变量内存分配有三种:(1)从静态存储区分配:程序的全局变量和静态变量都在静态存储区上分配,且在程序编译时就已经分配好了,在程序运行期间都是存在的。只有在程序终止前,才被操作系统收回。(2)在栈上分配:在执行函数调用时,函数内的局部变量及形参都是在栈上分配的,该函数执行结束时,这些内存被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是容量有限。(3)从堆上分...

2018-11-27 22:50:02 1376

原创 C语言学习笔记——指针:const指针

当定义一个指针变量时,它的本身的值以及该指针变量所指向的数据都可以被声明为const。const在变量语句中所处的位置不同表示的含义也不同。下面分别讨论。(1)const放在类型关键字前面例如:int a,b;const int *p=&a;说明,*p是一个常量,即只读的,而p不是,我们从右至左来理解这条语句,即p是一个指针变量,可以指向一个整型常量。这时不可以修改*p。但是p...

2018-11-26 20:44:41 507

原创 C语言学习笔记——指针:指针函数与函数指针

指针函数:本质是一个函数,函数返回类型是某一类型的指针。声明格式: 类型标识符 *函数名(参数表)例如:int *fun(int x,int y);这和普通的函数声明唯一的区别就是在函数名前面多了一个*号,而这个函数就是一个指针函数。其返回值是一个 int 类型的指针,是一个地址。函数指针:如果在程序中定义了一个函数,那么在编译时系统就会为这个函数代码分配一段存储空间,这段存储...

2018-11-26 19:59:32 377

原创 C语言学习笔记——指针:指针数组与数组指针

指针数组:是一个数组,数组元素为指针数组指针:是一个指针,指向数组的指针例如:int *p1[5];int (*p2)[5];对于语句int*p1[5],因为“[]”的优先级要比*要高,所以 p1 先与“[]”结合,构成一个数组的定义,数组名为 p1,而“int*”修饰的是数组的内容,即数组的每个元素。也就是说,该数组包含 5 个指向 int 类型数据的指针,如图 1 所示,因此,它是...

2018-11-24 19:36:24 7732 4

原创 C语言学习笔记——指针:指针与二维数组

在C语言中可将一个二维数组看成是由若干一维数组构成的。如:int a[3][4];首先,可将二维数组a看成是由a[0],a[1],a[2]三个元素组成的一维数组,a是该一维数组的数组名,代表该一维数组的首地址,即第一个元素a[0]的地址(&a[0])。所以*(a+i)即为a[i],注意这里所谓的元素a[0],a[1],a[2]事实上仍然是个地址。其次,可以将a[0],a[1],a...

2018-11-24 16:58:07 1368 3

原创 C语言学习笔记——指针:指针与一维数组

数组名代表数组的首地址,例如:int a[10];int *p=NULL;p=a;       其中,数组名a代表数组的首地址(即&a[0]),那么表达式a+i代表数组中下标为i元素a[i]的地址,即&a[i]。       还可以

2018-11-23 21:11:20 2231

原创 C语言学习笔记——指针:多级指针

C语言学习笔记——指针:多级指针指针的指针: 如果一个指针变量存放的是另一个指针变量的地址,则称这个指针变量为指向指针的指针变量。假如定义了一个二级指针:int **q;       对于上述例子的二级指针,我们可以把int **q拆分成两部分看:,即int*和 (*q),后面 (*q)中的 * 表示 q 是一个指针变量,前面的int*表示指针变量...

2018-11-22 21:55:16 315

C语言学习整理思维框图

C语言学习框架整理,知识点梳理,易错点整理对比,思维导图模式整理

2018-11-09

空空如也

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

TA关注的人

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