自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 相机选型需要考虑的因素

参考文献https://blog.csdn.net/meifeisewu8/article/details/83826992https://blog.csdn.net/qq_42832272/article/details/98963218#commentBox

2020-08-08 08:51:46 24

原创 mnn移植tf代码

参考https://www.yuque.com/mnn/cn/usageMNN当前支持Tensorflow(Lite)、Caffe和ONNX的模型转换问题:不是用Tensorflow(Lite),只用Tensorflow的模型能行不思路1.将tf模型转为mnn的模型2.交叉编译mnn3.调用代码用mnn

2020-08-05 19:57:52 51

原创 安装tensorflow的c++接口(手动编译tensorflow)

参考https://blog.csdn.net/seniusen/article/details/82972335https://www.cnblogs.com/seniusen/p/9756481.html安装tensorflow的c++接口需要从源码重新编译tensorflow,最重要的参考来自于官方文档。https://blog.csdn.net/q199502092010/article/details/90289998源码安装tf的时候,会用到Bazel,版本不对应,后面会引起好多麻烦。

2020-07-22 08:42:56 96

原创 用c++加载tensorflow 模型

参考https://blog.csdn.net/seniusen/article/details/82972335https://www.cnblogs.com/seniusen/p/9756481.html安装tensorflow的c++接口需要从源码重新编译tensorflow,最重要的参考来自于官方文档。https://blog.csdn.net/q199502092010/article/details/90289998...

2020-07-21 15:57:02 113

原创 深度学习hf-net环境配置

深度学习hf-net环境配置如下1.Python 3.6,推荐用虚拟环境2.TensorFlow 1.123.PyTorch 0.4.1 用于跑SuperPoint1.安装pipsudo apt-get install aptitudesudo apt install python-pippip install --upgrade pip首先更改pip源永久修改:linux:修改 ~/.pip/pip.conf (没有就创建一个), 内容如下:[global]index-url =

2020-07-17 13:50:22 169

原创 mqtt发送cjson数据并解析

本文实现mqtt发送端发送cjson数据,接受端接收数据并使用cjson解析。主要功能是发送端发送位姿,接收端接收位姿话题并解析使用1.发送端程序CMakeLists.txtcmake_minimum_required(VERSION 2.8)project(mqttdemopub)add_executable(${PROJECT_NAME} main.cpp cJSON.c cJSON.h)target_link_libraries(${PROJECT_NAME} mosquitto)

2020-07-07 11:44:23 289

原创 cjson转char*(解析位姿)

本文实现c类型->cjson姿态 cjson->c类型,功能为解析位姿//#include <stdio.h>//#include <stdlib.h>//#include "cJSON.h"//int main (int argc, const char * argv[]) {// //create a data// cJSON *root,*pose;// root=cJSON_CreateObject();// //pose

2020-07-07 10:20:49 117

原创 kalibr编译

1.先下载代码mkdir -p ~/kalibr_workspace/src cd ~/kalibr_workspace git clone https://github.com/ros/catkin.git2.要安装catkin工具 sudo apt-get install python-catkin-tools3.安装python-numpysudo apt-get install --reinstall python-numpy4.开始编译catkin build -DCMAK

2020-05-23 14:14:40 267

原创 刚体运动位姿变换推导

下面公式中上标表示为基于某系,下标表示当前系。设k为第k时刻,R为旋转3*3,P为平移3*1,T表示旋转和平移。设k时刻刚体在世界坐标系下的位姿(包括旋转和平移)表示为TkwT^w_{k}Tkw​,刚体运动后k+1时刻位姿态表示为$T^w_{k+1} $如图位姿变换推导Tk+1w=Tkw∗Tk+1kT^w_{k+1} = T^w_{k}*T^{k}_{k+1} \\Tk+1w​=Tkw...

2020-04-26 16:42:21 156

原创 convert bitset descriptor -> cv::Mat

bitset转opencv cv::Mat 注意(1)Mat 的列为32列,类型为uchar(2)BRIEF::bitset 的长度为256(3)每8个构成一个ucharvector<BRIEF::bitset> temp_brief_descriptors;extractor(image, keypoints, temp_brief_descriptors);brief...

2020-03-05 13:58:54 252 1

原创 CNN对slam的一些改进

参考https://blog.csdn.net/wishchin/article/details/100634779cnn对slam的改进1.视觉检测和描述中的CNN方法主要是提升显著点/关键点的检测性能、以及提升关键点的局部描述子性能。为了更好的进行图像匹配。(1)提升显著点/关键点的检测性能主要论文SuperPoint(2)提升关键点的局部描述子性能论文LIFT特征是一种使用C...

