自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(173)
  • 资源 (5)
  • 收藏
  • 关注

原创 chatgpt 接口使用(一)

参考链接:https://platform.openai.com/examples。2、根据出错的引用文件,找到。

2023-07-30 17:30:26 5145

原创 vins调试的注意事项

vins调试注意事项

2023-07-30 12:30:35 193

原创 对图像畸变的理解

图像畸变从光学原理出发的理解

2023-07-26 00:36:46 563

原创 常量指针与指针常量

常量指针 与 指针常量

2023-07-25 10:54:07 185

原创 根据图像和imu生成ros1的bag包的脚本

将图像和imu数据转换为ros的bag包

2023-07-23 11:30:52 190

原创 target_include_directories与target_link_directories

target_include_directories 以及 target_link_libraries 的使用细节

2023-07-20 11:18:52 401

原创 基于图的数据关联论文《CLIPPER: A Graph-Theoretic Framework for Robust Data Association》学习

数据关联;最大子图

2023-06-28 00:08:37 368

原创 点到折线的最近距离计算

如果没有找到,且待求点确实是在折线内部,那么就要去判断投影点,与哪个线段的端点距离最小,就这个作为返回,如果要精细,就可以在这个线段与相邻线段,进行密集采样得到一系列点,找出最近的点的距离;在应用中,是为了求取两条基本平行的折线的间隔距离,此时,可以结合线段的平行情况来去计算,而不是盲目的计算点到折线的距离。但是实际上,一条折线总是由有限的点构成的,计算与构成折线的点的最近距离,并不意味着就是点到折线的最近距离。如果折线是由无线细分的点构成的,能找到一个点,与待求点的距离最近,这个最近距离是所需要的。

2023-06-22 13:30:13 273

原创 fastlio中观测函数对误差状态量的偏导与代码中写法不一致

观测函数对误差状态量的偏导公式在代码中的应用

2022-11-06 11:34:20 299 1

原创 利用imu估计roll、pitch的理解

利用静态测量得到的imu重力值,估算imu的roll,pitch角度

2022-10-23 13:23:28 1752 3

原创 关于激光雷达观测及jacobian求导的一些理解一

雷达观测方程的理解

2022-10-15 12:47:34 479

原创 gtsam OrientedPlane3的使用细节

gtsam OrientedPlane3

2022-09-29 21:08:41 288

原创 gtsam每处计算都预留有jacobian输出的原因

gtsam jacobian

2022-09-27 19:48:50 226

原创 gtsam OrientedPlane3及OrientedPlane3Factor的使用

利用gtsam的平面约束因子进行优化

2022-09-27 14:08:09 609 2

原创 《基于局部语义拓扑图的视觉SLAM 闭环检测》阅读

语义回环

2022-04-09 22:00:57 472

原创 关于ExternalProject_Add的注意事项

ExternalProject_Add

2021-12-07 21:51:37 1264

原创 将open3d依赖的qhull代码修改并固定到目录下

open3d pcl qhull 冲突

2021-12-01 21:40:52 797

原创 kimera semantic中关于semantic label的融合方法

kimera semantic的SemanticTsdfServer继承了voxblox的TsdfServer,有自己的单独的semanticlayer,使用了自己的semantic的integrator。流程与voxblox的一致,记录一下:void FastSemanticTsdfIntegrator::integrateSemanticFunction该函数前面做的事情就是如同voxblox一样,更新继承的voxel层,然后更新semanticlayer。 updateTsdfVo

2021-11-24 14:45:28 1910 1

原创 voxblox论文阅读记录

voxblox论文阅读记录总体流程图数据更新描述voxel内的数值集成方式从TSDF构建ESDF关于《Improved updating of euclidean distance maps and voronoi diagrams》从TSDF构建MESH总体流程图数据更新描述s是传感器的中心位置;p是打到的物体的位置;x是某个voxel的中心:sp连线经过的某个voxel第1个公式,sign计算了符号,p-x计算的是绝对值,表示voxel中心到障碍物的距离;剩下的几个公式好理解。对于权

