- 博客(29)
- 收藏
- 关注
原创 关于项目实训中试错的一点总结
首先是关于r3live中gcc的版本问题,其实就是注意linux的中各个库的配套,比如pcl gcc vtk它们的版本往往有所关联,但它们自身的官方文档里又往往不会明说,所以只好自己挨个试试,反正我试了不少,终于发现了gcc版本的问题。另外,还有就是opencv的版本问题,通过opencv的多版本切换使我终于明白了linux对c++库的使用过程,反正opencv在cmake的时候注意安装位置,需要版本切换的时候,使用脚本调整位置就好了。顺带一提,假如对机械不太熟悉的话就不要擅自调试遥控汽车了,我们把无人车拆
2022-06-03 10:41:11
302
1
原创 如何将loam_livox的全局点云保存并导入unity3d(二)
从这其中取出的obj模型对我而言有个问题,那就是mesh的内外面反了,或者说法线方向反了,需要使用unity3d对其进行法线方向的反转,而这里需要使用脚本,脚本内容如下通过以上脚本实现法线的反转,[ExecuteInEditMode]表明该脚本会在unity3d非运行状态下运行,获取相关三角后对内外面进行反转。然后可以对其使用unity的navigation进行烘培,而运行的时候脚本可能会失效(不影响烘培效果,但会出现单向透明的情况),可以使用unity3d中的着色器进行装饰,比如说使用玻璃材质,需要
2022-05-31 20:59:12
632
原创 如何将loam_livox的全局点云保存并导入unity3d(一)
首先使将loam_livox的全局点云保存问题,找到全局点云后,我模仿了loam中如何保存单帧pcd的方式,全局点云的发布如下所示然后使用单帧点云的方法进行保存更改一下参数即可。保存后的点云需要修改为ply格式,可以通过pcl_pcd2ply命令对全局pcd文件进行转换得到ply文件,下一步就需要使用meshlab以获取obj模型,这里可能会发现在pcl中也有从ply2obj的方法,但似乎不太准确,所以推荐使用meshlab,首先计算法线 然后使用泊松算法进行曲面重建接下来前往过滤器的selec
2022-05-31 20:47:12
1185
1
原创 如何使用自动驾驶算法中的obj模型(unity3d)
假如那些slam算法中只有ply文件的话(一般都会有的,发布在global_map一类的全局建图话题上),那就用meshlab进行转化,使用其中的点云简化,计算法线,构建曲面等功能建立出obj模型。其实刚开始我想用模拟器CARLA等,但是有一个问题,那就是只能主机用,因为它的别的配置不说,光显卡内存就有6G,其他的也差不多,不管是否独显,反正笔记本应该挺难跑的,假如使用远程桌面,那主机上显示的画面传到笔记本这里可是相当掉帧了,我就没有使用相关的自动驾驶模拟器,而是使用unity3d进行构建。首先..
2022-05-20 11:38:56
524
原创 关于OAK-D-POE与POE交换机与ORBSLAM3的结合使用
首先,将联通外网的网线插入交换的WAN口,用一根网线连接电脑和交换机(LAN口),摄像头利用自带的网线插入交换机的LAN口,利用笔记本快速配置交换机,这里可以使用其默认配置。然后下载OAKD_ORBSLAM3。在其中的ORBSLAM3文件夹中下载ORBSLAM(注意分支,我这里使用的都是使用opencv3的分支)。这里我觉得还可以说说如何切换opencv的版本,假如下载了opencv3在默认位置(/usr/local/lib),在下载安装opencv4时,可以使用cmake -D CMAKE_PREF
2022-05-14 10:09:12
373
1
原创 关于web结合单目以及RGBD图像重建的设计(二)
使用RGBD图像进行点云构建时,我本来想要继续使用nodejs以及c++的方法,但是一些后端优化比如一些因子图相关的库就是加载不出来,我使用ldd发现在node文件中找不到依赖库,所以我只好换了另一种方法,那就是使用c++搭建服务器,使用C++搭建服务器好像一直没有什么统一的框架,我查了一个wfrest进行使用,我使用这个框架的主要原因是它的一些方法和nodejs很像,其实要是图片流很快的话,可能以后使用socket会更好一些。将图片传给c++后我使用了PNP方法对位姿进行计算然后使用g2o对其进行优化
2022-04-24 12:04:38
1024
原创 关于web结合单目以及RGBD图像重建的设计(一)
首先是架构的问题,我使用了本机电脑,虚拟机外加一台主机的架构,其中本机电脑使用了react+material UI作为单页面应用框架,使用three.js重现点云。本机电脑通过虚拟机接口转发与虚拟机沟通。而虚拟机上运行的是nodejs与c++的混合编译。主机进行了对点云的构建,源码地址如下xingzhongyu/cv (gitee.com)https://gitee.com/xingzhongyu/cv虚拟机上我用nodejs搭建了一个图片服务器,在获取不同的图像(可能还有位姿数据,可选)后将其地址
2022-04-24 11:12:57
1779
原创 vins-mono的读后总结(二)
首先解释一下因子图优化,我对其现在只能说有一点大致的理解,那就是通过假设变量情况,通过计算在什么情况下,得到当前数据的可能性最大,从而得到变量的估计与优化。关于这点,以后我可能会进一步得到相应的理解,然后回来进行补充。另外我从这里明白了紧耦合的定义,什么叫做紧耦合,优化函数里面把这些相关变量写在一起才叫做紧耦合。这也就是下面所要介绍的后端优化部分。在后端优化部分中,我们可以将IMU,视觉以及约束点全部放入统一的优化函数中进行优化并且得到相应的值。其中包括11帧的位姿,相机外参以及时间同步时所产生的误差以
2022-03-29 22:00:24
376
原创 vins-mono的读后总结(一)
vins-mono应用于单目加IMU的情况下。首先是feature_tracker,对图像中的点进行追踪,这里使用的是光流法追踪内部的特征点,查看其中与上一帧匹配的特征点,然后记录跟踪到的次数,假如跟踪次数到达一定程度就会将该点固定,形成约束。清除特征点附近过密的特征点(根据特征点跟踪次序进行清除,从而优先保留次数较多的特征点),还要清除上一帧中在这帧中没有出现的特征点,然后提取新一帧中的一些新的特征点(新特征点的提取位置可以根据清除的旧特征点的位置进行动态的判断)。然后将特征点发布出去。关于IMU
2022-03-29 20:03:20
429
原创 关于SLAM中高斯牛顿法的一些理解
首先就是高斯牛顿法,首先介绍一下背景,假如是一个误差函数求最小值,那么通常情况下就是求取导数为0时的值,然后取其中最小值,但多变量情况下求导是比较困难的,这时可以通过给定一组x的方法进行估算,也就是给出,假如该值较小并且也足够小时就可以认定x为最小值。而牛顿法以及高斯牛顿法就是对的计算。牛顿法是对目标函数进行二阶泰勒展开,此时该函数为一个变量为的二次函数,可以进行求导计算,然而牛顿法的二阶导数矩阵,也即海塞矩阵计算过慢,所以使用改进的高斯牛顿法,该方法求取的是目标函数误差的平方和,而且泰勒展开时对目标函
2022-03-26 15:59:12
435
原创 A-LOAM源码读后的一些简单的总结与备忘
关于A-LOAM运行时的问题,主要是将/camera_init里的破折号去掉,opencv/cv.h替换为opencv/cv.h,另外,假如出现RVIZ闪退的情况,主要是因为运行建图时筛选出的交点与面点过少的问题,可以适当降低相关参数,也可以多运行几次。源码中的kitthelper.cpp主要是读取文件并且发布用的,读取过程中注意将点转换到点云坐标系下,以及将相关的图像从OpenCV图像转换为ROS图像,将读出的数据根据ROS节点的不同topic进行发布。对于发布的点云会在scanRegistrat
2022-03-23 20:37:34
3642
原创 我对视觉SLAM十四讲的一些理解(二)
光流法与直接法的定义:光流法只对图像中的特征点进行提取,使用光流跟踪进行匹配,然后使用对极几何,PNP或ICP进行计算。而直接法分为是否提取关键点,根据关键点或全部像素的灰度信息对相机运动进行估算。灰度不变假设,在一小段时间内灰度不变。根据该假设进行求导等一系列操作。补充一句,此时我们计算的不是重投影误差,而是光度误差。根据点可以快速计算位姿,而计算全部像素有利于建图。后端部分同样可以使用非线性优化,可以同时对路标以及相机位姿同时进行优化(根据重投影误差),或者仅仅是优化位姿,而对路标的坐标进行固定处理
2022-03-17 11:44:52
3621
原创 我对视觉SLAM十四讲的一些理解(一)
首先是三维空间的刚体运动,关键在于物体的运动如何表述,其中包括欧拉角,旋转向量及其与旋转向量的转换,其中包括罗德里格斯公式等数学知识,但欧拉旋转往往面临万向节死锁问题(简单来说,就是转三次和转两次等价),所以可以使用四元数,而关于四元数的表示,我想可以用复数在数轴上的表现来说明,a+bi中用a表示x轴,b表示y轴,可以通过类比方法来说明四元数的情况。同样,也可以转化为旋转矩阵。关于李群与李代数,事实上,李群中包括旋转矩阵与变换矩阵,因为它们是可以连续变化的。而李代数则是李群进行指数映射后对李群性质的一些
2022-03-16 14:56:22
4114
原创 谈谈SLAM算法中常用的几个库的安装使用问题(一)
首先是github的下载问题,这里有个比较简单的方法,就是去What Is My IP Address - See Your Public Address - IPv4 & IPv6查出来然后将地址贴到hosts文件中。接下来介绍opencv,由于通常情况下我们使用的是比较新的版本,比如opencv4,这会导致一点问题,比如CV_FM_8POINT -> FM_8POINT,用于表示八点法的参数已经进行了修改,另外还有比如 CV_LOAD_IMAGE_COLOR已经修改为IMREAD_CO
2022-03-07 21:49:03
773
原创 react源码分析(14)-react-reconciler分析总结以及从宏观层面看待react
目录2021SC@SDUSCreact-reconciler图示(推荐打开下方链接,查看清晰原图)react-reconciler中流程总结(与组件更新为例)代码外的小插曲(开源协议)react与vue的比较react中的热点 hooksreact18的未来特性总结2021SC@SDUSCreact-reconciler图示(推荐打开下方链接,查看清晰原图)这是我分析的对react-reconciler部分运行的整体介绍图,因为图片太大,这里附加URL..
2021-12-25 15:36:44
855
原创 react源码分析(13)-updateQueue介绍(2)以及Lane模型
目录2021SC@SDUSC介绍getStateFromUpdate谈谈update任务在react中的调用处理Lane模型简介谈谈react源码中的位运算总结2021SC@SDUSC介绍getStateFromUpdate在getStateFromUpdate函数中,通过更新任务将State进行更新。function getStateFromUpdate<State>( workInProgress: Fiber, queue:..
2021-12-25 15:25:06
2910
原创 react源码分析(12)-updateQueue介绍
目录2021SC@SDUSCupdateQueue总览--对前文中所提到的update做详细介绍分析 processUpdateQueue函数总结2021SC@SDUSCupdateQueue总览--对前文中所提到的update做详细介绍首先说明一下在updateQueue中所提到的update类型所包含的具体结构。export type Update<State> = {| // TODO: Temporary field. Will remove
2021-12-18 14:14:22
1018
原创 react源码分析(11)-错误边界机制
目录谈谈错误边界的概念找到待处理节点找到错误边界总结2021SC@SDUSC谈谈错误边界的概念在部分UI内部的JavaScript中可能捕获到异常,为了确保整个应用能够顺利运行,可以在组件树中找到发生异常的组件,利用错误边界组件捕获并打印组件中的错误,并且展示备用UI,不会继续渲染那些已经发生崩溃的子组件树,错误边界在渲染期间、生命周期方法和整个组件树的构造函数中捕获错误。为明晰相关概念,根据官方文档,这里给出不被错误边界所处理的种种情况:事件处理,异步代码(例如setTi...
2021-12-12 11:19:32
732
原创 react源码分析(10)-commit阶段中DOM节点的更新与插入
目录2021SC@SDUSC插入阶段更新阶段总结2021SC@SDUSC插入阶段通过commitMutationEffectsOnFiber调用commitPlacement插入节点(称为子节点或目标节点),首先通过getHostParentFiber得到其DOM上的父节点,然后根据父节点的类型判断子节点所要插入的位置,此时可以重设子节点文字内容。找到before后可以执行插入方法。before节点是为了在插入节点时Fiber树的顺序不会因为映射到DOM上而改变,子节点必..
2021-12-05 15:31:12
986
原创 react源码分析(9)-commit过程中的Mutation阶段以及DOM节点的清除
目录删除操作的入口以及相关顺序删除操作的内部流程谈谈commit的Mutation阶段中的几个具体方法总结2021SC@SDUSC删除操作的入口以及相关顺序在commitMutationEffects正式完成对DOM节点的操作,在commitMutationEffects_begin中,将nextEffect初始化为root,然后循环删除其子节点,当子节点为空值时,调用commitMutationEffects_complete,在该方法中首先对Fiber节点进行相对应的更新
2021-11-28 20:17:15
687
原创 react源码分析(8)-commit介绍
目录commit阶段的改动commit的三个阶段谈谈 BeforeMutation阶段谈谈LayOut阶段总结2021SC@SDUSCcommit阶段的改动在这里想分析一下commit阶段,这里指出一个小问题,事实上react最新版本中已经对effectList做了移除,并不寻找更新节点,而是遍历整棵Fiber树,用subtreeTag变量进行优化,详情参照https://github.com/facebook/react/pull/20595相当一部..
2021-11-21 14:20:18
417
原创 react源码分析(7)-completeWork介绍
目录2021SC@SDUSCcompleteWork在源码中的大致位置从beginWork到completeWorkCompleteWork的工作流程谈谈HostText总结2021SC@SDUSCcompleteWork在源码中的大致位置在这里谈一下completeWork,首先我想明确一下位置,也就是大部分更新的执行流程,如图所示:其中的performConcurrentWorkOnRoot正是react要求scheduler调度的fibe..
2021-11-14 14:03:14
410
原创 react源码分析(6)-DIFF算法介绍
DIFF算法总体介绍由于将树转化为另一种树需要大量时间,事实上,算法的时间复杂度为O(n^3),所以必须要想一种方法进行替代,这就是DIFF算法。首先研究实际开发中的情况,第一,很少有在更新时节点跨层级移动的情况,即使有,也可以用CSS进行隐藏或消失。第二,当两个组件的类不相同时,它们通常不会有相同的结构,第三,在同层级的节点比较中,可以以key做唯一标识。根据第一条,DIFF算法可以只比较同层级节点,从而将算法的时间复杂度降为O(n)。根据第二条,算法将不再对不同类型的节点进行..
2021-11-07 10:08:45
325
原创 react源码分析(5)-介绍beginWork
目录2021SC@SDUSCbeginWork的执行过程谈谈其中的updateClassComponent方法关于bailoutOnAlreadyFinishedWorkDIFF算法的入口总结2021SC@SDUSCbeginWork的执行过程谈谈beginWork,react所需要调度的就是Fiber树的构建与更新,所以我们从beginWork开始,它被从ReactFiberBeginWork.new.js中引入,而在beginWork中会比较current树中..
2021-10-31 17:12:20
503
原创 react源码分析(4)-调度过程及原理
目录react-reconciler与scheduler关系scheduler介绍JS中的偏函数总结react-reconciler与scheduler关系这里给出react-reconciler与scheduler的关系图关于react17的最新版本,我查阅多方资料,但由于在任务调度方面好像改动不小,所以不得不自己参考源码,最终找到了react与scheduler的联通入口,在ReactFiberWorkLoop.new.js中的schedulerCallBack正..
2021-10-24 11:41:25
446
1
原创 react源码分析(3)-Fiber节点,树的介绍以及渲染过程总览
目录Fiber节点内容Fiber树结构渲染过程(精简版)总结2021SC@SDUSCFiber节点内容fiber是react中的多任务调度的方法,可以优化性能,在这里给出react中fiber的源码,其中DIFF更新时可以中断的,避免其长期占据线程,从而有更好的体验。export type Fiber = {| // These first fields are conceptually members of an Instance. This used to..
2021-10-17 11:53:20
638
原创 react源码分析(2)-react-reconciler的整体介绍
目录react-reconciler入口DIFF算法Fiber树及其相关调度算法以及其他总结2021SC@SDUSCreact-reconciler入口在第一篇博客中我大致介绍了一下react以及其测试运行的情况,在这里说明,react中的组件渲染主要依靠render,而render调用legacyRenderSubtreeIntoContainer方法,该方法调用updateContainer,而updateContainer根据enableNewReconcile..
2021-10-10 10:35:28
608
转载 test1
解决“Some index files failed to download, they have been ignored, or old ones used instead.”_小明同学的博客-优快云博客
2021-09-18 13:46:45
76
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人