- 博客(46)
- 收藏
- 关注
原创 Windows C++ 环境下 eigen、osqp、osqp-eigen安装教程
本文是Windows环境下安装eigen、osqp、osqp-eigen的一个简单教程。
2023-09-15 17:09:30 2477 5
原创 路径规划算法3 改进的人工势场法(Matlab)
1986年Khatib首先提出人工势场法,并将其应用在机器人避障领域。该方法的基本思想是在障碍物周围构建障碍物斥力势场,在目标点周围构建引力势场,类似于物理学中的电磁场。被控对象在这两种势场组成的复合场中受到斥力作用和引力作用,斥力和引力的合力指引着被控对象的运动,搜索无碰的避障路径。
2023-02-28 16:03:06 10637 11
原创 路径规划算法1 Dijkstra算法
主要特点是以起始点为中心向外层层扩展,直到扩展到目标点为止。Dijkstra算法在扩展的过程中,都是取出未访问结点中距离该点距离最小的结点,然后利用该结点去更新其他结点的距离值。Dijkstra算法是Edsger Wybe Dijkstra在1956年提出的一种用来寻找图形中。Dijkstra算法的基本思想是。
2023-02-16 15:36:58 327
原创 面向对象与面向过程编程
面向过程(Procedure Oriented 简称 PO):是一种以过程为中心的编程思想,分析出解决问题的步骤,然后用函数把这些步骤一步一步实现。面向过程编程,数据和对数据的操作是分离的。面向对象(Object Oriented 简称 OO):面向对象会把事物抽象成对象的概念,先抽象出对象,然后给对象赋一些属性和方法,然后让每个对象去执行自己的方法。面向对象编程,数据和对数据的操作是绑定在一起的。
2023-02-13 13:12:09 3280
原创 Matlab RRT算法三维轨迹规划及贪心算法轨迹优化
RRT算法简单介绍1. RRT算法定义RRT(Rapidly-Exploring Random Tree)算法是一种基于采样的路径规划算法,常用于移动机器人路径规划,适合解决高维空间和复杂约束下的路径规划问题。基本思想是以产生随机点的方式通过一个步长向目标点搜索前进,有效躲避障碍物,避免路径陷入局部极小值,收敛速度快。本文通过matlab实现RRT算法,解决二维平面的路径规划问题。2. RRT算法基本步骤1)确定起点start和终止点goal;2)在空间中随机生成新的点r(50%为随.
2022-05-26 23:38:08 9357 14
原创 C++核心编程8——类和对象之继承
1. 继承的基本语法#include <iostream>#include <string>#include <math.h>using namespace std;//继承//继承的好处:减少重复代码量//父类class CAT{public: void leg() { cout << "Cats have four legs." << endl; } ...
2022-01-25 16:47:27 511
原创 C++核心编程7——类和对象之C++运算符重载
1. 运算符重载概念运算符重载:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型2. 加号运算符重载作用:两个自定义数据类型相加(eg. 两个person相加)可以对同一个类的成员进行重载,也可以在不同类之间进行重载。例如,可以operator+(Person &p1, Person &p2),也可以operator(Person &p1, int number)总结1:对于内置的数据类型的表达式的运算符是不可能改变的(只能重载自定义
2022-01-24 17:33:18 627
原创 四元数姿态插补
链接:Understanding Quaternions 中文翻译《理解四元数》 – Wyman的原创技术博客 – 恭喜你发现我的小站,撩我请加QQ:234707482、Wechat:_Wyman (qiujiawei.com)英文原文:Understanding Quaternions | 3D Game Engine Programming (3dgep.com)...
2021-12-08 16:00:20 914
原创 C++核心编程6——类和对象之友元
1. 全局函数做友元2. 类做友元Building构造函数初始化building内容,goodGay构造函数创建一个指向Building的指针,visit函数访问building中的成员。3. 成员函数做友元
2021-11-14 19:14:20 629
原创 C++核心编程5——类和对象之对象特性
对象的初始化和清理C++的面向对象来源于生活,因此每个对象也会有初始设置以及对象销毁前的清理数据的设置1. 构造函数和析构函数class Student {public: //构建构造函数 Student() { } //构建析构函数 ~Student() { }};void test1(){ Student stu1;}int main(){ //调用test1,会在test..
2021-11-14 17:41:40 812
原创 C++核心编程3——函数高级
1. 函数默认参数在C++中,函数形参列表中的形参是可以有默认值的。//调用函数时,如果不向形参赋值,则采用默认值,否则采用我们赋给形参的值int func(int a = 10, int b = 2) {}//注意,如果某个形参已经有了默认参数,那么从这个形参开始往后的所有形参都必须有默认参数int func2(int a, int b = 2, int c=10) //b有了默认参数,则位于b之后的c必须有默认参数{}//函数声明和函数定义,只能有一个默认参数,不能..
2021-11-07 23:38:24 1123
原创 C++核心编程2 —— 引用
1. 引用的基本使用作用:给变量起别名别名和原名操作的都是同一块内存2. 引用注意事项引用必须初始化引用在初始化后,不可改变int a = 10;int& b = a; //初始化3. 引用做函数参数作用:函数传参时,可以利用引用的技术让形参修饰实参(引用传递和地址传递类似);优点:可以简化指针修改实参4. 引用做函数返回值作用:引用是可以作为函数的返回值存在的。当函数返回的是一个引用时,可以作为左值存在。注意:不要...
2021-11-04 20:27:13 416
原创 C++核心编程1——内存分区模型
C++核心编程这一阶段主要针对C++面向对象编程技术做详细介绍。1. 内存分区模型内存分区的意义:不同内存区存放的数据,其生命周期是不一样的,使编程更加灵活。注意:程序运行前,只有代码区和全局区,代码运行后,才会有栈区和堆区。 2. new操作符用new关键字创建堆区数据,返回的是一个地址,需要用指针去进行接受void func1(){ //创建堆区变量 int* p = new int(3); cout &...
2021-11-04 18:56:44 177
原创 C++基础入门8 —— 结构体
1. 结构体的基本概念结构体属于用户自定义的数据类型,允许用户存储不同的数据类型2. 结构体的定义和使用struct Student{ string name; int age; int score;}int main(){ //第一种结构体属性赋值 struct Student s1; s1.name = "vivi"; s1.age = 18; s1.score = 79; //第二种结构体属性赋值 struct Student s2 = { .
2021-11-02 14:25:21 325
原创 C++基础入门7 —— 指针
1. 指针的基础概念指针的作用:可以通过指针间接访问内存内存编号从0开始,一般以十六进制表示可以利用指针变量保存地址2. 指针变量的定义和使用int main(){ int a = 10; int* p; //定义一个指针 p = &a; //将指针p指向a的地址 cout << "a的地址:" << &a << endl; cout << "p:" << p << endl;
2021-11-02 13:15:55 515
原创 C++基础入门6——函数
1) 函数的定义2)函数的调用功能:使用定义好的函数语句:函数名(参数)3)值传递所谓值传递,就是函数调用时实参将数值传入给形参;值传递时,如果形参发生改变,并不会影响实参这里的实参是main函数里面输入的a,b。形参是调用函数swap之后在函数swap里的a,b。只有在函数swap里的a,b会改变,而在main里面其他地方A,B仍保持原来的值4)函数的常见样式无返函数,使用void定义5)函数的声明...
2021-10-31 23:52:32 104
原创 C++基础入门5——数组
1. 一维数组注意:直接取地址是返回的十六进制的地址,在前面加(int)可以强转成十进制的。对数组中的元素取地址,在前面加&。int main(){ int weight[] = { 220,300,150,70,320 }; int max = 0; for (int i = 0; i < sizeof(weight)/sizeof(weight[0]); i++) { if (weight[i] > max) { ...
2021-10-31 22:01:35 173
原创 C++基础入门4——程序流程结构
int main(){ //打印10*10正方形点阵 for (int i = 0; i < 10; i++) { for (int i = 0; i < 10; i++) { cout << "*"; } cout << endl; } return 0;}1. 选择结构1)if语句实例://多条if语句形式int main(){ int pig1 = 0; int pig2 = 0; int...
2021-10-31 20:44:07 113
原创 C++基础入门2——数据类型
数据类型存在的意义:给变量分配合适的内存空间1.整形定义数据超出内存空间时, 将从头开始循环2. sizeof关键字统计数据类型or变量所占的内存大小3. 实型(浮点型)//默认情况下,小数只显示6位有效数字float f1 = 3.14f;//float型一般会在数据后面加一个f,不然程序仍然默认他为double类型double d1 3.14;4. 字符型a的ASCII码为97;A的ASCII码为65;5. 转义字符用于表示一些...
2021-10-29 11:22:40 94
原创 C++基础入门1——C++初识
1. 变量给一段指定的内存空间起名,方便操作这段内存变量创建的语法:数据类型 变量名=变量初始值;int a = 10;2.常量用于记录程序中不可更改的数据定义常量的方法:1)define 宏常量(通常定义在函数上方)#define day 72)const 修饰的变量const int month = 12;3. 关键字是C++中预先保留的单词(标识符)在定义变量和常量的时候不要用关键字4. 标识符命名规则...
2021-10-29 10:25:11 156
原创 MATLAB机器人工具箱1-位姿描述及轨迹
1. 位姿描述1.1 二维空间位姿描述%开启机器人工具箱startup_rvc;代码:clc;clear;%开启机器人工具箱startup_rvc;%%二维平面内的位姿描述T1=SE2(1,2,30*pi/180); %建立齐次坐标变换,代表(1,2)的平移和30度的theta变换trplot2(T1, 'frame', '1', 'color', 'r'); %绘制变换坐标系T1,名字1,颜色raxis([0 5 0 5]);T
2021-10-18 17:08:32 2344
原创 PS学习笔记二:跟着李涛学PS第二讲——绘画与修饰工具
本人的学习笔记是在学习李涛老师的视频的时候整理的个人学习笔记,如有侵权,请联系我删除。本人是个门外汉,整理的笔记如有错误,欢迎大家指出哦。第二讲:绘画与修饰工具工具栏:前6个:移动工具组;中间8个:绘画与修饰工具组;接下来4个:矢量工具组;最后4个:辅助工具组 我们主要介绍绘画与修饰工具组 绘画与修饰工具组:(局部修饰)污点修复(痣、黑头、斑点等去除);...
2018-12-20 16:00:15 1047
原创 PS学习笔记一:跟着李涛学PS第一讲——光和色的关系
最近我开始学习PS啦,接下来我将持续更新自己的PS学习笔记,欢迎大家关注哈。本次PS学习,我选择了李涛老师的PS新手教程作为入门教程。李涛老师是目前国内最好的PS讲师,课程内容生动有趣,非常适合新手了解PS。李涛老师的PS教程在网易云课堂、李涛老师的个人站酷网站等均有免费资源,大家感兴趣的可以看一下哦。本次学习使用的软件是Photoshop CC 2017。本人的学习笔记是在学习李涛老师的...
2018-12-20 15:26:48 1066
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人