9 沧海飞帆

尚未进行身份认证

热爱多传感器融合slam、机器人、人工智能相关技术。立志于让机器人更智能,为人类移民火星做铺垫。

等级
TA的排名 7k+

对极几何获取两幅图像旋转的方法(单应矩阵,本质矩阵)

#include<time.h>#include<iostream>#include<opencv2/opencv.hpp>usingnamespacecv;usingnamespacestd;voidgenerate3DPointCloud(std::vector<cv::Point3f>&points){...

2019-09-05 14:02:01

获得世界坐标系中3d点在图像上的投影坐标并显示

1.世界坐标系转换为摄像头坐标系无旋转和平移(初始的时候摄像头坐标系和世界坐标系重合)如果初始的时候摄像头坐标系和世界坐标系重合,要获得世界坐标中3d点在任意位姿拍到的图像上的投影坐标并显示,只有考虑位姿变换。如下程序所示:#include<ros/ros.h>#include<visualization_msgs/Marker.h>#include<t...

2019-08-27 10:36:53

opencv SolvePnPRansac使用

参考https://blog.csdn.net/xuelangwin/article/details/80847337下面代码验证将坐标点转到归一化平面使用SolvePnPRansac解出来的位置是否正确。#include<time.h>#include<unistd.h>#include<iostream>#include<eigen3/...

2019-08-21 16:22:01

在gazebo中增加模型物体

在gazebo中经常需要添加物体模型,可是如何增加一个物体到gazebo仿真环境呢?主要思路:1.新建gazebo模型文件,模型文件夹包括(materialsmeshesmodel.configmodel.sdf)2.将模型文件夹放到~/.gazebo/models用户文件夹下。3.再打开Gazebo即可在insert里添加模型了。https://blog.csdn.net/...

2019-08-07 06:58:24

imu积分定位

imu积分定位的输入为imu传感器得到的线性加速度和角速度,输出为积分得到的位姿(位置和角度)。具体公式为:1.求旋转设前一帧位姿的旋转用旋转矩阵表示为R1R_{1}R1​,当前帧位姿的旋转用旋转矩阵表示为R2R_{2}R2​,假设对机器人进行了一次旋转,可以表示为如下:R2=R1∗R12R_{2}=R_{1}*R_{12}R2​=R1​∗R12​用四元数计算如下q2=q1∗q12q...

2019-06-10 10:15:07

vins中紧耦合优化模型(状态量状态方程观测方程)

问题:vins中误差方程包括哪些?vins中整体误差方程包含视觉重投影误差、IMU测量误差和先验误差。优化的factor有imu_factor.h,marginalization_factor.h,projection_factor.h问题:vin中优化的状态量是什么?1.imu测量误差在imu_factor.h中classIMUFactor:publicceres::Siz...

2019-06-06 12:26:08

最小二乘法和卡尔曼滤波的关系

来看一个生活中的例子。比如说,有五把尺子测量同一个线段的长度,测量值为9.8,9.9,10,10.1,10.2之所以出现不同的值可能因为:不同厂家的尺子的生产精度不同,尺子材质不同,热胀冷缩不一样。总之就是有误差,这种情况下,一般取平均值来作为线段的长度。可是到底线段的真值是多少呢?用什么方法估计能得到最优估计呢?对于这个问题,可以用最小二乘的思路来解决。换一种思路来思考刚才的问题。...

2019-06-05 09:46:46

Eigen的LLT分解

Cholesky分解是把一个对称正定的矩阵表示成一个下三角矩阵L和其转置的乘积的分解。Eigen的LLT分解实现了Cholesky分解。代码如下:#include<Eigen/Cholesky>intmain(intargc,char**argv){Eigen::Matrix2ddown;down<<1,0,2,1;...

2019-05-15 15:34:53

python画图

参考文献https://www.jianshu.com/p/78ba36dddad8首先了解下图上的标示代表什么1.最简单的作图importmatplotlib.pyplotaspltimportnumpyasnpx=np.linspace(-2,6,50)y1=x+3#曲线y1y2=3-x#曲线y2plt....

2019-05-06 16:12:15

opencv转eigen数据结构笔记

