自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Autox笔试笔记(键盘距离&追车问题)

Autox笔试追车和键盘问题

2022-09-01 20:41:50 406 3

原创 Ubuntu用户目录下缺失Desktop Downloads等文件夹的解决办法

运行指令:xdg-user-dirs-update他们就奇迹般的冒出来了

2021-11-11 20:59:28 4260 6

原创 李哈哈视觉SLAM十四讲源码的正确打开方式:第5讲 相机与图像

时隔多年,又回来搞14讲后边的实践部分了5.3 实践:计算机中的图像5.3.1 OpenCV的基本使用方法安装OpenCV,build之后别忘了sudo make install将OpenCV安装到电脑上实验源代码为imageBasics.cpp,因为创建了build文件夹,所以可执行文件在build里经过cmake ..和make之后,使用如下指令运行:./imageBasics /home/lihaha/桌面/ch5_1.0/imageBasics/ubuntu.png前者是可执行文件,

2021-06-06 23:04:14 820 3

原创 SLAM评测工具EVO常用功能介绍【正在刷夜的李哈哈】

前言EVO是一款常用的slam评测工具,本人近期在做毕设,计划修改代码,并查看修改代码后的slam运行效果所以决定学习使用EVO,并从中学习如何对比结果官方网页介绍EVO的官方信息几乎全部在GitHub上,链接如下:EVO的整体介绍:指令、功能等对于EVO更加细节的介绍在这里,是一篇Wiki:EVO具体使用方法介绍Wiki另外关于EVO的安装可以参照其他博文,不做赘述实际使用方法...

2021-05-27 22:57:29 2469 4

原创 输出ORB-SLAM2某部分用时并绘制曲线的方法

冲冲冲!前言c++计时函数c++输出数据到txtMatlab读取txt文件并打印前言最近在研究ORB-SLAM2,为了直观看到ORB-SLAM2运行数据集过程中某部分的用时,决定对用时进行打印输出,并使用matlab绘制曲线c++计时函数为了获得某段程序的用时,采用c++自带的函数库来实现计时。在需要计时的程序上方,引用头文件:#include<ctime>之后定义两个变量,表示被测试程序段的始末时间点:clock_t start,end;//定义了被测程序段始末时间节点在

2021-05-06 18:43:15 536 8

原创 透明材质显示技术调研

前言透明材质显示主要有两种:透明显示屏投影显示HUD其中透明显示屏又分为OLED、液晶LCD、LED光电玻璃投影显示主要为车载HUD(Head Up Display)透明显示屏OLED与传统的液晶显示相比,OLED 属于自发光的显示技术,不需要背光源,因此具有外形轻薄、视角宽广、对比度高的特点。优点: 显示效果较好,适合应用于橱窗展示、户外广告牌等场合;在现有的透明产品上应用较多,如透明电视、透明手表缺点: 没有找到很好的定制服务,80寸起定制,主要还是面向商铺玻璃墙展示大致效果

2021-04-26 11:24:08 333

原创 ORB-SLAM2:LoopClosing线程学习随笔【李哈哈:看看总有收获篇】

前言闭环检测线程处理的是从局部建图线程传过来的关键帧,然后我们从历史关键帧里找能够匹配的,形成闭环,优化地图闭环检测:DetectLoop()关于共视图和闭环候选帧的选择原则小问题共视图的建立是在局部建图线程,基本方法是寻找观测到当前帧地图点的先前的关键帧,建立的线索在于共同的地图点(值得一提的是,共视关键帧是共同看到了大于等于15个地图点的关键帧)而闭环候选帧的选择使用的是BoW向量,先通过BoW向量的相似关系,找匹配的地图点,还是有一定区别的那么问题来了,希望的候选关键帧会不会已经是共视关键

2021-03-17 22:08:10 641

原创 ORB-SLAM2:LocalMapping线程学习随笔【李哈哈:看看总有收获篇】

