自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

青菜虫虫的专栏

记录每天的点点滴滴

  • 博客(52)
  • 资源 (12)
  • 收藏
  • 关注

原创 IMU与轮速计联合初始化

因此,在xy平面上实际上就是轮速计的积分,轮速计积分虽然比较稳定,但是并不是很好,有时候也会飘,而缺乏绝对观测的原因,一旦飘了一点点就再也回不来了,以至于回环的时候有一个很大的偏差。如果直接用它做积分,立马就要飞掉,甚至你都看不出一点点趋势,发散的非常快,以至于还搞出速度用轮速计,角度用IMU这样的不伦不类的融合方式。以前在有gnss信号的情况下,根本就没做初始化,因为绝对观测会把错误位姿纠正回来,但是在地库中就不能这么搞了,所以也让我认识到初始化的重要性,还是不得不做的。,这里说的初始重力方向。

2023-12-28 09:28:49 614 2

原创 两个旋转矩阵相乘的李代数扰动求导

有一些非常有意思的求导方式,特此记录下来。是个小量,可以去掉的。

2023-12-07 11:38:41 426

原创 一些数学公式证明

To expand on the existing answer: for me the tricky part was actually going from eq. 23 to eq. 24. There's probably an easier way to see it, but here's how I did it.Recall that for a vector uu, the matrix u×u× is defined as the linear transformationu×::v↦u

2023-08-14 11:41:43 75

原创 边缘化中FEJ图例的理解

但是,很多时候只是一笔带过,这个图看的云里雾里的,不是非常明白(可能是我理解力的问题),所以,今天想专门写个笔记记录下对这张图的理解。,a,b是该协方差的特征值,如果ab都不为0,它的分布就是个椭圆。的分布是一条直线还是一个椭圆,因为其他项是线性的,只能影响该分布的朝向、位置等,不会影响形状。太复杂了,我不求了,它有两个不为0的特征值,分布是一个椭圆。即它的特征值是0和0.7956,那么它的分布是条直线。,它的特征值是:0和0.7956,它的分布是一条直线。的泰勒展开式的倒数推导出来的,即。

2023-06-04 11:40:49 704

原创 rviz学习