表示位姿的数据结构相互转换。1.T->Topencv->eigenEigen::Matrix4dopencv_T_to_matrix4d(constcv::Mat&cvT){Eigen::Matrix4de_T;e_T<<cvT.at<double>(0,0),cvT.at<double>(0,1)...

2019-04-24 16:41:37

opencv卡尔曼滤波详解

1.问题描述假设下面曲线y=kx+b+wy=kx+b+wy=kx+b+w其中a,b为曲线的参数,w为高斯噪声。假设我们有N个关于x,y的观测数据点,想根据这些数据点求出直线的参数。2.卡尔曼滤波拟合点斜式直线2.1状态变量状态变量是需要求解的参数。对于拟合一条直线y=kx+by=kx+by=kx+b,状态变量为待求的参数k,b​k,b​k,b​。2.2状态方程状态方程可以表示为...

2019-04-18 09:42:24

非线性最小二乘和卡尔曼滤波拟合直线对比

1.问题描述假设下面曲线y=kx+wy=kx+wy=kx+w其中k为曲线的参数,w为高斯噪声。假设我们有N个关于x,y的观测数据点,想根据这些数据点求出直线的参数。注意:对于以上问题是拟合一条过原点的直线。只拟合直线的斜率这一个参数,状态变量的维数为1。2.非线性最小二乘拟合直线那么可以求解下面的最小二乘问题。min⁡k,b12∑i=1N∥yi−(kxi))∥2\min_{k,...

2019-04-15 11:07:26

ceres实现鱼眼相机模型bundle adjustment

本文主要工作:(1)投影模型改为鱼眼相机畸变模型(2)具有数学公式计算的template类的coding#include<iostream>#include<eigen3/Eigen/Core>#include<eigen3/Eigen/Geometry>#include<opencv2/opencv.hpp>#include&lt...

2019-03-14 09:27:42

ceres实现针孔相机bundle adjustment

参考ceres的tutorialhttp://ceres-solver.org/nnls_tutorial.html#bundle-adjustment实现针孔相机bundleadjustment主要工作如下:(1)生成理想观测数据(2)将生成理想的数据作为BD的输入源(3)将投影模型改为无畸变的针孔模型#include<ros/ros.h>#include&lt...

2019-03-13 17:43:26

opencv鱼眼相机模型详解

https://docs.opencv.org/3.4/db/d58/group__calib3d__fisheye.html

2019-03-08 15:45:46

OpenCV FindContours使用

FindContours实现了论文Topologicalstructuralanalysisofdigitizedbinaryimagesbyborderfollowing使用例子#include"opencv2/imgcodecs.hpp"#include"opencv2/highgui.hpp"#include"opencv2/imgproc.hpp"#

2019-03-07 17:31:09

相机投影和反投影

问题:如图,已知相机的外参,并已知正方体的底部正方形ABCD在图像上的坐标,如何反投影求得正方形ABCD在世界坐标系上的坐标点?(粗的代表摄像头坐标系,细的代表世界坐标系)如图红色为x轴,绿色为y轴,蓝色为z。主要解决思路是:反投影将图像坐标化为归一化平面。由于摄像头在世界坐标系上的高度已知,将归一化平面的坐标乘以尺度并转换就能反投影得到ABCD在世界坐标系上的点。代码如下#inclu...

2019-03-07 15:01:53

外参数获取推导(求坐标系转换矩阵方法)

问题:假如已知两个坐标系如图,如何得到外参数(坐标系变换矩阵:包括旋转和平移)?如图红色为x轴,绿色为y轴,蓝色为z轴粗的代表摄像头坐标系,细的代表世界坐标系。1.观察变换推导法步骤:(1)求旋转矩阵R12(2)求平移t121)求旋转矩阵R12:很显然,世界坐标系轴绕z轴逆时针旋转90度就能对应上上图的角度。2)求平移t12求由摄像头坐标系到世界坐标系的平移的关键是知道两个坐标系...

2019-03-07 11:15:48

ROS中显示坐标系

1.在ros中显示坐标系问题1:假设世界坐标系原点表示为(x,y,z,roll,pitch,yaw)=(0,0,0,0, 0, 0,),某摄像头在世界坐标系下的位姿为(x,y,z,roll,pitch,yaw)=(0,0,1,0,0,90),如何在ROS中显示?使用tf来发布显示,程序如下#include<ros/ros.h>#include<visualizati...

2019-03-06 14:23:51

(八)turtlebot3路径规划解析

路径规划包括全局路径规划和局部路径规划1.全局路径规划turtlebot3全局路径规划采用astar或者Dijkstra算法。首先计算潜在的路径boolfound_legal=planner_->calculatePotentials(costmap_->getCharMap(),start_x,start_y,goal_x,goal_y,...

2019-03-02 14:22:54

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。