2021-11-22 16:06:02 1361

原创 关于优化公式的小白理解

1、为什么要将e(x)写成e(x+dx)的形式?2、J(x)是什么对什么的导数?理解1、形式上来说,e(x)和e(x+dx)并没有任何区别,以为dx本身就是小量,只要x+dx还在作用域?内,函数的意思就是一样的。更土一点的解析,假设定义域是在[-100,100],那么只要x+dx在这个范围内,函数表示的意思就一样。既然意思一样,为何要写成这个形式?因为我们接下来要做的是进行迭代优化,迭代优化需要指定一个起点,即这里的e(x+dx)的x在某次迭代中,是固定的,那么e(x+dx)就变成了dx的函数.

2021-08-26 10:20:55 427

原创 gtsam使用

1、关于里面的pose的between的说明gtSAMgraph.add(gtsam::BetweenFactorgtsam::Pose3(prev_node_idx, curr_node_idx, poseFrom.between(poseTo), odomNoise));这个poseFrom.between(poseTo)得到的是poseTo相对于poseFrom的姿态变化,即以poseFrom为基准坐标,poseTo在poseFrom基准坐标下的坐标。即如果poseFrom的在world下的姿态

2021-07-30 21:18:36 1230

原创 关于lidar用imu进行运动补偿的细节

利用imu在短时间100ms内的运动,补偿雷达的运动畸变,只进行旋转方向的补偿。1、找配对数据以lidar为基准,找到包含lidar一帧的点的起始、结束时刻的imu数据。2、对这些imu数据,进行积分处理以第一个imu为基准坐标,依次积分所有的imu的数据,每个imu都得到一个对应pose。3、计算结束时刻的lidar的相对于第一个imu的姿态lidar不一定和imu的时间对齐,因此,要进行插值。找到包含这个结束时刻的最近的左边、右边的imu,得到其姿态和时间。然后利用插值的方法,插值出这个

2021-06-26 16:21:26 3582 2

原创 刚性连接的物体知道一个的相对旋转求另一个的相对旋转

雷达 和imu的刚性关系 :Til T_{il} Til​imu从t1时刻到t2时刻的转换关系为:T1imu=T12imu∗T2imu T_1^{imu} = T_{12}^{imu} * T_2^{imu} T1imu​=T12imu​∗T2imu​求雷达的相对转换关系:T12l−−−−−(1) T_{12}^l ----- (1)T12l​−−−−−(1)过程:T1l=T12l∗T2l T_1^l = T_{12}^l * T_2^l T1l​=T12l​∗T2l​同时:T1l

2021-06-26 12:11:19 139

原创 结合论文理解gps与imu融合定位代码的细节

学习该文章:https://zhuanlan.zhihu.com/p/152662055状态定义struct State { double timestamp; Eigen::Vector3d lla; // WGS84 position. Eigen::Vector3d G_p_I; // The original point of the IMU frame in the Global frame. Eigen::Vector3d G_

2021-06-19 21:10:24 3696 1

原创 欧拉角与RPY与旋转矩阵的测试

指定欧拉角,是指按照指定的顺序,按照右乘的方式构建旋转矩阵。验证一:指定旋转矩阵,得到欧拉角,按照轴角的方式重新构建矩阵:///---------------------------// Eigen::Matrix3d rot_cl; rot_cl<<-0.00382504437037171 , 0.190218909453634 ,0.981734248929839,\ -0.999948197804418, 0.00853270673893375,

2021-06-19 11:24:31 2289

原创 imu积分补偿lidar的一些理解

