自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 B样条曲线

B样条曲线 B-Spline

2022-12-05 09:50:17 635

原创 机器人学状态估计 第一讲作业

1.证明∫−∞∞12πσ2e−(x−u)22σ2dx=1\int_{-\infty}^{\infty} \frac{1}{\sqrt{2 \pi \sigma^{2}}} e^{-\frac{(x-u)^ 2}{2 \sigma^{2}}} d x=1∫−∞∞​2πσ2​1​e−2σ2(x−u)2​dx=1证:令 x−u2σ=t,t∈(−∞,∞)\frac{x-u}{\sqrt{2} \sigma}=t, t \in(-\infty, \infty)2​σx−u​=t,t∈(−∞,∞)故x=2σt+u

2021-12-20 00:00:00 298

转载 卷积神经网络维度变化

https://blog.csdn.net/qq_34107425/article/details/104117670

2021-01-03 22:00:48 379

转载 noalias(Eigen 矩阵混淆)

https://www.cnblogs.com/houkai/p/6349990.html

2020-08-13 11:33:58 879

原创 从零手写VIO第六章作业(三角化理论推导及代码仿真)

一、三角化二、求y一中的问题转化为最小二乘问题          min⁡∥Dy∥22\min \|D y\|_{2}^{2} \quadmin∥Dy∥22​ s.t. ∥y∥=1\|y\|=1∥y∥=1            ∥Dy∥22=y′D⊤Dy\|D y\|_{2}^{2} =y^{\prime} D^{\top} D y∥Dy∥22​=y′D⊤Dy...

2020-08-12 20:47:17 764

原创 剑指 Offer 14- I. 剪绳子(整数划分之最大乘积)超详细严谨的证明

目录题目描述引理证明题目描述问题描述:给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m-1] 。请问 k[0]k[1]…*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/jian-sheng-zi-lcof引理引理

2020-08-01 00:28:28 242

原创 CLion编译ros

在编译环境中启动ClionCLion需要获取ROS特定的环境变量。在ros工作空间中运行source ./devel/setup.bash以设置环境变量。为了让ros获取到环境变量,在ros工作空间下运行sh PATH_TO_CLION/bin/clion.sh注意把PATH_TO_CLION替换成自己安装clion的路径。在CLion打开一个ROS项目启动CLion后就要打开ros项目了。单击File|Open选择ROS工作区的src目录中的CMakeLists.txt文件,确定后

2020-07-25 01:13:53 424

原创 从零手写VIO第三讲作业(LM算法和IMU误差传递)

