c++
windistance
此博客用于对自己遇到的问题进行备忘,同时也希望能帮助到其他人。
展开
-
ROS坐标系map,odom,base_link,base_laser
mapmap坐标系是一个世界固定坐标系,其Z轴指向上方。相对于map坐标系的移动平台的姿态,不应该随时间显著移动。map坐标系作为长期的全局参考是很有用的,但是跳变使得对于本地传感和执行器来说,其实是一个不好的参考坐标。使用Gmapping建图时,建图起始点被设为map的原点(如下图)base_link机器人本体坐标系,与机器人中心重合,也有的成为base_footprint。图中中心所有...原创 2019-11-19 14:09:45 · 1775 阅读 · 0 评论 -
3D空间变换
文章目录1、等距变换(欧式变换)2、相似变换3、仿射变换(正交投影)4、射影变换(透视变换)参考1、等距变换(欧式变换)它相当于是平移变换(t)和旋转变换(R)的复合,等距变换前后长度,面积,线线之间的角度都不变。自由度 6 (旋转变换R3个参数可以表示,自由度+3,平移变换t也需要三个参数表示,自由度+3)T=[Rt0T1]T= \begin{bmatrix} R &a...原创 2019-07-25 10:12:11 · 1070 阅读 · 1 评论 -
ORBSLAM2之单目初始化(2)
文章目录第二阶段:根据匹配计算两帧之间的位姿特征点归一化-Normalize()解除归一化计算Homography,获取模型评分**1.将特征点归一化****2.求解单应性矩阵(归一化四点法)****3.Homography模型评分**计算Fundamental,获取模型评分**1.将特征点归一化****2.求解基础矩阵(归一化八点法)****3.Fundamental模型评分**计算Essent...原创 2019-07-25 10:19:08 · 4200 阅读 · 0 评论 -
opencv3之SVD
cv::SVD::computestatic void cv::SVD::compute(InputArraysrc,OutputArrayw,OutputArrayu,OutputArrayvt,intflags = 0)参数://A=u*w*vtsrc decomposed matrixw calcul...原创 2019-07-22 15:46:46 · 8972 阅读 · 0 评论 -
ORBSLAM2之单目初始化(3)
文章目录第三阶段:三角化测量得到初始的特征点深度第四阶段: 将三角化得到的3D点包装成MapPoints,然后做 BA1.创建并插入关键帧2.创建地图点,并且关联到关键帧3.关键帧与关键帧关联4. 执行BA优化5.尺度归一化参考第三阶段:三角化测量得到初始的特征点深度如果恢复相机初始位姿成功,那么我们能得到前两帧图像的位姿,以及三角测量后的3维地图点,这些都是在Initialize()函数...原创 2019-07-26 15:21:37 · 1006 阅读 · 1 评论 -
C++ List的使用
文章目录**构造List对象****基本操作-属性获取/调整**1 list.empty-判断list是否为空2 list.size-元素的个数3 list.resize-调整大小4 比较操作符**基本操作-增加元素**1 list.push_back()-尾部插入元素2 list.insert()-插入元素3 list.push_front()-头部插入元素**基本操作-删除元素**1 list...原创 2019-07-22 20:14:17 · 4309 阅读 · 0 评论 -
C++ Deque的使用
文章目录1、前言2、初始化3、基本操作deq.size()-容器大小deq.max_size()-容器最大容量deq.resize()-更改容器大小deq.empty()-容器判空deq.shrink_to_fit()-减少容器大小到满足元素所占存储空间的大小push_back-尾部增加元素push_front-前端增加元素pop_back-删除尾部元素pop_front-删除前端元素emplac...原创 2019-09-02 16:15:35 · 6528 阅读 · 0 评论 -
矩阵分解与Ax=b
文章目录1. 矩阵分解1.1相关概念1.2 矩阵分解概述1.3 QR分解1.4 LU,LDU分解法1.5 乔里斯基(Cholesky)分解1.6 SVD2.使用Eigen解Ax=b线性方程组参考1. 矩阵分解1.1相关概念正交矩阵:若一个方阵其行与列皆为正交的单位向量,则该矩阵为正交矩阵,且该矩阵的转置和其逆相等。两个向量正交的意思是两个向量的内积为 0正定矩阵:如果对于所有的非零实系...原创 2019-07-29 16:17:33 · 1460 阅读 · 0 评论 -
ORBSLAM2之单目初始化(4)
文章目录1、单目相机的投影模型,畸变模型2、Essential、Fundamental 、Homography单目相机只旋转不平移能不能求F,只旋转不平移能不能求H为什么本质矩阵的秩为2为什么基础矩阵的秩为2Essential、Fundamental 、Homography的自由度和计算需要的点对数3、单目视觉slam中的尺度漂移4、RANSAC算法ORBSLAM2基本矩阵的 **RANSAC**...原创 2019-07-29 14:44:13 · 698 阅读 · 1 评论 -
ORBSLAM2之单目初始化(1)
文章目录ORB_SLAM2单目初始化步骤第一阶段:通过匹配选取起始两帧参考ORB_SLAM2单目初始化步骤ORB_SLAM2单目模式的初始化过程可以分为以下阶段:1 通过匹配选取两个可以作为起始两帧的初始帧2 根据匹配计算两帧之间的位姿,获得初始位姿3 三角化测量得到初始的特征点深度,包装成MapPoint,构建初始地图。4 BA优化初始化结果第一阶段:通过匹配选取起始两帧这一阶段...原创 2019-07-24 14:37:27 · 1172 阅读 · 0 评论 -
ros消息发布和订阅(python和C++)
ROS传递图像消息(C++)// Use the image_transport classes instead.#include <ros/ros.h>#include <image_transport/image_transport.h>void imageCallback(const sensor_msgs::ImageConstPtr& msg)...原创 2019-01-14 11:35:57 · 3315 阅读 · 5 评论 -
ros参数动态配置
初始参数设置有两种方法设置初始参数:一个通过launch文件来设置https://blog.csdn.net/weixin_42587961/article/details/86649031一个通过命令行来设置例如:roslaunch aruco_ros single.launch markerId:=26 markerSize:=0.08 eye:="right"参数...原创 2019-01-28 15:12:11 · 2516 阅读 · 1 评论 -
C++ fstream详解
C语言里面对文件的操作是通过文件指针,以及一些相关的函数,那么C++中是如何对文件进行操作的呢?没错,就是通过 fstream 这个文件流来实现的。当我们使用#include 时,我们就可以使用其中的 ifstream,ofstream以及fstream 这三个类了(ofstream是从内存到硬盘,ifstream是从硬盘到内存),也就可以用这三个类来定义相应的对象了,这三个类分别代表一个输入文件...原创 2019-01-28 15:13:38 · 204186 阅读 · 4 评论 -
YAML配置文件读取
1.YAML 格式YAML格式的文件拓展名包括:.yml 和 .yaml,两个都表示YAML文件;XML格式的文件拓展名为: .xml基本语法规则大小写敏感使用缩进表示层级关系缩进时不允许使用Tab键,只允许使用空格。缩进的空格数目不重要,只要相同层级的元素左侧对齐即可数据结构:string: 'foo'integer: 1234float: 1234.5boole...原创 2019-01-28 17:00:53 · 6328 阅读 · 5 评论 -
ROS中使用自定义头文件和源文件的方法
自定义hello.h和hello.cpp文件,test_hello.cpp引用hello,对CmakeLists.txt进行配置:1. 存放头文件首先将头文件hello.hpp文件存放到功能包文件夹(test)下的include文件夹下的功能包名文件夹内:存放头文件(catkin_ws/src/test/include/test/hello.hpp)2.存放源文件将源文件hello.cpp...原创 2019-02-27 10:08:39 · 3556 阅读 · 5 评论 -
【opencv】Mat与Eigen
文章目录opencv与eigen的交互cv::cv2eigencv::eigen2cv平移和旋转向量转为欧式变换矩阵(4X4)opencv与eigen的交互opencv矩阵结构为:cv::Mat,或者cv::Mat_等,当需要与eigen的矩阵结构相互转换时主要使用函数:cv::eigen2cv和cv::cv2eigen,需要头文件:#include<opencv2/core/eige...原创 2019-07-02 15:30:23 · 2803 阅读 · 2 评论 -
C++ Stack的使用
文章目录前言:创建Stack对象:Stack成员函数:size( ) :返回栈中元素个数top( ) :返回栈顶的元素pop( ) :从栈中取出并删除元素push(e) :向栈中添加元素eempty( ) :栈为空时返回true栈的应用:前言:栈(stack)是限定仅在表尾进行插入和删除操作的线性表。 栈中允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom)。 不含任何数据元...原创 2019-07-11 22:40:44 · 429 阅读 · 1 评论 -
OpenCV矩阵操作
文章目录1.矩阵创建2.矩阵初始化3.矩阵转置(t())4.矩阵求逆(inv)5.矩阵元素访问ptr<>()at<>()6. 行列式(determinant)7.矩阵复制(clone/copyTo)8.矩阵行列的提取(rowRange/colRange)9.对角矩阵(diag)10.矩阵重塑(reshape)11.范数(cv::norm)12.对Mat进行排序13.矩阵其他...原创 2019-07-24 14:23:48 · 3140 阅读 · 1 评论 -
Mat与IplImage的转换
Opencv3.x中Mat与IplImage的转换Mat转IPLImageIplImage img = IplImage(mat);IplImage转MatMat mat=cvarrToMat(img);opencv2.x中Mat与IplImage的转换Mat转IPLImageIplImage img = IplImage(mat);IplImage转MatIplImage * ...原创 2019-01-12 18:11:15 · 11768 阅读 · 0 评论