自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 EVO 绘制slam轨迹

文章目录一、准备工作1、生成文件2、转化格式二、制图1、evo_config2、evo_traj3、evo_ape和evo_rpe一、准备工作1、生成文件运行程序,保存地图的路径,生成了一个文件:*.txt //vins_result_loop.txt2、转化格式经过我们上面的修改,该文件是符合tum格式的,虽然我们使用的是euroc数据集,但evo只支持tum格式的绘制,它提供了euroc格式转tum格式的工具。首先我们打开数据集的state_groundtruth_estimate0/文

2021-01-19 11:54:58 2987 1

原创 基于LK光流的点特征跟踪

#include<iostream>#include<opencv2/opencv.hpp>using namespace std;using namespace cv;Mat frame, gray;//定义原图像 灰度图像Mat prev_frame, prev_gray;//表示前一帧的图像帧,前一帧的图像帧的灰度图vector<Point2f> features;//shi-tomasi角点特征检测数据 存入到featuresvector&lt

2020-12-17 11:26:54 480

原创 Ubuntu 16.04开机出现Kernel panic 。。。解决办法(亲测有效)

文章目录一、问题一、问题Ubuntu 16.04开机出现Kernel panic 。。。如下图二、解决办法1、查看内核列表 sudo dpkg --get-selections |grep linux显示:(这是我删除之后的界面,没有删除之前会有很多不同的内核版本,形式和下面是一样的)2、查看当前使用的内核uname -r现象:(我这里留了选择使用的内核版本)3、 删除内核版本(一定不要删除当前使用的内核,删除旧版本,一般情况保留两个版本即可)sudo apt autorem

2020-11-18 10:40:21 5035 6

原创 C/C++中extern关键字的使用

文章目录一、常规操作说明:一、常规操作1、extern可以位于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。2、extern也可用来进行链接指定。说明:综上:extern有两个作用(1)当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun() 这个函数名时按着C的规则去翻译相应的函数名而不是C++的,而C++的规则,是在翻译这个函数名时会把fun这个名字变得面目全非,

2020-11-09 09:29:47 138

原创 2020-11-02

在用apt-get安装软件包的时候遇到E: Sub-process /usr/bin/dpkg returned an error code (1)问题,解决方法如下:cd /var/lib/dpkg/sudo mv info/ info_bak # 现将info文件夹更名sudo mkdir info # 再新建一个新的info文件夹sudo apt-get update # 更新sudo apt-get -f insta

2020-11-02 20:58:21 223

原创 个人部分作品

文章目录1、一种苹果采摘筛选机器人2、一种新型清洁机器人3、一种两栖机器人1、一种苹果采摘筛选机器人2、一种新型清洁机器人3、一种两栖机器人4、

2020-10-28 09:41:37 138

原创 手推BA

BA本质是一个优化模型,目的是:通过最小化重投影误差/光度误差,来优化相机参数【R|t】以及路标世界点。BA是一个图优化模型,一般选择LM算法并在此基础上利用BA模型的稀疏性进行计算。

2020-09-27 11:09:18 183

原创 Ubuntu16.04 搜狗输入法输入汉字时候选栏是一串字符数字乱码问题解决方法

Ubuntu 16.04 出现这样的情况:(输入中文的时候,提示栏显示一串字符,无法正常显示中文)输入一下指令:sudo rm -rf SogouPYsudo rm -rf SogouPY.userssudo rm -rf sogou-qimpanel完美解决!

2020-09-08 02:18:14 460

原创 import numpy as np ImportError: No module named ‘numpy‘

ubuntu 16.04环境下,pycharm 出现下面的错误:出现的错误提示: import numpy as np ImportError: No module named ‘numpy’解决办法:在poycharm界面, file-》setting——》project——》project interpreter ->点击+号 -》搜索numpy-》install完美解决...

2020-09-04 16:52:41 6136 3

原创 C++多态面试题汇总

总结了一些常见的面试题,通过查阅资料给出了一些浅薄的解析,欢迎各位批评指教。inliine函数可以实虚函数码?不可以,因为inline函数没有地址,无法将他存放到虚函数表中。静态成员可以是虚函数吗?不能,因为静态成员函数中没有this指针,使用::成员函数的嗲用用方式无法访问虚函数表,所以静态成员函数无法放进虚函数表。因为:首先什么是static静态成员函数?静态成员函数不属于类中的任何一个对象和实例,属于类共有的一个函数。也就是说,它不能用this指针来访问,因为this指针指向的是每

