自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 卡尔曼滤波及扩展卡尔曼滤波推导笔记(含SLAM14讲部分)

卡尔曼滤波及扩展卡尔曼滤波推导笔记(含SLAM14讲部分)PDF链接有帮助的话点个赞????

2022-02-14 20:06:09 697

原创 关于视觉SLAM14讲中的最小二乘法求解超定方程组

关于视觉SLAM14讲中的最小二乘法求解超定方程1、超定方程组2、最小二乘法求解1、超定方程组粗糙的解释:方程的个数比未知数还多。超定方程组是指方程个数大于未知量个数的方程组。对于方程组Ra=y,R为n×m矩阵,如果R列满秩,且n>m。则方程组没有精确解,此时称方程组为超定方程组。2、最小二乘法求解E(x)=∥Ax−b∥2=(Ax−b)T(Ax−b)=(xTAT−bT)(Ax−b)=xTATAx−bTAx−xTATb+bTb=xTATAx−(ATb)Tx−(ATb)Tx+bTb\begin{

2021-11-20 16:38:42 1304

原创 Leetcode136. 只出现一次的数字(有趣的异或)

Leetcode136. 只出现一次的数字题目描述:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例:输入: [2,2,1]输出: 1输入: [4,1,2,1,2]输出: 4解答我的解答: 排序+遍历class Solution {public: int singleNumber(vector<int>& nums) {

2021-10-22 16:12:25 487

原创 Leetcode1318. 或运算的最小翻转次数

Leetcode1318. 或运算的最小翻转次数题目描述给你三个正整数 a、b 和 c。你可以对 a 和 b 的二进制表示进行位翻转操作,返回能够使按位或运算 a OR b == c 成立的最小翻转次数。「位翻转操作」是指将一个数的二进制表示任何单个位上的 1 变成 0 或者 0 变成 1 。题目详情见: https://leetcode-cn.com/problems/minimum-flips-to-make-a-or-b-equal-to-c我的解答://计算二进制中1的个数int

2021-10-15 23:26:57 129

原创 深度学习学习笔记

深度学习一、神经网络基础1、几个词的包含关系2、人工神经元3、多层感知机4、激活函数5、损失函数6、权值初始化7、正则化方法一、神经网络基础1、几个词的包含关系2、人工神经元人工神经元: 人类神经元中抽象出来的数学模型。M-P模型: 基于人工神经元提出下面的模型。人工神经网络: 大量神经元以某种连接方式构成的机器学习模型。例如:感知机(Perceptron): 只有输入和输出层;激活函数为阶跃函数。缺陷: 无法解决异或问题,本质上是线性的,当然无法解决异或问题。3、多层感知

2021-08-23 23:29:24 587

原创 数据结构之链表

链表一、反转链表1、描述2、思路3、代码实现二、链表的定义1、定义2、代码实现一、反转链表1、描述描述: 输入一个链表,反转链表后,输出新链表的表头。示例:输入:{1,2,3}返回值:{3,2,1}2、思路借用牛客网的图:其实就是两条链表:一条原来的,一条新的,新的是不断从老的上面拆下来的头节点作为新链表的头节点。3、代码实现注意: 代码的头节点相当于第一个节点(带数据)/*struct ListNode { int val; struct ListNode *next;

2021-08-07 16:28:43 75

原创 5DOF机械臂逆运动学求解

5DOF机械臂一、模型简化二、使用步骤1.引入库2.读入数据总结一、模型简化示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings.filterwarnings('ignore')impo

2021-07-31 14:49:01 1967 2

原创 Flyod算法

Flyod算法一、Floyd算法介绍?二、matlab实现1. 主程序:2. 函数三、扩展1、完备性证明2、特殊情况四、参考阅读一、Floyd算法介绍?Floyd‐Warshall算法(英语:Floyd‐Warshall algorithm或简写为Floyd algorithm),中文亦称弗洛伊德算法,是解决任意两点间的最短路径的一种算法,可以正确处理无向图或有向图(可以有负权重,但不可存在负权回路)的最短路径问题。Floyd算法与迪杰斯特拉算法或贝尔曼福特算法相比,能够一次性的求出任意两点之间的最

2021-07-29 14:32:47 578

原创 atan和atan2函数

atan和atan2函数一、atan函数atan范围是[-pi/2,pi/2],如果角度不在这个范围还得再判断二、atan2函数atan2函数范围在[-pi,pi],求出来是唯一解。

2021-06-17 16:28:05 5238

原创 无约束最优化方法

无约束最优化方法--. 概述1. 最速下降法2. 牛顿法–. 概述1. 最速下降法2. 牛顿法

2021-05-30 11:19:59 226

原创 数据挖掘导论思维导图

持续更新数据挖掘导论一、pandas是什么?二、使用步骤1.引入库2.读入数据总结提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimpo

2021-05-22 09:38:10 775

原创 matlab编程实现自适应均值滤波和自适应中值滤波

matlab编程实现自适应滤波器一、自适应均值滤波器1. 原理部分:2. 程序代码3. 结果对比二、自适应中值滤波1. 原理部分2.程序代码3. 结果对比一、自适应均值滤波器1. 原理部分:加入噪声:原理: 将图片灰度化,然后将图片像素归一化到[0,1]之间,然后添加均值为0,方差为0.1的高斯噪声,乘以255映射回图片原来的灰度级,用max(0,min(t1,255))操作将超出[0,255]的纠正。效果如图:随机变量最简单的统计量是均值和方差,这些适当的参数是自适应局部滤波器的基础。均值给出

2021-05-16 20:29:24 12573 8

原创 Matlab数据可视化

Matlab数据可视化内容:数据探索与可视化综合实践直方图、箱线图、散点图:直方图箱线图散点图内容:数据探索与可视化综合实践利用Matlab对UCI‐Aliva分类数据集进行初步探索和分析:(1)针对第A、B、C三个类别的数据对象,分别画出其10个属性的histogram、box plot和scatter plot;(2)画出整个数据集的matrix plot,并基于此对该数据集的可分性进行初步分析;(3)分别利用欧式距离、马氏距离和余弦距离作为相似性度量,计算数据对象之间的两两相似性(pairw

2021-04-07 00:20:01 7445 8

原创 matlab 绘制有向图、无向图、有权有向图、有权无向图以及查找最短路径

matlab 绘制有向图、无向图、有权有向图、有权无向图1、Matlab作无权无向图2、Matlab作有权无向图3、Matlab作无权有向图4、Matlab作有权有向图1、Matlab作无权无向图% 函数graph(s,t):可在 s 和 t 中的对应节点之间创建边,并生成一个图% s 和 t 都必须具有相同的元素数;这些节点必须都是从1开始的正整数,或都是字符串元胞数组。s1 = [1,2,3,4];t1 = [2,3,1,1];G1 = graph(s1, t1);plot(G1)% 注

2021-03-01 09:42:20 31667 17

原创 ROS中的信息订阅

本博客内容包括:1、创建发布节点2、创建订阅节点:订阅节点订阅两个话题,一个持续订阅,一个只订阅一次数据作为初始化(目的是为了做个记录,很容易忘记这部分的内容,用到的时候又会花很多时间,以此记录。)发布节点:#include <ros/ros.h>#include <geometry_msgs/PointStamped.h>#include <geometry_msgs/PoseWithCovarianceStamped.h>#include <io

2021-02-11 14:15:57 2376 5

原创 Matlab BP神经网络学习记录

Matlab神经网络一、数据预处理1、什么是归一化2、为什么要归一化处理3、归一化算法二、BP 神经网络的训练过程三、BP 神经网络的测试过程四、Matlab代码程序1、 数据预处理2、 神经网络的训练和测试五、BP神经网络的优缺点一、数据预处理在训练神经网络前一般需要对数据进行预处理一种重要的预处理手段是归一化处理 。1、什么是归一化数据归一化就是将数据映射到[0,1]或[1,1]区间或更小的区间比如[0.1,0.9]。2、为什么要归一化处理(1) 输入数据的单位不一样 有些数据的范围可能特别

2021-01-20 22:42:34 692

原创 matlab快速实现线性规划求解

线性规划的Matlab标准形式及软件求解一、线性规划的Matlab标准形式二、Matlab求解三、Matlab求解例子一、线性规划的Matlab标准形式minxcTxmin_{x}c^Txminx​cTxs.t.{Ax<=bAeq∗x=beqlb≤x≤ub s.t.\left\{\begin{aligned}Ax<=b \\Aeq*x = beq \\lb \leq x \leq ub\end{aligned}\right.s.t.⎩⎪⎨⎪⎧​Ax<=bAeq∗x=b

2021-01-13 15:30:12 7898 7

原创 矩阵相关性质复习

关于矩阵的特征值之和等于矩阵的迹解析1. 排列2.行列式计算3.矩阵的特征值之和等于矩阵的迹1. 排列定义1:作为定义n 级行列式的准备,我们先来了解一下排列的性质。由1,2,⋯, n 组成的一个有序数组称为一个n 级排列。定义2:在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序,一个排列中逆序的总数就称为这个排列的逆序数。例如:2431 中,21,43,41,31 是逆序,2431 的逆序数就是4。而45321 的逆序数是9。排列j1j2⋯jnj_

2021-01-10 23:51:41 4483

原创 C++:类模板

C++:类模板(仅作学习复习记录)一、类模板作用:建立一个通用类,类中的成员数据类型可以不具体制定,用一个虚拟的类型来代表。template<typename T>#template:声明创建模板#typename:表明其后面是一种符号类型,可以用class代替#T:通用的数据类型,名称可以替换二、类模板与函数模板区别:1、类模板没有自动类型推导的使用方式2、类模板在模板参数列表中可以有默认参数例子:#include<string>template<

2020-12-02 17:08:51 291

原创 ROS中常用的数据类型(其实不用记,只需要查一下rosmsg命令即可)

ROS中常用的数据类型geometry_msgs::Pointgeometry_msgs::Point32geometry_msgs::PointStampedgeometry_msgs::Posegeometry_msgs::Pose2Dgeometry_msgs::PoseArraygeometry_msgs::PoseStampedgeometry_msgs::PoseWithCovariancegeometry_msgs::PoseWithCovarianceStampedgeometry_msg

2020-12-01 23:41:33 4405

原创 C++函数模板

函数模板案例通过案例来熟悉函数模板描述:利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序排序规则从大到小,排序算法为选择排序分别利用char数组和int数组进行测试//1 交换的函数模板template<typename T>void swap(T& a,T& b){ T temp=a; a=b; b=temp;}//2 选择排序 大->小template<class T>void sort(T arr[],int

2020-11-09 10:43:46 97

原创 ROS配置多机器人导航

最近配置了多机器人导航,在此记录一下学习笔记:先看看效果:仿真效果:tf树关系:关于tf树配置与古月博客配置的不同,我认为:amcl发布的是map->odom的tf,可以说是矫正odom frame的误差,但是不同机器人odom误差肯定不一样,那边博客里将odom作为共用坐标系,我觉得应该把每个机器人的odom独立出来。对比:添加链接描述中的图:待续。...

2020-11-05 23:45:31 2718 22

原创 STL学习1:vector容器

意义:C++的面向对象和泛型编程思想,目的就是复用性的提升,大多情况下,数据结构和算法都未能有一套标准,导致被迫从事大量重复工作,为了建立数据结构和算法的一套标准,诞生了STL。基本概念:STL 从广义上分为: 容器(container) 算法(algorithm) 迭代器(iterator)容器和算法之间通过迭代器进行无缝连接。STL 几乎所有的代码都采用了模板类或者模板函数。STL六大组件STL大体分为六大组件,分别是:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器**容器:**

2020-10-26 09:50:55 74

原创 github分支操作

github分支操作在进行多个并行作业时,我们会用到分支。在这类并行开发的过程中,往往同时存在多个最新代码状态。如图 1 所示,从 master 分支创建 feature-A 分支和 fix-B 分支后,每个分支中都拥有自己的最新代码。master 分支是 Git 默认创建的分支,因此基本上所有开发都是以这个分支为中心进行的。图 1 从 master 分支创建 feature-A 分支和 fix-B 分支不同分支中,可以同时进行完全不同的作业。等该分支的作业完成之后再与 master 分支合并。比如

2020-10-10 14:04:35 654

原创 ROS:订阅话题并发布(订阅amcl_pose数据并发布)

一、创建节点 cd ~/catkin_ws/src catkin_create_pkg amcl_pose_sub_pub message_generation std_msgs roscpp roscd amcl_pose_sub_pub/src // → 移至src目录,该目录是功能包的源代码目录 gedit amcl_pose_sub_pub.cpp // → 新建源文件并修改内容amcl_pose_sub_pub.cpp#include <ros/ros.h>#in

2020-10-01 21:01:57 5190 2

原创 哈夫曼树学习与总结(C++实现)

哈夫曼树C++代码实现#include<iostream>#include <stdlib.h>#include <stdio.h>#include <malloc.h>#include <string.h>#include <ctype.h>using namespace std;struct huff{ char c;//字符 int data;//权值 int lch, rch,p;//左右孩子节点在数

2020-08-23 13:32:23 1755

原创 python学习(一)

编写比较通用的一个可以画出像图4中那样花朵的函数集。import mathimport turtledef polyline(t, n, length, angle): """Draws n line segments. t: Turtle object n: number of line segments length: length of each segment angle: degrees between segments """ fo

2020-07-01 21:48:56 419

原创 C/C++:指针数组和数组指针

指针数组和数组指针指针数组: 即用于存储指针的数组,也就是数组元素都是指针int *p[n]: []优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组,它有n个指针类型的数组元素。这里执行p+1时,则p指向下一个数组元素,这样赋值是错误的:p=a;因为p是个不可知的表示,只存在p[0]、p[1]、p[2]...p[n-1],而且它们分别是指针变量可以用来存放变量地址。但可以这样 *p=a; 这里*p表示指针数组第一个元素的值,a的首地址的值。数组指针: 即指向数组的指针 。int

2020-06-20 00:35:11 378

原创 C++学习记录(二)

(记录学习中遇到的问题,仅做笔记)11、宏定义#define add(a,b) a+bint main() { printf("%d\n",3 * add(4,7)); return 0;}结果为:34+7=19解析:==在 C/C++ 中,宏定义只是做简单的字符替换;#define add(a,b) a+b , a+b 没有括号,所以 3 add(4,7) 实际的替换情况是: 34+7=19 ;若 a+b 有括号, #define add(a,b) ( a+b )则结果为: 3 (

2020-06-10 15:31:56 566

原创 C++学习记录(一)

(记录学习中遇到的问题,仅做笔记)1、纯虚函数的正确声明:virtual void print()=02、常对象#include<iostream>using namespace std;class Sample{ public: Sample(int i,int j){ x=i; y=j; } void disp(){ cout<<"disp1"<<endl; } void disp()const{ cout<<"disp2"

2020-05-15 23:57:52 445

原创 STL- 常用算法(二)

STL- 常用算法(仅作学习笔记)四、常用拷贝和替换算法掌握常用的拷贝和替换算法copy // 容器内指定范围的元素拷贝到另一容器中replace // 将容器内指定范围的旧元素修改为新元素replace_if // 容器内指定范围满足条件的元素替换为新元素swap // 互换两个容器的元素1、copy将容器内指定范围的元素拷贝到另一容器中copy(iterator beg, iterator end, iterator dest);// 按值查找元素,找到返回指定位置迭代器,找不到

2020-05-14 00:29:49 95

原创 ROS(七):移动机器人的导航和SLAM(二)

(仅作学习笔记,参考书籍《ROS机器人编程》)四、SLAM理论篇1、SLAMSLAM(Simultaneous Localization And Mapping),翻译成中文就是“同时定位与地图构建”。换句话说,这意味着机器人在未知的环境中探索,仅通过安装在机器人上的传感器估计机器人本身的位置的同时绘制未知环境的地图。这是导航及自主驾驶的关键技术。通常用于位置估算的传感器有编码器(Encoder)和惯性测量单元(IMU)。编码器测量车轮的旋转量,并通过导航推测(dead reckoning)推算机器

2020-05-09 00:01:38 2149 2

原创 ROS(七):移动机器人的导航和SLAM(一)

移动机器人的导航(仅作学习笔记,参考书籍《ROS机器人编程》)导航是指机器人运动到一个指定的目的地,这说起来很容易,但完成它所需的技术一个个都不是容易的任务:要知道机器人本身在哪里,并要有一个给定的周围环境的地图,在各种路径中找出最优路径,在行驶中避免障碍物(如墙壁、家具、物体)等。机器人实现自主导航都需要哪些?根据导航算法会有不同,但应该至少需要如下几种:➊ 地图➋ 测量或估计机器人...

2020-05-04 10:48:21 5463

原创 ROS学习(六):ROS GUI开发工具(rqt)

ROS GUI开发工具(rqt)ROS为机器人开发提供各种GUI工具。例如,有一个将每个节点的层次结构显示为图形,且显示当前节点和话题状态的graph;将消息显示为二维图形的plot,等。从ROS Fuerte版本开始,这些GUI开发工具被称为rqt6,它集成了30多种工具,可以作为一个综合的GUI工具来使用。另外,RViz也被集成到rqt的插件中,这使rqt成为ROS的一个不可缺少的GUI工具...

2020-04-27 23:21:52 12885

原创 STL- 常用算法(一)

STL- 常用算法算法主要是由头文件 组成。(仅作学习笔记)<algorithm>是所有STL头文件中最大的一个,范围涉及到比较、 交换、查找、遍历操作、复制、修改等等<numeric>体积很小,只包括几个在序列上面进行简单数学运算的模板函数<functional>定义了一些模板类,用以声明函数对象。常用遍历算法for_each //遍历容器...

2020-04-27 23:02:25 114

原创 ROS命令(五)

ROS命令(五)(仅作学习笔记)2、rosnode:ROS节点rosnode list 查看活动的节点列表rosnode ping [节点名称] 与指定的节点进行连接测试rosnode info [节点名称] 查看指定节点的信息rosnode machine [PC名称或IP] 查看该PC中运行的节点列表rosnode kill [节点名称] 停止指定节点的运行rosnode cl...

2020-04-26 17:23:58 1203

原创 C++之内建函数对象

内建函数对象STL内建了一些函数对象:算术仿函数关系仿函数逻辑仿函数这些仿函数所产生的对象,用法和一般函数完全相同使用内建函数对象,需要引入头文件 #include一、算术仿函数功能描述:实现四则运算其中negate是一元运算,其他都是二元运算仿函数原型:template<class T> T plus<T> //加法仿函数template<cl...

2020-04-25 13:16:49 224

原创 ROS之构建系统(四)

构建系统(仅作学习笔记)ROS的构建系统默认使用CMake(Cross Platform Make),其构建环境在功能包目录中的CMakeLists.txt文件中描述。在ROS中,CMake被修改为适合于ROS的“catkin” 构建系统。在ROS中使用CMake的是为了在多个平台上构建 ROS功能包。CMake支持Unix类的Linux、BSD和OS X以外,还支持Windows系列。并且,...

2020-04-24 17:22:49 417

原创 C++之函数对象(仿函数)和谓词

函数对象(仅作学习笔记)函数对象概念重载函数调用操作符的类,其对象常称为函数对象函数对象使用重载的()时,行为类似函数调用,也叫仿函数本质:函数对象(仿函数)是一个类,不是一个函数特点:函数对象在使用时,可以像普通函数那样调用, 可以有参数,可以有返回值函数对象超出普通函数的概念,函数对象可以有自己的状态函数对象可以作为参数传递示例:#include <string&...

2020-04-22 21:14:23 387

原创 ROS学习之name(三)

仅作学习笔记,参考《ROS机器人编程》ROS学习之name(名称)ROS有一个称为图(graph)的抽象数据类型作为其基本概念。这显示了每个节点的连接关系以及通过箭头表达发送和接收消息(数据)的关系。为此,服务中使用的节点、话题、消息以及ROS中使用的参数都具有唯一的名称(name)。话题名称分为相对的方法、全局方法和私有方法。以下代码显示了常用的话题的声明。在这里,我们通过修改话题名称来理...

2020-04-20 17:40:46 469

空空如也

空空如也

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

TA关注的人

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