目的是利用lidar形成一帧点云时间段内的imu数据,补偿由于运动造成的lidar的畸变,能够把一帧所有的点云的坐标统一到结束时刻的坐标系下。一、算法过程假设已经得到了这一段时间的imu数据,以第一个imu的坐标为基准坐标,不断的递推计算其他时刻的imu相对于这个基准坐标的变化姿态,直到最后一个imu的数据算出最后一个姿态相对于第一个imu的坐标系的变化。这里涉及到左乘还是右乘的问题:由于imu得到的数值都是基于自身当下的坐标系的值,也就是说,是围绕这动轴在转的,需要用右乘的方式,及下一时刻的坐标姿态

2021-06-17 00:24:46 1867 2

原创 aloam中增加回环模块——流程分析

aloam没有回环模块,参考lego-loam增加回环模块。一、lego loam mapping模块分析1、首先要明确几个重要转换矩阵的含义: float transformLast[6]; float transformSum[6]; float transformIncre[6]; float transformTobeMapped[6]; float transformBefMapped[6]; float transformAftMapped

2021-06-12 18:31:09 765 2

原创 aloam 几个坐标系的关系的梳理

1、坐标系关系类型总共有:lidar到里程计的坐标系的关系;里程计到map的坐标系的关系;lidar到map的坐标系关系;2、laserOdomerty会发布一个消息:ros::Publisher pubLaserOdometry = nh.advertise<nav_msgs::Odometry>("/laser_odom_to_init", 100);内容是:// publish odometry nav_msgs::Odometry laserOd

2021-06-12 12:55:49 1449 1

原创 pcd转成ros的nav_msgs::OccupancyGrid的消息发布出去

参考网上代码,基本步骤:1、加载pcd文件2、进行过滤3、转成msg4、发布5、打开rviz,查看map消息#include <ros/ros.h>#include <nav_msgs/OccupancyGrid.h>#include <nav_msgs/GetMap.h>#include <sensor_msgs/PointCloud2.h>#include <pcl/io/pcd_io.h>#include <p

2021-06-08 11:55:58 903

原创 rosnode gdb 调试

参考链接:http://wiki.ros.org/roslaunch/Tutorials/Roslaunch%20Nodes%20in%20Valgrind%20or%20GDB<node launch-prefix="gdb -ex run --args" pkg="livox_mapping" type="scanRegistration_m1" name="scanRegistration_m1" output="screen"></node>~/livox_ws/w

2021-06-04 14:15:10 310

原创 关于激光雷达不同扫描方式得到的数据的整理总结(未完待续)

首先接触的是loam那一套,要排列成一个图像一样的阵列。对于蝴蝶式的扫描的,例如livox mid40的如何处理?https://www.livoxtech.com/mid-40-and-mid-1001、velodyne16的扫描方式的处理2、livox mid40扫描方式的处理livox mid-40 mid-100的坐标系定义:https://www.livoxtech.com/3296f540ecf5458a8829e01cf429798e/downloads/20190712/Livo

2021-06-03 23:36:59 3826

原创 fastlio lidar补偿模块的理解

基本原理在上面的sync_packages代码中,已经拿到了符合要求的imu数据和lidar数据,现在,就基于这些数据对lidar点进行补偿,目的是补偿到结束时刻的lidar坐标系下。坐标系介绍总共有3个坐标系:全局坐标系(world)、imu坐标系(body)、lidar坐标系全局坐标系一般以开机点为原点;imu坐标系时刻在变化,是一个纯粹以imu来推理的坐标系;lidar坐标系:如果lidar与imu是刚性连接的,那么lidar坐标系与imu坐标系的转换关系就是固定的,知道了imu坐标系

2021-06-03 14:35:02 3250 3

原创 ros launch文件中的tf节点的参数

参考:http://wiki.ros.org/tf#static_transform_publisherhttps://blog.csdn.net/qit1314/article/details/83280992https://www.guyuehome.com/19226一、launch中Tf的解析对于这个x y z yaw pitch roll是怎么解析的?基本可以理解为:将子坐标系移动到parent坐标系的(x,y,z)位置下,然后子坐标系绕自己的动轴旋转,按照ZYX的顺序。绕动轴旋