2020-09-04 10:17:14 819

原创 Linux学习笔记

文章目录1、Ubuntu终端字体的放大和缩小:放大”ctrl shift + “ 缩小” ctrl - “2、新建文件 touch 命令的使用3、文件夹开头加一个小点 就成为影藏文件。4、ls -l 命令显示详细信息 ls -l -h 显示详细信息,5、通配符6、cd - 表示最近使用的两个命令之间随意的切换7、在LInux下,同一个路径下,文件夹和文件是不能同名的8 、tree -d 只显示目录 不显示文件9、cp -i 复制文件 提示是否覆盖文件?10 cp 复制目录,需要带一个 -r 参数 cp -r

2020-08-23 03:08:51 174

原创 二叉查找树(BST)定义及类模板实现,及相关面试题目

文章目录一、二叉搜索树的概念二 、二叉搜索树操作2.1. 二叉搜索树的查找2.2 二叉搜索树的删除2.3 二叉搜索树的实现2.4 二叉查找树实现2.5 二叉搜索树的性能分析一、二叉搜索树的概念二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树int a [] = {5,3,4,1,7,8,2,6,0,9};二 、二叉搜索树操作

2020-08-19 01:11:46 483

原创 ubuntu16.04 更新git 至最新版本

1、首先查看一下自己的版本是不是低于最新版:git --version2、若是,添加Git官方的软件源:sudo add-apt-repository ppa:git-core/ppa3、接着更新一下软件列表,就可以直接升级安装了:sudo apt updatesudo apt install -fsudo apt upgrade...

2020-08-11 17:57:54 1755 1

原创 ubuntu16.04卸载、安装eigen

查看eigen3的位置:sudo updatedb locate eigen3 #查看eigen3的位置依次删除eigen3的安装文件:sudo rm -rf /usr/include/eigen3sudo rm -rf /usr/lib/cmake/eigen3sudo rm -rf /usr/local/include/eigen3sudo rm -rf /usr/share/doc/libeigen3-dev sudo em -rf /usr/local/share/e

2020-07-25 09:43:26 2714 3

原创 ROS中的TF(TransForm)

文章目录前言什么是TF?发布的TF消息是什么样的?TF tree是什么类型呢?tf in c++前言TF是一个ROS世界里的一个基本的也是很重要的概念,所谓TF(TransForm),就是坐标转换。坐标变换包括了位置和姿态两个方面的变换,ROS中的TF是一个可以让用户随时记录多个坐标系的软件包。TF保持缓存的树形结构中的坐标系之间的关系,并且允许用户在任何期望的时间点在任何两个坐标系之间转换点,矢量等。什么是TF?TF的定义不是那么的死板,它可以被当做是一种标准规范,这套标准定义了坐标转换的数据格式

2020-07-23 08:26:17 2840

原创 激光雷达运动畸变去除方法

文章目录一、激光雷达运动畸变产生的原因二、为什么需要解决这个问题?三、去除运动畸变的原理四、运动去畸变的方法1、纯估计方法(ICP / VICP)2、传感器辅助的方法(odom,IMU)3、融合的方法本文针对二维激光雷达产生的运动畸变进行了分析,如有错误请指正!一、激光雷达运动畸变产生的原因在机器人运动过程中,每个激光点都在不同的基准位姿上产生(就是在不同的时刻发出激光时机器人的位置是不同的(由于机器人自身的运动),这也是运动畸变产生的根源所在)。激光扫描时伴随着机器人的运动,每个角度的激光数据都不

2020-07-22 22:58:53 11202 4

原创 ROS中的Client Library与roscpp talker lisener

文章目录前言一、Client Library简介二、roscpp三、talker与 lisener前言ROS为机器人开发者们提供了不同语言的编程接口,比如C++接口叫做roscpp,Python接口叫做rospy,Java接口叫做rosjava。尽管语言不通,但这些接口都可以用来创建topic、service、param,实现ROS的通信功能。Clinet Lirary有点类似开发中的Helper Class,把一些常用的基本功能做了封装。一、Client Library简介目前ROS支持的Cli

2020-07-21 10:23:40 337

原创 Linux 下配置vscode 出现 launch: program ‘/youself path /a.out‘ does not exist