前言在Tracking线程中,生成了关键帧并送到了局部建图线程,这说明关键帧和地图点插入到Map中是在局部建图线程进行的局部建图线程主要工作:插入关键帧当前帧地图点剔除创建新的地图点局部BA局部关键帧剔除Tracking线程地图点处理方法首先利用恒速运动模型得到当前帧粗略的位姿,以及匹配到的部分地图点,然后依据这些地图点,构建局部地图,局部地图构建后,在其中查找当前帧视野内的地图点,与该帧特征点进行投影匹配,之后在进行位姿优化插入关键帧:ProcessNewKeyFrame()如标

2021-03-14 14:30:17 478

原创 ORB-SLAM2:Tracking线程学习随笔【李哈哈:看看总有收获篇】

前言继之前学习特征提取之后,终于要开始SLAM正经线程的学习了因为感觉做不完毕设了,所以后期会看的快一些,几篇文章将以随笔形式展开,主要记录学习过程中的一些心得体会随笔描述子是个矩阵是怎么回事描述子是在该函数中提取的: /** * @brief 用仿函数(重载括号运算符)方法来计算图像特征点!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * * @param[in] _image

2021-03-12 15:23:53 526

原创 ORB-SLAM2特征提取原理解【李哈哈B站视频第三讲配套食用】

写在前边的话这篇文章写于录制ORB-SLAM2特征提取详解视频期间因为发现有必要说一说ORB的原理,毕竟很多小伙伴可能还不是很了解另外考虑到别人的帖子直接拿过来讲不太好,我就简单整理以下别人的(很多大佬写的超级好!)本篇文章大部分参照:【理解】ORB特征提取与ORBSLAM特征匹配简要剖析这篇写的很详细,我只是添加了一些自己的理解认识进去,可以直接去看这篇嗷不墨迹,上干货!????ORB概述ORB名词解释:ORB:Oriented FAST and Rotated BRIEFOrient

2021-02-02 23:10:15 952 4

原创 零基础学习ORB-SLAM2特征点提取-从原理到源码【李哈哈】

写在前边的话该文章将介绍ORB-SLAM2源代码中特征提取部分的主题内容,涉及整体流程、原理简介、源代码讲解,那我们开始吧!框架梳理mono_kitti.cc我们采用mono_kitti.cc来开始程序,也就是针对单目kitti数据集来研究。进入main函数,定义了两个容器来存放每张图片的路径和时间戳:// Retrieve paths to imagesvector<string> vstrImageFilenames; //图像序列中每张图片存放路径vector<dou

2021-02-02 10:02:10 2268 6

原创 如何使用Ubuntu安装QQ音乐Linux版本

平时喜欢边听歌边干活,之前一直以为Linux系统没有QQ音乐,随手搜了一下,发现QQ音乐刚刚发布了Linux版本,亲测可用!教程如下:点击下方网址,进入QQ音乐下载页网址:QQ音乐下载页链接页面如下:点击右边的Linux下载按钮,我的是Ubuntu18系统,所以选择的是deb包,下载好之后得到.deb安装包在安装包所在路径,执行如下指令即可进行安装:sudo dpkg -i [下载的安装包名称]#例如:sudo dpkg -i qqmusic_1.0.6_amd64.deb这样就可

2021-01-24 09:53:50 20069 19

原创 李哈哈视觉SLAM十四讲源码的正确打开方式:第4讲 李群和李代数

当你下定决心开始学习SLAM时,看到《视觉SLAM十四讲》的你是否欣喜若狂?当你学完理论知识准备在实践章节大显身手时,发现源码完全不会跑的你又是否一脸懵逼?不要怕!和李哈哈一起刷夜,我们一起康康每讲的实践部分,到底怎么玩。写在前面的话和很多初学SLAM的小伙伴一样,我对SLAM、对Linux,甚至对C++都不清楚????看了看SLAM十四讲感觉突然有点感觉的时候,实践部分又完全无从下手????针对以上这种情况,我决定将自己完成实践部分作业的过程分享出来????希望那些和我一样刚开始学习SLA

2020-12-26 16:24:18 790

原创 视觉SLAM十四讲 3.6.2 实际的坐标变换例子代码解析

在这里介绍一下视觉SLAM十四讲3.6.2实际的坐标变换例子的代码分析这里作者只给了源代码,其实是有公式推导的我结合网上其他人的代码,在不影响对源代码的理解的同时,对代码进行了一些改进,大家可以仔细看下注释内容:#include <iostream>#include <vector>#include <algorithm>#include <Eigen/Core>#include <Eigen/Geometry>using nam

2020-12-26 11:06:29 887 3

原创 视觉SLAM十四讲源码的正确打开方式:第3讲 三维空间刚体运动

这是很有成就感的一张图,开心!

2020-12-25 22:18:02 2168 10

原创 Eigen库中vector.transpose()函数什么意思

在使用Eigen库时,我们阅读源码的时候可能看到在输出(显示)一个向量时,有如下表示形式://定义一个向量Vector3d p2;//……//打印该向量cout << p2 << endl;//列向量显示cout << p2.transpose() << endl;//行向量显示这里的p2.transpose()其实是使用转置矩阵的意思从打印的效果来看就知道为什么这么写:可以看到列向量显示占了很多行,看起来不舒服如果对你有帮助,希望老铁

2020-12-25 11:10:18 4637

原创 小白向:VSCode最简单代码格式化/自动对齐(无需安装插件或更改配置文件)

最近在使用VSCode,总感觉代码风格很诡异(我本来以为是已经格式化好的),后来发现是没有格式化代码,各种对齐都没有看了网上很多教程,装这装那、改这改那的总之感觉没一个好使的(可能是我太菜了????)最后在想要放弃的时候,选中了一块代码右键了一下,发现是这样显示的:这不是就有格式化的相关操作嘛!直接按他提示的,选中代码后,依次用Ctrl+k和Ctrl+f就格式化好了效果杠杠的:如果大家有其他的自动对齐方法,评论区指点下小弟哈!????...

2020-12-24 21:28:23 19347 7

原创 视觉SLAM十四讲源码的正确打开方式:第2讲 初识SLAM

当你下定决心开始学习SLAM时,看到《视觉SLAM十四讲》的你是否欣喜若狂?当你学完理论知识准备在实践章节大显身手时,发现源码完全不会跑的你又是否一脸懵逼?不要怕!和李哈哈一起刷夜,我们一起康康每讲的实践部分,到底怎么玩。写在前面的话和很多初学SLAM的小伙伴一样,我对SLAM、对Linux,甚至对C++都不清楚????看了看SLAM十四讲感觉突然有点感觉的时候,实践部分又完全无从下手????针对以上这种情况,我决定将自己完成实践部分作业的过程分享出来????希望那些和我一样刚开始学习SLA

2020-12-24 16:24:46 825 2

原创 视觉SLAM十四讲源码的正确打开方式:第1讲 预备知识

当你下定决心开始学习SLAM时,看到《视觉SLAM十四讲》的你是否欣喜若狂?当你学完理论知识准备在实践章节大显身手时,发现源码完全不会跑的你又是否一脸懵逼?不要怕!和李哈哈一起刷夜,我们一起康康每讲的实践部分,到底怎么玩。写在前面的话和很多初学SLAM的小伙伴一样,我对SLAM、对Linux,甚至对C++都不清楚????看了看SLAM十四讲感觉突然有点感觉的时候,实践部分又完全无从下手????针对以上这种情况,我决定将自己完成实践部分作业的过程分享出来????希望那些和我一样刚开始学习SLA

2020-12-23 22:07:49 1428 9

原创 小白向:古月居ROS21讲自学笔记,看一下这个就大概了解这套课程讲什么啦!

第1讲 课程介绍ROS:Robot Operating System,机器人操作系统通信机制+开发工具+应用功能+生态系统Powering the world’s robots——机器人领域的普遍标准基础概述核心概念编程基础常用组件进阶展望使用Google浏览器可以找到很多问题第2讲 Linux系统介绍及安装1991年,芬兰赫尔辛基的大学生Linus Torvalds编写企鹅logo:敢作敢为,热爱生活第3讲 Linux系统基础操作软件源软件更新中可以设置软件源,校园网用e

2020-12-22 11:22:41 1373 2

原创 CMake自学记录,看完保证你知道CMake怎么玩!!!

写在前边为啥要学习CMake?(不同环境下Makefile格式是不兼容的)这里我就不说啥是CMake了,因为我相信看到这篇文章的你肯定已经接触过CMake了。最近开始搞SLAM,要运行视觉SLAM十四讲上的一些实践案例,里边涉及到CMake的相关知识。本来觉得CMake大概会用就行,照着CSDN上一些教程运行了一些小例程,但是感觉还是走马观花,没搞清楚,决定自己写一个来记录如何使用CMake。那就开始整活吧!Ubuntu自己的编译命令在Ubuntu中,我们比较常见的编译器是gcc和g++,前者编

2020-12-19 15:11:14 8470 1

原创 ubuntu18.04安装ROS时出现错误ERROR: cannot download default sources list from解决办法

问题描述最近正在配置ROS操作系统。在输入指令:sudo rosdep init出现了如下报错:这里说一下我的操作流程及解决办法。解决办法笔者参照的是B站古月居课程进行的ROS安装,大家想入门ROS的话也可以参照这门课程,具体的配置过程和课程内的不太一样,参照的是ROS官方的安装教程,链接如下:http://wiki.ros.org/melodic/Installation/Ubuntu也可以先看一下古月居的安装过程,对ROS安装有一个大概的了解。参照上述链接中的流程,我在上述步

2020-12-15 22:17:22 1952 1

原创 Linux基本知识学习笔记(常用指令)

Linux基本知识学习笔记Linux常用命令命令格式与目录处理命令ls命令格式:命令【-选项]】【参数】例:ls -la /etc说明:个别命令不用遵守此格式当有多个选项时,可以写在一起简化选项与完整选项如:-a 等于 -all目录处理命令:ls命令名称:ls命令英文原意:list命令所在路径:/bin/ls执行权限:所有用户语法:ls 选项[-ald] [文件或目录]-a 显示所有文件,主要是显示出隐藏文件(all)-l 详细信息显示(long)-d 查看指定目录

2020-12-13 14:57:29 1579

原创 视觉SLAM十四讲笔记(超级通俗易懂哦~)

第二讲 初识SLAM传感器 Sensors两类传感器:安装于环境中的:二维码,GPS,携带于机器人本体的:对比激光和相机两大类传感器,激光建图基本上已经研究清楚,视觉SLAM还没有稳定可靠运行摄像头:轻便、便宜、信息丰富缺点:遮挡、受光照影响、计算量大、单目,双目,深度相机(TOF/结构光)...

2020-12-13 14:51:50 16712 3

原创 李哈哈的模式识别笔记【part 4:支持向量机】

李哈哈的模式识别笔记【part 4:支持向量机】支持向量机的原理支持向量:Support Vector 是距离分类决策边界最近的样本点(向量点)。通过支持向量,可以找到最大分类间隔下权向量,从而达到一种比价理想的分类决策函数。支持向量机:Support Vector Machine(SVM)结构风险最小化准则什么是最优解?使得分类间隔d取得最大值的权向量w。SVM的优点:它不需要大量的样本,最终解仅由少量支持向量决定。它具有很强的泛化能力。两种风险描述:经验风险:错误分类样本

2020-12-12 20:55:35 138

原创 工厂供电复习笔记

概述什么是电网,电网怎么区分。基本概念熟练掌握。1.2 电力系统接线方式和电压等级电压等级每年都考,一些基本的概念。有一张图,给一些相关参数算其他没给的参数。长线短线中性点运行方式相当重要中性点不解地,某一相不解地,为什么还能继续工作。中性点为什么经过消弧线圈接地,进位对地电流超过多少就需要。中性点为什么经小电阻接地。中性点直接接地。TN-C系统外壳带电怎么办TN-S系统TN-C-S系统市电就是这三种系统TN系统,中性线接地,有什么作用:ppt三条TT系统IT系统第二章 工

2020-12-04 10:07:33 4363 4

原创 win10系统在vscode下配置opencv失败记录

win10系统在vscode下配置opencv失败记录前言本周开始学习opencv,首先要有一个编译环境,笔者选择轻量型选手vscode作为编辑器,MinGW作为编译器,在cmake加持下尝试完成编译环境,但最终以失败告终,在本篇文章中简单记录一下遇到的问题及解决办法,以及无法解决的问题。各软件版本vscode:官网下载的最新版本opencv:4.4.0MinGW:采用最新版下载器下载完成cmake:3.18.2各软件安装过程vscodevscode直接去官网,应该有手就行吧openc

2020-11-14 17:05:29 1922 3

原创 VScode无法登陆LeetCode的解决办法

VScode无法登陆LeetCode的解决办法有可能是没有将账户设置成中国终端。安装完成LeetCode插件并且Node环境变量配置无误后,应当先登录LeetCode。登录前检查是否需要设置账户终端位置:点击插件管理,进入LeetCode插件的Extension Settings。找到如下选项,设置为如图所示cn结尾。之后重新登录即可(可能需要重启VScode)...

2020-11-12 11:19:00 16514 4

原创 李哈哈的模式识别笔记【part 4:LMSE算法】

李哈哈的模式识别笔记【part 4:LMSE算法】线性分类器的松弛求解定义:我们给定了bi,让每个样本的判别函数不仅仅大于零,而且等于bi。那么,线性分类器求解过程中的不等式约束,就变成了等式约束,这样,在样本数量和空间维度相等时,便存在线性分类器训练的特定解。**LMSE:**最小均方误差(Least Mean Square Error)这里采用实际值与松弛变量b的LMSE,采用批量梯度下降法,找到最优的权向量。HK算法同步优化松弛变量的HK算法这里我们要找到最合适的松弛变量值。这里仍

2020-11-11 11:17:55 1894

原创 李哈哈的模式识别笔记【part 3:感知器算法】

李哈哈的模式识别笔记【part 3:感知器算法】线性分类器训练的一般思路人类的思维具有整体性和逻辑性,机器的思维擅长重复性解区域:线性判别函数解不唯一,而是位于一个区域,称为解区域。=>权向量w待定,偏移量w0待定。一般思路:首先设定一个标量的准则函数,使其值能够代表解的优劣程度,标准函数值越小,说明解越符合要求。通过寻找标准函数的最小值,就能找到最优的一个解,使准则函数取得极小值的增光权向量,就是最优解。这里有必要重新认识一下线性判别函数的通式,可参照下图:感知器算法的原理

2020-11-10 21:54:53 619

原创 李哈哈的模式识别笔记【part 2:线性分类器】

李哈哈的模式识别笔记【part 2:线性分类器】

2020-11-10 19:50:36 274

原创 李哈哈的数据结构和算法笔记【part 2:线性表】

李哈哈的模式识别笔记【part 2:线性表】感受线性表的存在排队,记住自己前边的人就行。线性表定义:由零个或多个数据元素组成的有限序列。几个强调:是一个序列,有先来后到。若有多个元素,第一个无前驱,最后一个无后继,其他元素有且只有一个前驱和后继。线性表是有限的。线性表的抽象数据类型(ADT)抽象数据类型:abstract date type把数据类型和相关操作捆绑在一起。线性表的抽象数据类型定义:ADT 线性表 ListDATE线性表的数据对象集合为{a1 a2 a3 …

2020-11-05 21:42:37 90

原创 C++类和对象的学习【part3:对象特性2.0】

C++类和对象学习【part3:对象特性2.0】成员变量和成员函数分开存储在C++中,类内的成员变量和成员函数分开存储。只有非静态成员变量才属于类的对象上。这里一共有四种成员:非静态成员变量静态成员变量非静态成员函数静态成员函数具体展示代码如下:// arrayone.cpp -- small arrays of integers#include <iostream>using namespace std;#include <string>cla

2020-11-05 10:05:06 114

原创 C++类和对象的学习【part2:对象特性】

C++类和对象的学习【part2:对象特性】构造函数和析构函数完成对对象的初始化和清理。编译器强制,自动调用。构造函数语法:类名(){}

2020-11-05 10:04:54 91

原创 C++类和对象的学习【part1:封装】

C++类和对象的学习【part1:封装】属性和行为作为整体从这里开始,我们将探讨类这个主题,类的三要素是封装-继承-多态。我们先从封装看起。参考下列代码:// arrayone.cpp -- small arrays of integers#include <iostream>using namespace std;const double PI = 3.14;//要设计一个类class Circle{ //访问权限 //公共权限public:

2020-11-05 10:04:26 86

原创 李哈哈的模式识别笔记【part 1:模式识别系统】

李哈哈的模式识别笔记【part 1:模式识别系统】特征与特征空间知识点:从样本 sample 中可以提取特征 feature ,这些特征共同组成了特征空间 feature space ,特征与特征之间可以通过某种方式度量其相似度 similarity ,这样,相似度高的特征空间可以归类为一个类 class 。识别的过程就是根据特征分类的过程不同类型的特征空间:向量空间,集合空间。有监督学习和无监督学习主要在于分类集中的样本是否添加标签。有标签则为有监督学习,这种学习的上限是人脑对于该问题

2020-11-05 09:46:40 932

原创 李哈哈的数据结构和算法笔记【part 2:时间复杂度和空间复杂度】

李哈哈的数据结构和算法笔记【part 2:时间复杂度和空间复杂度】算法效率的度量方法1.事后统计方法缺点:需要事先编号测试程序,且不同测试环境差别很大。2.事前分析估算方法定义:在计算机程序编写前,依据统计方法对算法进行估算。函数渐进增长存在正整数N,若n>N时,f(n)一直大于g(n),则称f的渐进增长快于g。可以省略加法常数,如3n+2≈3n与最高次项相乘的常数并不重要,可以省略**结论:**判断算法效率,函数中常数和其他次要项常常可以忽略,而更应关注主项(最高次项)的阶数

2020-11-04 22:55:21 76

原创 李哈哈的数据结构和算法笔记【part 1:谈谈算法】

数据结构和算法【part 1】谈谈算法高斯给出的1到100求和方法,就是一种算法,可以简化运算。算法的五个基本特征:输入(0-多个)输出(1-多个)有穷性(每个步骤在可接受时间内完成)确定性(没有二义性、相同输入只能有唯一输出、每个步骤精确定义无歧义)可行性(每一步都是可行的,可通过执行有限次数完成)算法设计要求:安全性:大体分为四个层次算法程序无语法错误合法输入产生满足要求的输出非法输入产生满足规格的说明对于故意刁难的测试输入均有满足要求的输出结果可读性健壮性时间

2020-11-04 20:38:50 141

原创 有关C++引用操作的学习记录

前言鉴于本人学完就忘的惊奇骨骼,决定把一些有意义的知识进行简单的记录。在本篇中,重点介绍c++关于引用的相关知识。引用做函数参数这里我们综合对比三种函数参数设置方式,分别为:值传递地址传递(指针)引用传递所用代码如下:// arrayone.cpp -- small arrays of integers#include <iostream>using namespace std;//值传递void swap01(int a, int b){ int t

2020-10-29 21:45:43 142 1

原创 new运算符简单示例分析

在本文中,笔者想简单记录一下new操作符的使用方法,并通过程序具体实现。程序介绍// arrayone.cpp -- small arrays of integers#include <iostream>using namespace std;//返回值是一个指针int * func(){ //返回该数据的指针 int * p = new int(10); return p;}//堆区数据由程序员管理释放void test01(){ i

2020-10-28 15:58:58 196

空空如也

空空如也

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

TA关注的人

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