今天学习rviz,实验了贺一家博士的《从0开始手写vio》课件中的生成模拟IMU数据这一章节,代码如下:/* * Copyright (c) 2010, Willow Garage, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following

2021-09-19 18:01:05 402

原创 高精地图应用(八)标牌重建

跟踪预测后,已经能建立多帧之间标牌的一致性关系,而每一帧的外参通过前面的定位环节已经确定了,因此只要建立同名点关系,就可以用三角量测把坐标算出来了。有一种办法是采用特征匹配的方法,通过特征点匹配建立同名点关系,而标牌还多一个单应约束,建立最小二乘问题,问题即可解。但本文并不采用这种方法,特征匹配强依赖于特征点的个数,对照片模糊或特征比较少的要素就无能为力了,本文介绍一种更加通用的方法,直接使用目标检测框来做:基于这样的判断:标牌角点投影到各帧图像中与目标检测的角点重投影误差时的位置就是标牌的位置

2021-02-05 13:33:52 373

原创 高精地图应用(七)跟踪预测

之前小结关注的是无人车的定位问题,从本小节开始关注的是建图问题,对于点状要素的建图来说,一般是采用三角测量的方法最关键的在于找到前后帧图像的同名点,一种可行的办法是找到前后帧图像的同名要素,比如如何确定前后两帧的标牌是同一个标牌,这就用到了跟踪预测的方法,opencv自带了许多跟踪方法,比如KCF Tracker、CSRT Tracker等,我实验了许多方法,发现都不是很好,总有跟丢的情况,最后采用的是跟踪算法与匈牙利算法相结合的办法,跟踪算法采用的是http://www.cvl.isy.liu

2021-02-03 17:46:03 392

原创 高精度地图(五)纵向定位

当横向定位成功后,无人车视野已经被限制住了,这时标牌等视觉要素跟高精地图的标牌只差了一个纵向上的偏差,对于我们人类来说是很容易找到对应关系的。机器找到对应关系也很简单,这个就要用到著名的匈牙利算法,这里就不过多介绍了,请参考别的文章,我们只说过程:1.将高精度地图通过投影到图像上,如上图,这是5个矩形。目标检测同样有5个矩形(红色阴影),于是可以构建二部图接下来就是确定每个标牌投影的矩形与目标检测每个矩形之间的权值,以确定最佳匹配关系,这里就简单使用中心点的位置以及长宽比...

2021-02-03 16:32:18 1093

原创 外业采集车

高精度地图外业采集车共有4个设备:1.Lidar扫描仪,可以实时获取在扫描仪坐标系下的点云坐标2.GPS+IMU,GPS提供采集车实时世界坐标,IMU提供采集车的实时姿态,这两者提供了采集车实时POS3.全景摄像机,可以提供实时全景影像,实际上是由6台摄像机组成,5台布置在车头,1台布置在车顶,通过融合程序,最后融合到一起成为全景30度照片4.DMI,绑定在车轮上,可以用来计算采集车里程,可以用来...

2020-09-15 09:02:33 319

原创 高精地图应用(四)横向定位

这里的横向定位是基于ICP算法的改进实现的3d-3d的配准方法,步骤:1.将单帧重建车道线的形值点,向高精度地图中的车道线做垂足,考虑到不受高程差异的影响,这里是在平面上完成的。求得的形值点与垂足就组成了一对同名点,我将形值点命名为source,垂足命名为target。会生成很多这样的同名点。2....

2020-09-10 18:48:15 1593 8

原创 高精度地图应用(三)单帧重建

单帧重建是指车道线的重建,为何选择车道线是因为车道线输出稳定,每一帧图像都有,而且车道线特征很强,语义分割技术比较成熟。首先,需要对原图进行语义分割以提取车道线,如: 然后,在语义分割基础上进行折线拟合,我这里就直接采用了opencv直线拟合的方式,代码:std::vector<Eigen::Vector2d> utils::Fitting2d(const std::vector<cv::Point2d>& geometry2d, cv::Mat K, c...

2020-08-16 17:41:40 774

原创 高精度地图应用(二)参数标定

整个系统框架图是这样的,让我再重新解释一下:首先对系统做一些标定工作,包括三个对齐:内参标定、安装角标定、时间同步。内参标定就不多解释了,就是求焦距fx,fy、像主点cx,cy、畸变参数D。安装角是指相机相对于车身的坐标系偏转,包括俯仰角pitch、偏转角yaw,滚转角roll,以及车身高度h,这四个参数决定了后面单帧重建的效果:关于这四个参数的标定方法首先要了解这四个参数是如何影响单帧重建的:如果pitch不对,则重建出来的车道线将不平行,如pitch不够将导致车道线近大远小,如:...

2020-08-13 17:00:17 1188 3

原创 高精度地图应用(一)自动驾驶初探

以下都是我的个人理解,说的不对的欢迎狂怼。 借用apollo的架构说事: 自动驾驶由这7部分组成:1.感知。就是指传感器的输入,包括激光雷达、视觉图像、GPS、惯导、毫米波雷达等都可以归类为感知。2.地图。就是指高精度地图,它与普通导航地图的最大区别是:高精度地图主要用于定位,是给机器看的。导航地图主要用于路径规划,是给人看的。高精度地图有着20cm绝对精度,5cm相对精度,具有全要素,车道集级等等,在我看来其就是对真实世界的标注而已,跟图像标注没有什么本质区别...

2020-07-26 11:13:06 673 1

原创 利用vs2017 CMake开发跨平台C++项目实战

       对于windows程序员来说,在linux上开发C++程序会非常困难,一来没用过makefile,其语法非常生涩难懂,二来vs之外的IDE,其易用性与vs相差甚远,宇宙第一IDE不是盖的。致使C++不同于其他编程语言,硬生生催生出Windows程序员和Linux程序员两个群体,直到有了CMake。       常用开源库的同学想必对CMake非常熟悉,它可以在Linux上可以自动...

2019-01-16 16:01:28 37135 5

原创 Jenkins+svn+MSBuild自动编译VC工程

Jenkins是一个优秀的持续集成工具,本文介绍如何搭建VC工程自动编译系统1.新建一个自由风格的软件项目2.源码管理:填写svn地址,用户名密码3.安装msbuild    msbuild不是默认自带的,需要安装,打开Jenkins-&gt;系统管理-&gt;管理插件-&gt;可选插件    选择msbuild安装4.配置msbuild    打开Jenkins-&gt;系统管理-&gt;全局工...

2018-02-25 10:57:51 3870

原创 osg实现正交视图控制器

osg中没有正交视图的控制器,但是我们经常会遇到2D的项目应用,我也不知道如何申请成为osg社区的会员,就写在这里,以免忘掉,拿去不谢.#ifndef OSGGA_ORTHO_MANIPULATOR#define OSGGA_ORTHO_MANIPULATOR 1#include #include #include #include "osg_export.h"names

2018-02-05 11:18:41 2370 2

原创 利用半自动化从点云中提取规则多边形

高精度地图一个重要的矢量数据就是交通标志,比如地面的字符、箭头,路边的限速牌等。在我理解看来,交通标志与车道线是同等重要的,因为它是无人车初始定位的重要匹配依据。写到这就扯远了,我今天要讨论的是,如何用交互的方式从点云中提取规则多边形,这篇文章以地面字符箭头为例,也就是矩形的提取。首先,算法输入是已经分类好的初始点云,如下图所示:这里所说的半自动化是需要用户在点云上点一下,以生成一个种子点,作

2018-01-20 15:19:06 3090 2

原创 ros跑通orbslam2遇到的问题

主要参照两个博客:ROS Kinetic安装ORBSLAM2安装在安装中遇到些问题1、安装kinetic失败sudo apt-get install ros-kinetic-desktop-full执行此命令,很快就结束了,我还以为我的网速快呢,原来是公司把端口给限制了,opt下面根本什么都没有,搬回家里运行了2个小时终于装完了。2、编译ORB_Slame2会遇到error: ‘uslee

2018-01-15 10:51:38 2067

转载 PCA的数学原理

2018-01-13 11:13:33 244

原创 如何渲染大规模点云

好几年前做的东西,今天在这里总结一下,以免多年之后忘了。说来也简单,采用的就是八叉树管理,跟我以前做的数字城市大同小异,只不过那个用四叉树就行了。父节点管理八个子节点,父节点点云范围是八个孩子的总和。为了实现八叉树管理,需要自定义一种文件格式,这是为了满足渲染效率考虑的,当然可以做成实时抽稀的,这样也可以不用更改文件格式,如las,pcd等,这里为了极致的效率考虑,设计了一种NPC格式(想

2018-01-12 15:26:08 8456 20

原创 看来我真的是个优秀的程序员

早年间创业心发作写的进销存轮胎行业软件,给一个客户免费试用了半年,后来赶上换工作和玻璃心的破碎,就没管了,想不到今年又找我来了,装电脑不小心把数据库删没了。困扰我的有两个问题,从2014年开始到2018都没找过我,软件运行一直很稳定?数据删没了我咋恢复?打开他的软件,发现我还设计了日志这么好的东东,真心忘了。最令我惊讶的是,从2015年错误日志就没报过,而且我竟然用操作日志把数据给恢复了。

2018-01-12 14:14:58 383 2

原创 大数据提取路网

路网提取 一、 算法概述 本文算法是基于edelkamp和lilicao两位大牛的开源工程上优化实现的。开源工程是在: https://www.cs.uic.edu/bin/view/Bits/Software。但是算法仍然有很多问题,edelKamp会产生很多冗余Link,lilicao算法产生冗余Link更碎,在噪声比较大的数据表现不好。对此,我进行了改进。算法的输入输出都是mapinfo

2017-12-09 15:43:28 645

原创 线性拟合小结

问题:有下图所示的散点,想要拟合一条直线尽量拟合散点的走向有很多方法可以办到 ,这里对多种方法进行一下总结:最小二乘法问题可简化成求一条直线: 使 y(i)梯度下降法PCASVD

2017-07-21 11:45:20 1473

原创 SVM对非线性数据的科幻理解

最近在研究SVM的原理,晦涩难懂,不明觉厉。其中提到,对非线性数据,线性不可分怎么办,这时候就转换到高维,这时候就可分了。突然联想到看过的一部电影《星际穿越》同样烧脑,不过真的可以发现竟然和支持向量机还有关联。电影中说,之所以我们人类不能穿墙,是因为我们是三维的,我们只有x,y,z,没有第四维,即时间轴,加入我们是四维或者更高维,那我们就可以自由穿梭了。为什么?举个例子,假如有一种生物是二

2017-07-12 19:22:35 351

原创 利用PCA计算点云的法线

我们知道PCA可以用来降维,并使降维后的数据尽可能保持原来的特征。比如二维散乱的点:经过PCA降维后,编程了一维直线,而该直线保证点尽可能分散,变成如下图(跟最小二乘是一样的):具体原理可参考http://blog.codinglabs.org/articles/pca-tutorial.html前面说的是二维降到一维时的情况,假如我们有一堆散乱的三维点云,则可以这样计算法

2017-07-07 09:44:20 8638

原创 浅谈SVD的理解

拜读吴军老师的《数学之美》,其中第15章提到通过SVD分解可以从一堆文章中的文字集合中抽取出主题,从而将文章归类,比如从一大堆文章中抽取出体育、文学、娱乐等板块,心想真不可思议,而且SVD分解公式,A = UVW。我们知道V是一个对角矩阵,对角线上元素按主题的重要程度排序(出现次数越多越重要),简直逆天了,左思右想搞不明白另外,经常看到一个例子,是拿SVD做图像降噪,如下图有一副图像:

2017-07-06 15:18:50 4567 1

原创 sfm流程概述

经过一段时间的刻苦钻研,终于摸到SFM的门了,在此把流程稍微捋一下,后续学到新的慢慢丰富吧1)第一步是特征提取,一般采用SIFT算子,因其具有尺度和旋转不变性2)第二步是匹配和建立track,图像对两两匹配,一般采用欧式距离.有两种方法: 粗暴匹配,对所有特征点都穷举计算距离邻近搜索,建立KD树,缩小搜索范围,能提高效率,但也有可能不是最优,所以邻域取值是关键,越大越准确,越大

2017-03-16 16:56:14 25396 13

原创 证明AX=0的最小二乘解是ATA最小特征值对应的特征向量

坑爹的,csdn没法编辑公式,我只能在word上写好截图了。因此,如果能构造AX=0,则最小二乘解就直接求ATA的最小特征解就可以了,这里举一个平面拟合的例子:假如有一束点云,如何从点云里把平面求出来。啥也不说了,上代码吧:Bool ComplanationFit(Navinfo::Engine::Geometries::Coordinate *pPoints, Int

2017-02-10 17:16:49 8744 3

原创 C++如何简单的实现内存池

假如遇到频繁申请释放、频繁释放内存的情况,即使一次申请的内存很少,释放的也很及时,但是我们知道操作系统分配内存并不是连续的,如果频繁申请会在内存中产生许多碎片,因此在程序运行比较长的时间后,占用的内存就会非常大,甚至导致内存不足崩溃。解决办法就是

2016-11-28 14:23:23 668

原创 如何绘制三次B样条曲线

B样条的定义就不赘述了,同学们可以参考大神的博客:http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/,中文翻译也有:http://blog.csdn.net/tuqu/article/details/4749586我要说的是在理解定义之后,我们如何实现它,这里我只讨论准均匀B样条,即三次B样条曲线经过首尾节点(用的最为广泛), 非均匀及Nurb

2016-10-21 11:24:57 14390 7

原创 C++怎样把第三方库隐藏在实现下面

相信在做项目过程中,大家肯定会用一大堆开源库,笔者就曾经用到了BOOST、PCL、GDAL、OPENCV、GEOS等等。有时候甚至会更换某个开源库(效率问题或其他原因),甚至是编译太慢(为了智能指针就弄个BOOST进来未免大材小用了),如果能把第三方库隐藏在你自己的类下面那是再好不过了(它对你整个工程的影响只是这个类而已)。可以使用pimpl技术,其实就是个适配器,举个栗子:geometr

2016-03-17 16:39:36 1513

原创 牛顿下山法

牛顿下山法计算高次方程真是利器啊,举个栗子#include #include #include double f(double x){return pow(x, 3) + pow(x, 2) + 2;}double f1(double x){return 3 * pow(x , 2) + 2 * x;}int main()

2016-03-17 16:26:38 1300 1

原创 C++使用模板特化实现工厂模式

许多C++程序员使用简单工厂创建自己的对象,这时就会有很多这样的分支,比如:class Staff{virtual double salary() = 0;//薪酬}class Engineer : public Staff;//举个栗子,不写实现了class Leader : public Staff;class Saler : public Staff;

2016-03-17 16:17:15 1933

原创 C++使用模板并隐藏实现

我们在用C++模板的时候,通常要把实现写在头文件里,如果项目中模版很多的时候,会造成编译速度很慢,如果你用过boost的话,你就深有体会了。为了使用模板并隐藏实现从而加快编译速度,或者是其他的一些不可告人的目的(我怎么能拿这么黑暗的思想揣摩程序员)。这里介绍一个好方法,是借鉴了PCL(point cloud library)中的实现。template_export_class工程

2016-03-17 16:02:43 3373

原创 Eigen最小二乘法拟合三次曲线

用osg做了可视化验证,交互点都存在v3d中了,用了三次曲线作为曲线方程,即y= ax3 + bx2 + cx + d,以一组观测值x,y序列去求未知数a,b,c,d,当然观测个数必须大于4#include #include #include #include #include "OrthoManipulator.h"#include using namespa

2016-03-17 15:49:39 5739

原创 windows下如何做软件崩溃前提示界面

windows API有一个函数SetUnhandledExceptionFilter可以在程序崩溃之前捕获崩溃事件,它接受一个函数指针参数,我们可以利用它进行诸如崩溃前数据保存、记录日志,或者是重启等。在系统初始化后,注册崩溃捕获函数SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)ApplicationCrashHand

2015-10-22 09:29:07 879

原创 QT如何支持中文

只要在main函数里增加如下三行代码即可:QTextCodec::setCodecForLocale(QTextCodec::codecForLocale());QTextCodec::setCodecForTr(QTextCodec::codecForLocale());QTextCodec::setCodecForCStrings(QTextCodec::codecForLocal

2015-10-22 09:22:38 954

转载 osgearth_package的一些用法

New options include:--bounds xmin ymin xmax ymax:Specify the bounds to export (in map coordinates)--overwriteTells the packager to overwrite tiles that already exist in the TMS repo--o

2013-01-09 14:22:14 4191

转载 命令模式

命令模式(Command Pattern),将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。Command命令模式是一种对象行为型模式,它主要解决的问题是:在软件构建过程中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”的问题。类图: 角色如下:

2012-12-21 09:13:48 729

转载 VS2010添加TSTCON( ACTIVEX CONTROL TEST CONTAINER )工具

vs2010中的TSTCON( ActiveX Control Test Container )工具非自动安装,而是作为一个例程提供。所以应找到该例程,并编译:如vs2010安装在默认路径则1, 进入:C:\Program Files\Microsoft Visual Studio 10.0\Samples\1033,可找到VC2010Samples.zip文件,

2012-11-30 11:37:35 1166

readme.htm

ubntunu编译opencv3,提示找不到ippicv_linux_20151201.tgz时使用

2020-05-26

map_inference

从行车轨迹中提取路网的方法,实现语言是python,输入输出是tab文件

2017-12-09

三次B样条拟合

可以拟合经过过形值点的三次B样条曲线

2016-12-12

绘制三次B样条

生成经过首尾节点的三次均匀B样条曲线,代码简单,适合初学者

2016-11-29

libxml2库文件

一个针对win32的libxml,不用编译,直接就是lib库。如果你要在windows下用,这个绝对超值。你从官方网站上下载的都是还要编译的,并且得在GNU或者unix下编译的。

2012-07-05

photoshop3.0,4.0,5.0,6.0文档说明

包括了最新的ps6.0的文件格式说明,有需要读psd的,了解ps的文件结构是什么的

2012-06-15

boost regex1_49_0的.hpp文件

boost regex编译过的.hpp文件

2012-06-12

图像处理代码

这个是图像处理不可多得的源码,是我们做项目时用到的所有技术。涉及到哈夫曼码编码、香农-弗诺编码、伪彩色、滤波、模板匹配 、图像平滑、图像复原、图像显示、特征提取、图像变、运动检测、小波变换、图像分割等图像处理技术。

2012-01-13

地面焰条点火系统

这是一个GPS通信的上位机源码,整个系统有两部分组成,一部分是硬件部分,做的是GPS通信,另一部分就是上位机,用到了socket通信、ButtonST控件、ADO数据库操作等关键技术

2012-01-12

医学图像DCM

对于广大医学图像工作者来说,DCM格式的资源不好找吧,我把医院里用来做实验的数据共享出来了,希望给大家提供帮助

2012-01-06

医学图像DCM浏览器

自己做的DCM医学图像浏览器,可以操作DCM图像,去噪、平滑等,中间用了一个自定义控件,继承自listbox,可能运行起来会有错误,直接点忽略就可以显示了

2012-01-06

进销存源码,三层架构,适合初学者

C#.net开发的轮胎进销存软件源码,用三层架构、自定义控件等技术,适合初学者

2012-01-04

空空如也

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

TA关注的人

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