在Linux环境下配置 vscode的时候出现了: launch: program ‘/youself path /a.out’ does not exist问题原因:一般是由于launch.json文件没有配置好的缘故, tasks.json的"label" 参数值设置和launch.json的"preLaunchTask"参数不一致造成的.默认情况:{ "version": "0.2.0", "configurations": [ { "

2020-07-20 20:37:39 4475 3

原创 VINS-mono论文带读及代码深度解析 [目录]

文章目录前言前言本文结合深蓝学院《VIO》课程,对VINS-mono的论文以及代码展开了详细的学习和介绍。

2020-07-17 16:58:43 1818 3

原创 七、VINS-mono 代码解析——紧耦合后端非线性优化 IMU+视觉的残差residual、Jacobian、协方差、基于舒尔补的边缘化

目录一、VIO残差函数的构建1、需要优化的状态向量:2、目标函数为:二、视觉约束(细致)1.视觉重投影误差residual(归一化平面)2、优化变量3、Jacobian4、协方差三、IMU约束(粗略,祥细见之前)1、残差:2、优化变量:3、IMU测量残差公式推导4、残差对状态量的Jacobian5、残差对状态量的协方差四、基于舒尔补的边缘化1、论文部分2、基本公式3、舒尔补4、marg后形成的先验5 具体例子5.1 原来的信息矩阵H的构成5.2 舒尔补后形成新的

2020-07-16 20:55:43 991 1

原创 五、VINS-mono 代码解析——VIO初始化之SFM详解

文章目录前言前言我们知道VINS采用了视觉和IMU的松耦合初始化方案。我将初始化分为两部分, 第一部分就是本文主要讲的SFM. 第二部分为视觉部分和IMU部分之间的关联.由于单目紧耦合的VIO是一个高度非线性系统,单目视觉没有尺度信息,IMU的测量又存在偏置误差,如果没有良好的初始值很难将这两种测量结果有机融合,因而初始化是VIO最敏感的环节。本文主要介绍运动恢复结构(SFM)得到纯视觉系统的初始化, 即滑动窗口中所有帧的位姿和所有路标点的3d位置 ,然后讨论视觉部分和IMU部分之间的关联,如何对两

2020-07-16 20:43:55 1963 2

原创 VINS-mono 代码解析——IMU预积分processIMU( )实现

文章目录前言一 processIMU()函数1 IMU 预积分IntegrationBase类2 push_back()函数3 evaluate()函数前言在VINS-mono中,estimator/src/estimator_node.cpp中,从主函数依次为:main( )---->process( )---->processIMU( )其中,processIMU( )函数的原型为:void Estimator::processIMU(double dt, const Vecto

2020-07-13 20:24:13 2041

原创 VINS-Mono代码解析——状态估计器流程 vins_estimator/estimator_node.cpp

参考博客:https://blog.csdn.net/qq_41839222/article/details/86293038参考博客文章目录前言流程图代码结构输入输出estimator_node.cpp一 程序入口 int main(int argc, char **argv)参数二 订阅IMU、feature、restart、match_points的话题topicimu_callback()回调函数feature_callback()函数restart_callback()relocalizati

2020-07-13 15:03:03 932

转载 c++11 =delete的使用

1.为什么要阻止类对象的拷贝?1)有些类,不需要拷贝和赋值运算符,如:IO类,以避免多个拷贝对象写入或读取相同的IO缓冲2.如何阻止?1)不定义拷贝构造函数和拷贝赋值运算符时,好心的编译器也会及时地学习雷锋好榜样帮你合成定义,即传说中的合成拷贝构造、合成拷贝赋值,所以这样阻止不了2)c++11允许使用“=delete”将拷贝构造函数和拷贝赋值运算符定义为删除的函数,在函数参数列表后加上“=delete”即表明这个函数是删除的函数3)删除的函数是一种这样的函数:我们虽然声明了它,但是不...

2020-07-13 11:33:37 2942 1

原创 c++11 新特性

文章目录一、列表初始化1 C++98中,标准允许使用花括号{}对数组元素进行统一的列表初始值设定。2 多个对象的列表初始化二、变量类型推导1 auto2 decltype 类型推导三、基于范围for的循环四、final和override五、委派构造函数六、默认函数控制1 显式缺省函数2 删除默认函数七、右值引用1 移动语义2 C++中的右值3 右值引用4 std::move()5 移动语义中要注意的问题一、列表初始化1 C++98中,标准允许使用花括号{}对数组元素进行统一的列表初始值设定。int a

