- 博客(98)
- 收藏
- 关注

原创 vector,string,list,map,set,queue用法自查,c++STL原理及用法
1.初始化(1) vector<int> a(10); //定义了10个整型元素的向量(尖括号中为元素类型名,它可以是任何合法的数据类型),但没有给出初值,其值是不确定的。(2)vector<int> a(10,1); //定义了10个整型元素的向量,且给出每个元素的初值为1(3)vector<int> a(b); //用b向量来创建a向量,整体复制性赋值(4)vector<int> a(b.begin(),b.begin+3); //定义了a值为
2022-02-24 15:57:39
857
原创 执行Python报错OSError: /opt/hpcx/ompi/lib/libmpi.so.40: undefined symbol: opal_hwloc201_hwloc_get_type_d
环境变量可能未正确设置,导致系统未能找到正确的动态库版本。库,因为在这个MPI库文件中发现了一个未定义的符号。往.bashrc文件中添加环境变量即可。库时,Python 无法加载。新环境,刚开始运行就这样。在于动态链接器无法解析。库中需要的某个符号。
2024-09-05 15:05:06
613
原创 问题:输入git命令出现END命令,按住ctrl+c都没有不能退出,只能输入q才能退出
时,例如git log,会直接出现END这种黑框,按住ctrl+c都不能退出,只能通过输入q才能退出的情况。
2024-02-28 21:09:28
557
原创 VScode 恢复被删除的文件
第 1 步:在 VSC 上输入 Ctrl + Shift + P。解决此问题的一种解决方案。要求必须记住已更改的每个文件名。第 2 步:选择“本地历史记录:查找要恢复的条目”选项。第 4 步:选择保存该文件的时间。第 5 步:复制文件内容并恢复。第 3 步:找到要恢复的文件。
2023-11-03 10:49:50
1257
原创 ubuntu扩大运行内存, 防止编译卡死
edit /etc/fstab (或者vim /etc/fstab) : /swapfile none swap sw 0 0 7、6、查看/etc/fstab是否有/swapfile none swap sw 0 0。2、扩充交换空间大小,count=64就是64G = 1G x 64。4、指定交换空间对应的设备文件。首先查看交换分区大小。
2023-10-27 21:08:46
1895
原创 (有效)pip安装时报错, fatal error:Python.h:没有这样的文件或目录
原因是没有安装python的dev包,关键问题就在于对应上。
2023-08-08 22:02:22
765
原创 LIO-SAM保存点云地图,报错terminate called after throwing an instance of ‘pcl::IOException‘ what(): : [pcl:
LIO-SAM保存点云地图,报错terminate called after throwing an instance of 'pcl::IOException'what(): : [pcl::PCDWriter::writeBinary] Error during open!
2023-02-23 18:52:08
1191
原创 剑指offer JZ20 表示数值的字符串
按照最复杂(最长)的情况,统计字符串,把正确位置的空格忽略,数字全部压缩为1,正负号全部用+代替,Ee全部用e,最后比较压缩之后的字符串,跟所有可能的结果对比,不同则为false。3.2 至少一位数字,后面跟着一个点 '.' ,后面再跟着至少一位数字。3.(可选)一个 'e' 或 'E' ,后面跟着一个整数(可正可负)2.(可选)一个符号字符('+' 或 '-')3.3 一个点 '.' ,后面跟着至少一位数字。2.(可选)一个符号字符('+' 或 '-')3.1 至少一位数字,后面跟着一个点 '.'
2022-09-06 19:16:49
223
原创 函数模板理解
函数模板是为了整理重载函数,提高代码的复用。包括了函数模板和类模板。class或typename为参数。是一种参数化的程序设计。并不是将参数类型作为参数传入函数模板,而是在编译过程中,根据实参的类型,推演形参的类型,此过程成为模板的实参推演,或模板的实例化。当函数传入参数为int型,则从:...
2022-08-26 19:44:55
179
原创 线程中常用的锁
线程之间的锁有:互斥锁、条件锁、自旋锁、读写锁、递归锁1.互斥锁用于控制多个线程对他们之间共享资源互斥访问的一个信号量。也就是说是为了避免多个线程在某一时刻同时操作一个共享资源。例如线程池中的有多个空闲线程和一个任务队列。任何是一个线程都要使用互斥锁互斥访问任务队列,以避免多个线程同时访问任务队列以发生错乱。在某一时刻,只有一个线程可以获取互斥锁,在释放互斥锁之前其他线程都不能获取该互斥锁。如果其他线程想要获取这个互斥锁,那么这个线程只能以阻塞方式进行等待。...
2022-08-26 15:53:48
380
原创 判断点是否在点组成的封闭区域内c++
大致方法可以有3种:方法1:面积法判断目标点与多边形的每条边组成的三角形面积和是否等于该多边形,相等则在多边形内部。方法2:角度法判断目标点与所有边的夹角和是否为360度,为360度则在多边形内部。方法3:射线法从目标点出发引一条射线,看这条射线和多边形所有边的交点数目:如果有奇数个交点,则说明在内部如果有偶数个交点,则说明在外部...
2022-08-26 15:44:42
2039
原创 剑指offerJZ19-正则表达式匹配
在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配。每个dp只考虑a*代表aa/a/空,的情况(代表a的情况,在dp[i][j-1]已经判断过了),只要有一种成立,即可。本题是典型的dp问题,创建一个n1*n2的矩阵,算随影长度str匹配的可能性。2.模式中的字符'*'表示它前面的字符可以出现任意次(包含0次)。请实现一个函数用来匹配包括'.'和'*'的正则表达式。1.模式中的字符'.'表示任意一个字符。.
2022-08-13 01:30:17
155
1
原创 牛客-剑指offerJZ46-把数字翻译成字符串
由于没有分隔符,数字编码成字母可能有多种编译结果,例如 11 既可以看做是两个 'a' 也可以看做是一个 'k'。但 10 只可能是 'j' ,因为 0 不能编译成任何结果。有一种将字母编码成数字的方式:'a'->1, 'b->2', ... , 'z->26'。未说明特殊情况0时怎么处理,从测试用例看是严格的数字形式。我们把一个字符串编码成一串数字,再考虑逆向编译成字符串。现在给一串数字,返回有多少种可能的译码结果。...
2022-08-13 01:05:51
246
原创 python3语法学习总结
concatenate函数np.bincount统计整数数组每个数出现的次数,输出一个数组。.astype(int)转换为int类型axis:enumerate多用于在for循环中得到计数,利用它可以同时获得索引和值ones是numpy的一个内置函数,作用是生成参数为一的数组...
2022-06-22 20:21:49
294
原创 ubuntu18.04启动时卡在Starting Gnome Display Manager
一般是之前安装了哪些软件,导致的冲突。可以参考一下帖子:https://blog.youkuaiyun.com/OxuanO/article/details/108799495需要注意的是,grub引导中,连接network只能连不需要验证的有线网(插上网线就能上网的那种)。并且每一次进入grub都需要重新连接network。检测是否连接上可用网络,可以在命令行ping一下,例如:我个人使用了dpkg和fsck进行恢复,再进入root,执行:再执行重启:即可解决。...
2022-06-15 14:07:51
2392
原创 ubuntu下vscode缩进及字体显示调整解决方案汇总
设置 VSCode 的默认缩进,由2个空格改为4个空格文件 -> 首选项 -> 设置 -> 输入框搜索 Tab Size,将 2 改为 4再点击 Editor: Detect Indentation取消勾选 Detect Indentation (中文意思是检测缩进), Ctrl + S 保存即可以上两步即可完成缩进修改有时即使设置好了默认缩进,但在视觉上,还会是缩进两个空格以为是没有修改好,或者没有生效。但如果我们将光标放到该位置,可以检查出却是是4个空格,只是2个空格宽度对应了一个字符宽度。
2022-06-12 18:23:27
3639
2
原创 ubuntu18.04安装gtsam过程及报错error: invalid initialization of reference of type ‘const std::vector<bool>&’
这里建议从这个链接下,不要从官网下,可能会有版本冲突2.安装依赖3.编译报错:1.error: invalid initialization of reference of type ‘const std::vector&’ from expression of type ‘const std::vector’ 124 | const std::vector& mask() const { retur...
2022-06-08 22:15:16
2612
4
原创 ubuntu系统重新安装后,未发现WiFi适配器,惠普
查找了很多资料,有用的如下:https://blog.youkuaiyun.com/github_33678609/article/details/86502916其中如何关掉惠普的secure boot(安全启动):http://www.ujiaoshou.com/upanjc/qidong/11134.html
2022-06-04 16:47:26
242
原创 安装ubuntu系统花屏问题,图形化界面崩溃解决办法
1.惠普电脑重启狂按F9,进入U盘启动界面,选USB启动项(带有USB的那一项,按回车)。2.然后选择第二项然后回车。3.按照教程,正常情况应该开始安装,但我的系统经过反复尝试,都是花屏,如下:经查阅资料,发现需要修改一些参数。1。在花屏页面长按电源键,强制重启电脑。2.重启过程继续长按F9,进入U盘启动界面,选择USB启动。3.进入ubuntu安装选择界面,按键盘上的上下按键,将选项光标放到第二行:然后按e,进入编辑界面。4.找到如下一行:偷懒加了省略号。5.将其改为:6.然后按F
2022-06-03 22:14:23
8755
1
原创 差速轮式里程计的内外参标定
运动模型如下图所示:内参标定原理:https://www.guyuehome.com/36440总结:(1)这里直接将激光雷达匹配得到的里程计信息作为底盘odom的观测量,忽略了两者之间的外参,当进行旋转时,可能会出现误差...在录制数据时旋转运动尽量一次做一整圈,可能会好些;(2)对于激光帧间位置变换和odom对齐,做的有些粗糙,应该在端点处对微小差异做一个插补.外参标定:https://www.guyuehome.com/36165这篇文章方法直接默认了odom和激光
2022-04-14 17:01:58
1591
原创 slam优化eigen,ceres,g2o,gtsam,pcl
eigen:SLAM本质剖析-Eigen - 古月居ceres:https://guyuehome.com/34633g2o:SLAM本质剖析-G2O - 古月居gtsam:SLAM本质剖析-GTSAM - 古月居pcl:https://www.guyuehome.com/35383
2022-04-12 11:35:39
826
原创 使用g2o进行图优化
G2O(General Graphic Optimization)是一个用来优化非线性误差函数的c++开源库.安装过程参考官网即可.1 g2o框架由以下5个部分构成:(1)SparseOptimizer是整个图的核心,找到它向上走,它是一个Optimizable Graph 也就是一个超图HyperGraph,所以在使用时需要添加顶点和边.(2)顶点(HyperGraph::Vertex)和边(HyperGraph::Edge),顶点继承自 Base Vertex,边可以继承自B.
2022-04-12 09:33:40
1339
原创 c++从map与unordered_map的区别到红黑树与二叉平衡树的区别
1 map与unordered_map1.1 介绍map由红黑树实现,红黑树本质上是一个带有平衡功能(不同于平衡二叉树)的二叉搜索树(完全二叉树形式存储);完全二叉树由于父节点与子节点的序列存在关系,所以其底层实现也是数组;unordered_map有哈希表实现,哈希表的本质是一个存储数据地址的数组(映射存储策略多种),所以查找效率为o(1)。1.2 区别map带有排序功能,在有有序要求的情况下使用map,其余情况unordered_map的效率都更高。2 红黑树与二叉平衡树2.
2022-04-11 22:15:42
1309
原创 矩阵求导的通用法则,标量、向量和矩阵的所有情况相互求导
标量通俗的说就是一个数,向量可以看成行或列为1的矩阵。3者两两结合有9中方式。1 标量与标量标量与标量就是正常的以为函数求导。2 标量与向量2.1 向量对标量求导向量的每个分量对标量求导:2.2 标量对向量求导结果为一个与向量同阶的向量,每个元素为标量对对应位置向量元素的倒数:因为是对向量求导,这里采用分子布局(即分母不变,分子转置。分子和分母布局求出来的结果互为转置):3 标量与矩阵标量的结合比较特殊,也很简单 。3.1 矩阵对标量求导...
2022-04-10 20:58:26
1060
原创 李群李代数的相互映射、倒数与扰动模型,推导细节和说明
前言:李群李代数的引入,可以方便slam问题中对变换矩阵的求导,解决优化问题。1 李群李代数介绍由于空间中旋转和变换矩阵可以相乘构成物理意义上的闭环,正好对应了群的概念。群的性质如下:此处需要注意幺元并不是单位矩阵,只要符合幺元性质的代数结构,都是。李群是具有连续(光滑性质的群),由物体可在空间中连续变化的物理意义可知,正交群和欧式群都是李群。由于李群的性质中只有乘法没有加法,对旋转和变换的取极限和求导就很困难,因此引入李代数的概念。李代数的性质如下:正交群和欧.
2022-04-09 22:54:44
1948
1
原创 leetcode215,对官方题解做的一些改进,堆排序(100%),快排
题目描述:给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。方法一:快排左右标签同时向内,需要注意的细节就是哪个标签先越界的class Solution {private: vector<int> v; int partition(int left, int right) { int tag = v[left];
2022-03-30 16:07:20
1295
原创 高斯牛顿法求非线性最小二乘的步骤和c++代码实现
slam图优化的本质是一个非线性优化问题.Gauss-Newton求解步骤:1 线性化误差函数:2 构建线性系统:3 求解线性系统:4 更新解,并不断迭代直至收敛:一个简单的代码实现:一维参数xy,高维变为对应的矩阵即可.#include <iostream>#include <opencv2/opencv.hpp>#include <Eigen/Core>#include <Eigen/Dense>u.
2022-03-25 18:06:33
5425
原创 里程计消息geometry_msgs::PoseWithCovarianceStamped格式
分为两部分,消息头和位姿:std_msgs/Header headergeometry_msgs/PoseWithCovariance poseheader部分:(1) unit32 seq# sequence ID: consecutively increasing ID (2)time stamp#Two-integer timestamp that is expressed as: # * stamp.sec: seconds (stamp_secs) since ep
2022-03-24 14:55:49
2331
原创 loam框架的注意点,公式推导细节,lego-loam对其的改进及自身不足,
流程介绍及注意细节:总体结构:1.激光slam框架loam的流程图如下。slam的过程使用帧间匹配作为里程计,但在实际工程应用中,可以与先验地图做匹配实现定位,免去了不必要的建图流程(但又会牵扯出地图更新问题,即long-term slam)。特征提取部分:2.loam利用机械式多线激光雷达模型,将点云投影到为透视图,这样在单帧点云中,进行临近搜索和计算的效率会特高很多。3.投影的方式有两种:1)可根据点云坐标解算每个点所属的行和列,这样计算量大,对16线雷达(如velodyne
2022-03-22 22:23:44
2275
7
原创 nlopt优化库,使用汇总
介绍:https://www.guyuehome.com/35109c++库使用规范:https://www.guyuehome.com/35169官网:https://nlopt.readthedocs.io/en/latest/NLopt_Algorithms/lidar_align--校准激光雷达和imu校准程序中使用nlopt:https://blog.youkuaiyun.com/qq_32761549/article/details/120044319?spm=1001.2014
2022-03-22 16:14:20
767
原创 Eigen基本用法,自查
介绍:Eigen 是一个 C++ 开源线性代数库它提供了快速的有关矩阵的线性代数运算,还包括解方程等功能在使用时,只需引入 Eigen 的头文件即可,不需要链接它的库文件基本使用://声明一个 2*3 的 float 矩阵Eigen::Matrix<float, 2, 3> matrix_23;//声明一个 三维向量 Eigen::Vector3d v_3d;Eigen::Matrix3d matrix_33 = Eigen::Matrix3d::Zero();
2022-03-21 16:36:33
1537
原创 leetcode56报错:error: reference to non-static member function must be called
解决办法:核心思想:修改定义方式,去掉this指针.有两种方式:1.将cmp函数定义在class之外,就不会有this指针2.将cmp定义为静态成员函数,也不会有this指针,即:
2022-03-21 10:23:29
1002
2
原创 点云匹配算法NDT公式推导过程说明,总结
NDT的具体原理和步骤:https://blog.youkuaiyun.com/qq_35102059/article/details/121694705?spm=1001.2014.3001.5501误差函数的构建:将点云Y投影到点云X坐标系下,迭代计算最大重合概论。优化过程及注意事项:1.计算点云x的均值和方差,根据预测(可以使imu给的等)的位姿将Y投影到X,再对数化,将问题转化为求目标函数的最小值。2.下图为借助泰勒展开,化简最小化问题,需要注意的是R,t和p均表示位姿转换。3.
2022-03-08 22:18:39
1874
1
vscode-server-linux-x64.tar.gz
2023-09-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人