- 博客(21)
- 收藏
- 关注
原创 Loam流程分析以及源码解析
前一阵看网课讲解Loam的视频,觉得十分简单而且直观。然而纸上得来终觉浅,最近结合网上前人的解析加以自己的理解,希望能得到新的深一些的理解。写下做一下记录,方便将来回忆复习。贴上参考的资料:github上用中文注释的一个代码,十分清晰,配合着其他讲解,理解Loam的源码很有帮助:源码加中文注释知乎密斯特李的专栏文章,将Loam源码的四个node分开解析,清晰明了:知乎文章1知乎晓伟Liu的解析,在看mapping部分的时候给我帮助较大知乎文章2csdn博主Nksjc的文章csdn文章感谢前人
2021-04-20 22:51:32
1375
原创 用案例来展示g2o优化库的使用
之前看高博的slam十四讲时候用过g2o,然而后来一直没有用项目来练手已经忘得差不多了,还是得多动手实践呀,加强记忆。写个博客记录一下,下次要用回忆更快一些。g2o介绍它是基于图优化的一个开源库,使用非线性优化算法和图论结合的理论。在g2o中,将待优化的变量看成图的顶点,将误差项看成图的边。这么说可能比较难以理解,这里有一篇非常简单的案例用来说明:案例在我看来,很多问题是很天然的可以用图优化描述的,比如接下去的案例二。而且相对ceres,我觉得g2o在解决变量数目非常多的情况,更加来得自然和简单。不
2021-04-18 23:44:22
568
原创 ICP的不同解法:SVD分解,高斯牛顿法。代码实现
ICP (Iterative Closest Point,最近迭代)是点云配准中的一个很重要的算法。假设有两个点云P和Q,想要找到一个变换T,使得P=TQ,那么就需要使用到这个算法。1.最近邻查找这一步是为Q中的点Qi找到Q中相对应的点。这个要分情况讨论:比如在RGBD-slam中,特征点的匹配已经为我们找到了P、Q中点的对应关系,那么这一步其实是已经完成了。但是对于两坨点云,没有点和点的对应关系,我们只好先做这样一个假设:离Qi最近的P中的点Pi就是它对应的点,显然这个是不准确的,但是我们可以通过
2021-04-13 14:30:57
3754
4
原创 移动机器人学习1: a*算法的理解
感谢路径规划之a*这篇文章的步步引导,在此基础上,记下自己对a*算法的理解,以及启发式函数的理解。1.广度优先搜索与Dijkstra:设想一下算法在一个地图中寻找另外一点,最简单的方式就是从出发点开始,一圈圈向外膨胀。从起点开始,首先遍历起点周围邻近的点,然后再遍历已经遍历过的点邻近的点,逐步的向外扩散,直到找到终点。这便是广度有限算法bfs。这个过程像在火山的岩浆蔓延,逐渐占满空间直到达到目标点。然后从目标点回溯,得到最短路径。在网格中移动,移动都周围的格子的代价都是走一步,是相同的。但是很多情况
2021-03-16 16:59:54
559
原创 C++ 中map / unorder_map的emplace函数操作
今天看别人的代码,出现了以下的代码,十分不解,现在弄懂了作一个记录:unordered_map<int, PoseBlock> Frame;void AddPose(int id, const Sophus::SE3d& frame_T_wb) { Frame.emplace(std::piecewise_construct, std::forward_as_tuple(id), std::fo
2021-01-13 11:49:14
2215
1
原创 联想拯救者R7000 安装 ubuntu20记录
1. 安装install ubuntu 出现黑屏并带彩色bug条纹:按e进入修改界面,在linux那行最后加上:acpi=off2. 安装失败后,在windows下要彻底清除ubuntu,包括格式化对应的硬盘空间,按下面链接中教程删除ubuntu添加到efi的文件https://blog.csdn.net/xyt723916/article/details/106317594 否则可能出现安装不上,在安装过程中出现grub_install failed,然后安装崩溃3. 显卡安装按照链接:https:/
2021-01-09 23:28:29
478
原创 cuda 原子锁&多线程操作&通用原子操作
经历了很多奇奇怪怪的bug,整理一下。先描述要做的事情以及怎么做:在项目中,空间中有200w+的点,需要映射到一个grid_map的600*600的网格中,落入到同一个格子的点需要进行一些计算获得一个值。对于格子与格子之间是并行的,但格子之中的点需要设计为串行。所以在计算某个格子中的点时,需要将格子的值保护起来,只允许一个线程(点)计算并改变。这里就用到了cuda的通用原子操作。也许有人会问,cuda提供了一些原子操作函数,能不能直接用呢?cuda提供的原子函数适用于简单的单一变量判断加减,而对于需要复
2020-12-15 15:24:43
5280
4
原创 ubuntu18.04安装cuda10.2记录
本篇文章属于个人安装成功的经验记录。参考博客为:https://blog.csdn.net/qq_34906039/article/details/104175802总结在按着上面的教程走一遍,其中还是遇到了一些问题1.显卡驱动的安装方式:至少我按博客中的方式并未安装成功,所以我采取的是连接https://blog.csdn.net/Limiao_123/article/details/96355247中的这个方式。2.显卡驱动版本问题一开始我也是按着教程中安装390那个版本,但是后来在跑cu
2020-11-06 09:28:13
284
原创 ROS学习之action
背景action可以看做升级版的service,它主要可以实现某些特定的情况,比如:客户端发送指令之后,服务端操作处理时间太久,不知道服务端到底是还在处理还是已经挂了,或者客户端发送目标之后,觉得不行,想取消任务。所以很好理解的,我们需要服务端做出反馈,所以诞生了action。过程:action_client发送一个目标,action_server接收到这个目标后,执行期间会不断给客户端发送进度反馈,如果客户端没有终止任务的话,这个反馈会一直存在直到结束。客户端也可以随时结束任务。本篇文章参考了参考博
2020-10-30 10:53:20
479
转载 多线程以及线程锁的学习笔记
C++ 多线程 Thread(C++11)和线程锁的知识参考文章:https://blog.csdn.net/ouyangfushu/article/details/80199140https://zhuanlan.zhihu.com/p/910625161.普通函数多线程调用:无参数函数 #include <thread> #include <iostream> #include <mutex> void hello
2020-10-29 10:58:40
382
原创 ROS中spin()和spinOnce()的区别和用法以及多线程
参考这个教程:https://blog.csdn.net/yaked/article/details/50776224,其中的内容更为详细。以下记录我的学习心得1.spin()和spinOnce()的区别常见的用法如下:spin():ros::init(argc, argv, "my_node");ros::NodeHandle nh;ros::Subscriber sub = nh.subscribe(...);...ros::spin();spinOnce():ros::Rate
2020-10-28 20:16:36
4383
1
原创 tf 学习笔记,翻译
tf学习学习完ROS wiki后做个简单的笔记,链接ROS-wiki-tf-learning以下的每点都是对应着链接中tutorial每个章节,遗忘不解时请翻看1.tf发布器tf::TransformBroadcaster br; //创建一个发布器tf::Transform transform; //创建一个变换//填入变换tf::Quaternion q;q.setRPY(0, 0, msg->theta);transform.setRotation(q);transform
2020-10-21 21:33:19
456
原创 记录一下所理解RSA算法(更新)
偶然看到一篇密码学的文章,之前都没有了解过,趁着午休时间,匆匆一瞥被其中的智慧震撼了,随手记录一下,以后有时间再接着补充一、历史对称加密算法VS非对称加密算法在1976年以前,所有的加密方式都是同一种模式:对称加密算法。我简单举个栗子:小明写了个小纸条打算传递 i love you(也就是信息)这句话给他的女朋友小红,但是老师们防早恋抓得比较紧,所以他打算对这句话加密,让老师截获小纸条也不知道想表达什么。所以小明使用一个简单加密规则:所有字母使用字母表顺序后二位字母代替。然后 i love y
2020-09-02 14:16:22
223
原创 VTK各种demo
VTK各种demo的网站https://lorensen.github.io/VTKExamples/site/Cxx/Qt/BorderWidgetQt/链接链接
2020-08-21 11:44:57
769
原创 C++三大特性之“多态”,静态多态和动态多态 -- 解答学习中的疑惑点
在这个博文的基础上,进一步分类解答遇到的疑惑和新增理解,依旧惯例,十分感谢前人的分享,贴上链接:链接C++的三大特性分别是:封装、继承、多态。这里将详细讲解多态其实学习C++还是要学习C++中的思想,学习解决问题的思想,学习这种解决问题背后的根本。先将我们带回到没有多态的那个时期,考虑一下我们怎么解决以下问题:加法:+对于int型1/2/6/9这种,1+2=3很简单对于double型1.11+1.12=2.23也很简单但是我们在使用加号+的时候怎么没有去考虑,程序怎么知道我们带到加号左右的是什么
2020-08-14 17:06:41
372
原创 设计模式系列——工厂模式浅析
最近在学习设计模式,在学了了很多的大佬的分享之后,想写一点自己的理解。主要参考了知乎上一篇文章:参考文章学习一个新的知识点,都可以先问问自己两个问题,1,没有这个方法将会有什么不好的地方 2,有了这个方法之后会变得怎么更好。带着这两个问题,我们开始学习工厂模式。首先我们看一下没有工厂模式的时候会怎么样:那水果举例子,我们要获得苹果,就得知道苹果的制造方法,想要获得香蕉就得知道香蕉的制造方法。如果我们不知道工厂模式,我们会怎么做呢?我们得知道苹果的生产方式和香蕉的生产方式class user{ F
2020-08-10 16:18:14
213
原创 安装opencv_contrib踩坑记录
之前一直ubuntu下耍opencv,最近因为课题另外一个模块的需要,就回到windows平台下继续开发。搞了大半天,参考了很多博客,终于把opencv_contrib安装好了。随手记录下踩过的坑。我参考的博客主要是这篇: 一篇很详细的博客,写得很详细很详细。在看下面内容之前,强烈建议先把这个篇看完。本篇文章是对其几点说明而已(也是它评论中其他人遇到的问题的解释)关于几个文件下载不下来的问题;我安装过程中这一步遇到4个文件不能下载,首先找log文件中找到文件需要放置的位置,删除掉0k的文件,
2020-07-12 13:20:43
657
原创 解决source和换成zsh后不能使用ros命令的方法记录
2019-0.7-30记录解决每次都要 source ./devel/setup.bsah 的问题:解决方法:终端输入:gedit ~/.bashrc文件打开后直接翻到最后面在底部添加source ~/catkin_ws/devel/setup.bash保存退出即可这个方法是在bash下的方法。如果已经安装了zsh后,都要换。首先,在换成zsh后,原来的ros的命令将失效,原因...
2019-07-30 18:47:09
1962
原创 ubuntu重复循环登录解决
记录:一般都是显卡驱动出现问题,所以重装显卡驱动。在登录界面按ctrl+alt+f1进入到命令行界面,然后重装驱动可以先查看还有无显卡驱动,省下一些步骤...
2019-07-30 15:49:10
582
原创 ros和安卓设备通讯的记录
记录关于ros和android通信的步骤:android设备订阅pc发布的topic并显示在屏幕上1, 确保ROS安装正确,kinetic,创建好了catkin_ws2, 进入链接中的教程 http://wiki.ros.org/rocon_interactions/Tutorials ,选择indigo(里面只有这个版本,要换成kinetic的命令和包)3, 直接看第六点Android i...
2019-07-30 12:20:00
532
原创 Ubuntu安装Nvidia2060显卡记录
电脑新装了2060显卡,本想着安装驱动应是一件简单的事情,没想到磕磕碰碰花去了一整天时间才装好,还把原来的ubuntu装没了,重装了…特此记录一下,也为他人避开一些坑。安装显卡驱动的方法有三种,论坛各种教程很多我就不赘述了我先说一个坑:按上图做法,系统设置->软件更新->附加驱动->选择nvidia最新驱动->应用更改。 在我的电脑上不行,会出现开机时进入不了系统...
2019-07-17 20:35:36
1739
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人