2020-07-13 10:22:45 196

原创 VINS-Mono 代码解析——视觉跟踪 feature_trackers

文章目录理论分析数据预处理框架一、feature_tracker_node.cpp理论分析数据预处理框架代码流程如下图:主要三个源程序,feature_tracker_node是特征跟踪线程的系统入口,feature_tracker是特征跟踪算法的具体实现,parameters是设备等参数的读取和存放。一、feature_tracker_node.cpp主要分为两部分:int main()函数为程序入口,void img_callback()为ROS的回调函数,对图像进行特征点追踪,处理和发布。

2020-07-12 11:05:17 1745

原创 VINS-mon代码解析——启动文件lauch文件与参数配置文件yaml介绍

文章目录前言启动文件launch前言参考链接:https://blog.csdn.net/qq_41839222/article/details/86564879一般我们通过以下命令运行VINS-Mono跑MH_01数据集。roslaunch vins_estimator euroc.launch roslaunch vins_estimator vins_rviz.launchrosbag play YOUR_PATH_TO_DATASET/MH_01_easy.bag 那么,VINS的启

2020-07-11 16:09:20 939 1

转载 VINS-Mono 代码详细解读——IMU预积分的残差、Jacobian和协方差

前言:对第k帧和第k+1帧之间所有的IMU进行积分,可得到第K+1帧的PVQ(位置、速度、旋转),作为视觉估计的初始值。每次qwbt优化更新后,都要重新进行积分,运算量较大。将积分模型转为预积分模型:PVQ积分公式中的积分项变为相对于第i时刻的姿态,而不是相对于世界坐标系的姿态。目录一、IMU离散中值预积分理论基础1、没...

2020-07-08 22:41:51 2629

原创 VIO中IMU的模型及预计分

文章目录四元素对时间的导数VIO 中的 IMU 模型欧拉积分中值法积分IMU预积分四元素对时间的导数那么、四元数对时间的导数为:VIO 中的 IMU 模型根据上面的导数关系,可以从第i 时刻的PVQ,通过对IMU 的测量值进行积分,得到第j 时刻的PVQ:欧拉积分欧拉积分利用k时刻的斜率,作为k 到k+1 时刻整段的斜率,欧拉积分计算量很小,但近似误差会比较大。两个相邻时刻k 到k+1 的位姿是用第k 时刻的测量值啊,w来 计算。中值法积分中值积分利用k+1/2△t的斜率 作为k

2020-07-07 20:27:07 862

原创 一篇搞定 c++ 中的继承和派生

文章目录前言一、继承的概念1、类与类之间的关系2、继承关系举例3 、继承相关概念4、派生类的定义5 、继承重要说明二、派生类的访问控制1、不同的继承方式会改变继承成员的访问属性2、“三看”原则3、派生类类成员访问级别设置的原则三、继承中的构造和析构1、类型兼容性原则Code2、继承中的对象模型3、继承中的构造析构调用原则4、继承与组合混搭情况下,构造和析构调用原则5、继承中的同名成员变量处理方法6、派生类中的static关键字四、多继承前言继承性是面向对象程序设计最重要的特征,可以说,如果没有掌握继承性

2020-07-07 14:46:25 386

原创 OPenCV中的Mat类中rowRange和colRange基本使用