2021-06-01 20:28:11 2740

原创 点云录制及octomap查看

1、用aloam产生地图需要录制的消息是/laser_cloud_map,在建图中进行录制:~/lidar_data$ rosrun pcl_ros bag_to_pcd out_2021-05-29-15-41-59.bag /laser_cloud_map pcdCreating directory pcdSaving recorded sensor_msgs::PointCloud2 messages on topic /laser_cloud_map to pcdGot 727936 d

2021-05-29 16:08:28 686

原创 基于Aloam对特征匹配及雷达里程计的学习

ALoam使用了ceres库进行优化,得到优化后的里程计信息。学习总结:1、明确知道要优化什么:我们的目的是要知道当前雷达的姿态与上一帧的点云姿态相比的变化,即q_last_curr,t_last_curr.注意:读作curr到last的q,也就是curr在last坐标系下的旋转和位置(t可以直接看做是位置)。如果这两个量估计的很准确的话,那么将curr的点云中的每个点进行:q_last_curr*p_curr+t_last_curr会对应上last坐标系下的点。在这里,是落在last坐标系下的

2021-05-29 10:29:25 775 3

原创 vio第二章-中值积分修改

1、安装sophus因之前安装的是eigen3.2.29,重新源码安装了eigen3.3.4编译sophus还是报错,参考:https://www.it610.com/article/1290749043999318016.htm 这篇文章。其他可以参考:https://www.it610.com/article/1281501671595196416.htm。...

2021-05-11 23:28:23 215

原创 手写vio——第一章习题

第一章习题一、1、视觉与IMU融合后的优势?2、有哪些常见的视觉+IMU融合方案?有没有工业界应用的例子?3、在学术界,VIO研究有哪些进展?有没有将学习方法应用到VIO的例子?二、#include <iostream>#include<Eigen/Core>#include<Eigen/Geometry>#include <vector>#include <cmath>#include <assert.h>u

2021-05-05 12:53:49 1045

原创 滤波相关学习

文章目录滤波基本概念状态状态转移概率测量概率置信度贝叶斯滤波高斯滤波卡尔曼滤波扩展卡尔曼滤波UKF滤波信息滤波非参数滤波直方图滤波粒子滤波滤波为什么叫做滤波?滤波一词来源于通信理论,它是从含有干扰的接收信号中提取有用信号的一种技术。“接收信号”相当于被观测的随机过程,“有用信号”相当于被估计的随机过程。来自百度百科。这个说法确实很形象,将有用的信息从一堆混在的信号中提取出来。我们的现实世界确实充满着不确定性,没人能精准、完全的描述某种状态。对于想让机器智能的完成人类的任务的设计者来说,要重视

2020-10-11 17:16:28 274

原创 错误的vector erase引起的问题

vector执行erase的时候,begin的数值是负数,导致erase以后,vector的size是一个超级大的数据。

2020-09-11 20:48:42 494

原创 cmake 编译与bazel编译的一个差别

cmake 编译与bazel编译的一个差别某个函数是有返回值的,写代码的时候,未返回。Cmake编译的代码运行无错,bazel编译的代码,在运行到那个返回处时,会报 Illegal instruction的错误。

2020-09-03 21:02:38 3012 1

openbinder源码

是android的binder的原型binder,放在这里保存,供后面学习。

2015-11-05

mp4v2-2.0.0

是mp4v2-2.0.0的代码,里面有带build.sh脚本,以及生成的工具和包

2015-10-31

mp4 ISO_IEC_14496-12_2012

该文档是关于mp4的格式的官方说明文档,详细描述了各个box的情况

2015-10-30

MRR的应用分析实例

爱立信MRR的定义,分析过程,入门简介,合适刚入门的网优人员

2010-06-09

爱立信CTR的使用简介

使用CTR入门简介,包括如何开启,以及案例

2010-06-09

空空如也

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

TA关注的人

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