GN和LM算法一、非线性最小二乘问题1.1 GN(高斯牛顿)算法1.2 LM算法1.2.1阻尼因子μ\muμ以及步长 Δxlm\Delta \mathbf{x}_{\mathrm{lm}}Δxlm​初始化1.2.2 Marquardt策略1.2.3 拟合y=exp⁡(ax2+bx+c)y=\exp \left(a x^{2}+b x+c\right)y=exp(ax2+bx+c)1.4 Nielsen策略1.4.1 拟合y=exp⁡(ax2+bx+c)y=\exp \left(a x^{2}+b x+c\r

2020-07-21 17:50:53 825 1

原创 从零手写VIO第二章作业(IMU数据仿真及Allan方差标定)

这里写目录标题IMU仿真代码介绍一、根据参数初始化二、 构造运动模型(以例程为例)2.1加速度模型2.2旋转模型三级目录IMU仿真代码介绍一、根据参数初始化设定IMU数据采集频率设定数据采集时间,对于allan方差标定,默认4小时设定陀螺仪gyro和角速度计acc的bias随机游走的方差设定陀螺仪gyro和角速度计acc的高斯白噪声方差class Param{public: Param(); // time int imu_frequency = 200;

2020-07-15 09:34:05 1791

转载 C++ List用法

Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢.assign() 给list赋值 back() 返回最后一个元素 begin() 返回指向第一个元素的迭代器 clear() 删除所有元素 empty() 如果list是空的则返回true end() 返回末尾的迭代器 erase() 删除一个元素 front() 返回第一个元素 get_allocator() 返回list的配置器 insert() 插入一个元素到li

2020-07-07 10:37:40 147

原创 c++string char* char转换

c++中char转换为string类型https://blog.csdn.net/potxxx/article/details/87290812

2020-07-04 16:26:32 119

原创 剑指 Offer 45. 把数组排成最小的数

class Solution {public: struct cmp{ bool operator()(string a, string b){return a+b < b+a ;} }cmp; string minNumber(vector<int>& nums) { vector<string> vec; for(auto num: nums) vec.push_bac

2020-07-04 14:23:35 99

原创 c++ sort函数自定义排序

在网上查阅sort函数自定义排序资料,在写比较函数cmp时不明白为啥都要写到结构体里,也不明白a<b为啥是升序,a>b为啥是降序struct cmp{ bool operator ()(const int a , const int b) { return a < b ; // 从小到大,反过来就是从大到小 } }; 在查看了官网后得到了结论这里很好地解答了两个问题。1. 为什么结构体可以传入so

2020-07-04 13:44:17 2778

原创 ROS与OpenCV版本冲突问题

在安装小觅相机的时候因为ROS与opencv版本不兼容的原因导致各种莫名其妙的错误。安装方式按照相机技术手册,SDK在linux下共有三种安装方式,ppa安装,源码编译安装,ROS安装。注意不要用ppa安装,用ppa安装会导致ROS无法安装。源码安装多版本opencv共存在源码安装时注意opencv要安装在/usr/local下,否则就要设置环境变量。注意一点,为了实现opencv多版本共存,我们最好在/usr/local下创建不同文件夹存储不同版本opencv。cd opencv-2.4.13

2020-07-01 11:10:09 2560

原创 ORBSLAM2之LocalMapping线程

目录LocalMapping线程概述一、 处理新关键帧ProcessNewKeyFrame()二、 剔除质量不好的MapPoint MapPointCulling()三、 三角化创建新MapPoint CreateNewMapPoints()四、 MapPoint融合五、局部BA六、删除冗余关键帧KeyFrameCulling()七、将当前关键帧插入闭环检测队列LocalMapping线程概述  此线程主要用于处理Tracking线程发来的关键帧,更新关键帧和MapPoint之间的关系,对M

2020-06-28 17:25:39 278

原创 ORBSLAM2之Tracking线程

Tracking线程序言一、读取图像 GrabImageStereo()1. 提取ORB特征点2. 双目匹配二、 双目初始化 StereoInitialization()三、跟踪 Track()1. 以运动模型进行跟踪TrackWithMotionModel()2. 以运动模型进行跟踪TrackWithMotionModel()3. 以参考关键帧进行跟踪TrackReferenceKeyFrame()4. 重定位模式Relocalization()5. 局部地图跟踪TrackLocalMap()6.

2020-06-26 22:12:44 788

原创 直接线性变换法(DLT)在SLAM中的应用

直接线性变换法直接线性变换法(DLT)通常都为x1=Mx2\bold{x_{1}}=\bold{Mx_{2}}x1​=Mx2​形式,在不同问题中我们要求解的内容不一样。在PnP问题中,我们已知3D点坐标和对应的2D投影,去求矩阵M。在线性三角化中,我们已知变换矩阵和2D投影坐标去求3D点坐标。今天先写下线性三角化吧,PnP挖个坑,以后有时间再写。...

2020-05-20 22:08:16 1670

转载 如何理解ORB-SLAM g2o优化中的卡方分布

目录协方差矩阵方差和协方差的定义卡方分布ORB-SLAM中的卡方分布误差阈值协方差矩阵为了后续能更好的说明多维向量的卡方分布,有必要先简单介绍下协方差矩阵。方差和协方差的定义在统计学中,方差是用来度量单个随机变量的离散程度,而协方差则一般用来刻画两个随机变量的相似程度,其中,方差的计算公式为σx2=1n−1∑i=1n(xi−xˉ)2\sigma_{x}^{2}=\frac{1}{n-1} \sum_{i=1}^{n}\left(x_{i}-\bar{x}\right)^{2}σx2​=n−11​i

2020-05-17 18:59:32 954

转载 C++多线程编程

目录1.简介2.线程使用2.1 demo2.2 一个简单的应用3.竞争条件与互斥锁3.1竞争条件3.2 使用互斥元保护共享数据3.2.1 mutex3.2.2 lock_guard3.2.3 unique_lock1.简介多线程程序有着很多优点:快速响应:比如在一个单线程程序中,如果主线程block在一个费时的任务中(比如I/O操作),整个程序会“冻结”住,无法响应外界的输出。通过将交互任务与这个费时的任务独立成两个线程可以解决这个问题。但这并不是主要的用途,因为这种情况通过non-blocking

2020-05-17 13:45:31 237

转载 智能指针

1.前言  在C++中,动态内存的管理是通过一对运算符来完成的:new,在动态内存中为对象分配空间并返回一个指向该对象的指针,可以选择对对象进行初始化;delete,接受一个动态对象的指针,销毁该对象,并释放与之关联的内存。  动态内存的使用很容易出问题,因为确保在正确的时间释放内存是极其困难的。有时会忘记释放内存,在这种情况下会产生内存泄露;有时在尚有指针引用内存的情况下就释放了它,在这种情况下就会产生引用非法内存的指针。  为了更容易(同时也更安全)地使用动态内存,C

2020-05-17 00:20:47 121

空空如也

空空如也

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

TA关注的人

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