文章目录定义Mat::rowRange函数Mat::colRange函数定义rowRange为指定的行span创建一个新的矩阵头,可取指定行区间元素colRange为指定的列span创建一个新的矩阵头,可取指定列区间元素Mat::rowRange函数Mat::rowRange为矩阵的指定行区间创建一个矩阵头。C++: Mat Mat::rowRange(int startrow, int endrow) constC++: Mat Mat::rowRange(const Range&amp

2020-07-06 17:03:01 1503 2

原创 C语言对文件的操作

文章目录前言前言在程序设计中,我们一般谈的文件有两种:程序文件、数据文件。程序文件:包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。数据文件:文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。我们会把信息输出到磁盘上,当需要的时候再从磁盘上把数据**读取(输...

2020-07-06 10:30:20 159

原创 extern关键字的使用

文章目录前言理解例子前言我们知道,程序的编译单位是源程序文件,一个源文件可以包含一个或若干个函数。在函数内定义的变量是局部变量,而在函数之外定义的变量则称为外部变量,外部变量也就是我们所讲的全局变量。它的存储方式为静态存储,其生存周期为整个程序的生存周期。全局变量可以为本文件中的其他函数所共用,它的有效范围为从定义变量的位置开始到本源文件结束。然而,如果全局变量不在文件的开头定义,有效的作用范围将只限于其定义处到文件结束。如果在定义点之前的函数想引用该全局变量,则应该在引用之前用关键字 extern

2020-07-03 17:41:30 130

原创 节点初始化、关闭以及NodeHandle

文章目录前言初始化节点关闭节点NodeHandle常用成员函数NodeHandle的使用前言当执行一个ROS程序,就被加载到了内存中,就成为了一个进程,在ROS里叫做节点。每一个ROS的节点尽管功能不同,但都有必不可少的一些步骤,比如初始化、销毁,需要通行的场景通常都还需要节点的句柄。 、初始化节点对于一个C++写的ROS程序,之所以它区别于普通C++程序,是因为代码中做了两层工作:调用了 ros::init() 函数,从而初始化节点的名称和其他信息,一般我们ROS程序一开始都会以这种方式开始。

2020-07-03 17:08:52 1529

原创 ROS中的package.xml的使用

文章目录package.xml作用package.xml写法(来自VINS-mono中 vins_estimator)package.xml作用pacakge.xml 包含了package的名称、版本号、内容描述、维护人员、软件许可、编译构建工具、编译依赖、运行依赖等信息。实际上 rospack find 、 rosdep 等命令之所以能快速定位和分析出package的依赖项信息,就是直接读取了每一个pacakge中的 package.xml 文件。它为用户提供了快速了解一个pacakge的渠道。p

2020-07-03 11:25:03 720

原创 ROS 中的Package软件包

文章目录前言package结构创建package前言ROS中的package的定义更加具体,它不仅是Linux上的软件包,更是catkin编译的基本单元,我们调用 catkin_make 编译的对象就是一个个ROS的package,也就是说任何ROS程序只有组织成package才能编译。所以package也是ROS源代码存放的地方,任何ROS的代码无论是C++还是Python都要放到package中,这样才能正常的编译和运行。一个package可以编译出来多个目标文件(ROS可执行程序、动态静态库、头文

2020-07-03 11:05:31 780

原创 ROS中的launch文件的使用

文章目录前言写法和格式前言机器人是一个系统工程,通常一个机器人运行操作时要开启很多个node,对于一个复杂的机器人的启动操作应该怎么做呢?当然,我们并不需要每个节点依次进行rosrun,也就是说rosrun一次只能启动一个节点。ROS为我们提供了一个命令能一次性启动master和多个node。该命令是:$ roslaunch pkg_name file_name.launchroslaunch命令首先会自动进行检测系统的roscore有没有运行,也就是确认节点管理器是否在运行状态中,如果maste

2020-07-03 10:35:09 649

原创 C/C++经典面试题(一)——常考知识点(持续更新)

文章目录前言1、引用和指针有什么区别?2、explicit(显示)关键字3、inline 内联函数4、经典面试题之new和malloc的区别5、static关键字有什么作用?前言1、引用和指针有什么区别?答案链接:https://blog.csdn.net/qq_43247439/article/details/1064674202、explicit(显示)关键字答案链接:https://blog.csdn.net/qq_43247439/article/details/1068487523、i

2020-07-03 08:33:00 486

原创 启动ros 出现ImportError No module named defusedxml

引起这一错误的原因是无法找到/usr/bin/python这一链接,或者该链接并不是指向Python2。ls -n /usr/bin/python可以查看其指向,若是无该链接,则sudo ln -s /usr/bin/python2 /usr/bin/python若是有该链接,但是指向了Python3,则先删除指向sudo rm -rf /usr/bin/python然后指向Python2ls -n /usr/bin/python ...

2020-06-27 10:17:59 1100

原创 世界坐标系,相机坐标系,图像坐标系和像素坐标系之间的转换

1、世界坐标系到相机坐标系之间的转换:世界坐标系是真实世界的基准坐标系,我们需要知道相机坐标系下的点在世界坐标中的位置,利用齐次坐标转换矩阵。2、相机坐标系到图像坐标系之间的转换:该转换可以看成简单的射影变换(将相机看成小孔模型),将三维坐标变换成二维坐标。其中f为焦距:3、图像最坐标系到像素坐标系:...

2020-06-23 22:29:12 4520

空空如也

空空如也

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

TA关注的人

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