2020-03-02 17:10:24 423

原创 视觉重定位相关论文阅读(一)

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...

2020-02-08 09:30:09 403

原创 摄像头视场角计算

视场角计算方法方法1:拍物体参考https://wenku.baidu.com/view/411a838aaa00b52acec7ca27.html被测物体长为A宽为B,图像刚好覆盖被测量物体。水平视场角度θh=2atan(B/2l)\theta_h=2atan(B/2l)θh​=2atan(B/2l)垂直视场角度θv=2atan(A/2l)\theta_v=2atan(A/2l)...

2019-12-20 14:58:51 1382

原创 视觉标记定位aruco使用

本文的目的是实现生成一张marker broad图片,告诉标记检测程序tag在真实世界中的实际大小。检测成功后得到marker的id,四个角点坐标,marker到相机的平移和旋转。1.下载安装参考安装参考https://blog.csdn.net/weixin_43053387/article/details/84952557aruco下载地址2.生成单个marker图片目的是生成一张...

2019-10-26 11:05:51 1290 1

原创 gazebo的bumper使用

本文解决gazebo的bumper碰撞的时候传感器数据为空的问题。注意:只有把contact中的collision名字取对了才能有碰撞数据!使用步骤:(1)在.urdf.xacro文件中加入link和joint,并且加上碰撞,如给collision命名base_collision<link name="bumper_link"> <inertial> ...

2019-10-09 09:53:37 631 1

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

#include<time.h>#include<iostream>#include <opencv2/opencv.hpp>using namespace cv;using namespace std;void generate3DPointCloud(std::vector<cv::Point3f>& points){ ...

2019-09-05 14:02:01 550

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

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

2019-08-27 10:36:53 646

原创 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 1048

原创 在gazebo中增加模型物体

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

2019-08-07 06:58:24 3502

原创 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 4609 5

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

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

2019-06-06 12:26:08 491

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

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

2019-06-05 09:46:46 1985

原创 Eigen的LLT分解

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

2019-05-15 15:34:53 2938

原创 python画图

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

2019-05-06 16:12:15 2356

原创 opencv转eigen数据结构笔记

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

2019-04-24 16:41:37 567

原创 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 1633 2

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

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 2413 1

原创 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 582

原创 ceres实现针孔相机bundle adjustment

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

2019-03-13 17:43:26 841 1

原创 opencv鱼眼相机模型详解

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

2019-03-08 15:45:46 2649

原创 OpenCV FindContours使用

FindContours实现了论文Topological structural analysis of digitized binary images by border following使用例子#include "opencv2/imgcodecs.hpp"#include "opencv2/highgui.hpp"#include "opencv2/imgproc.hpp"#

2019-03-07 17:31:09 6671

原创 相机投影和反投影

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

2019-03-07 15:01:53 1513 1

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

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

2019-03-07 11:15:48 1590

原创 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 2581

原创 (八)turtlebot3路径规划解析

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

2019-03-02 14:22:54 1589 1

原创 视觉概率栅格地图相关论文

An Approach for 2D Visual Occupancy Grid Map Using Monocular Vision

2019-02-12 17:42:08 436

原创 hector slam论文笔记

1.系统总揽系统有两大部分组成A navigation filter fuses information from the inertial measurement unit and other available sensors to form a consistent 3D solution,while a 2D SLAM system is used to provide positio...

2019-02-01 11:56:25 1937

原创 相机右手坐标系

在slam中,总是会牵涉到坐标系变换,那么就需要将坐标系定义弄清楚。需要弄清楚相机坐标系定义。相机坐标系定义为右手坐标系。opencv的图像坐标系统(Image Coordinate System)如图。坐标是三维坐标(x,y,z)原点(0,0,0)在深度相机的中心。如果没有明确指定,则以米为单位。在OpenGL中也是右手坐标系,如下参考https://software.intel.c...

2019-01-28 10:32:10 1154

原创 matlab画直线

三种方法:(1)两点法plot ([0,5],[3,3])(2)点斜式refline(k,b)ezplot(‘y-k*x-b’)

2019-01-19 17:45:58 8020

原创 超声slam相关资料

1.基于低成本移动机器人设计的超声SLAM介绍了超声波模型:常见的超声波模型包括平均分布弧线模型和中线模型及高斯分布模型

2019-01-19 15:51:46 658

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