- 博客(97)
- 收藏
- 关注
原创 C++ Primer Plus第五版+习题重点笔记(p250-300)
这样的成员必须符合constexpr函数的所有要求,它们是隐式const的(参见7.1.2节,第231页)。和其他的成员函数一样,我们既可以在类的内部也可以在类的外部定义静态成员函数。当在类的外部定义静态成员时,不能重复static关键字,该关键字只出现在类内部的声明语句。与初始化数组元素的规则(参见3.5.1节,第101页)一样,如果初始值列表中的元素个数少于类的成员数量,则靠后的成员被值初始化(参见3.5.1节,第101页)。因此当成员函数定义在类的外部时,返回类型中使用的名字都位于类的作用域之外。
2024-06-17 13:26:12
922
1
原创 C++ Primer Plus第五版+习题重点笔记(p201-250)
当我们想把数组作为函数的形参时,有三种可供选择的方式:一是声明为指针,二是声明为不限维度的数组,三是声明为维度确定的数组。另一方面,如果形参是某种类型的指针或引用,则通过区分其指向的是常量对象还是非常量对象可以实现函数重载,此时的const是底层的。如果引用所引的是函数开始之前就已经存在的对象,则返回该引用是有效的:如果引用所引的是函数的局部变量,则随着函数结束局部变量也失效了,此时返回的引用无效。局部变量不能作为默认实参。如果函数返回指针、引用或类的对象,我们就能使用函数调用的结果访问结果对象的成员。
2024-06-11 14:37:23
872
原创 Orange Pi KunPeng Pro 从零到部署ROS2 humble+Cartographer
非常高兴接到官方邀请,能够为orange pi pro做一次简单的开箱测评, 这是一款极具性价比的开发板,下面是一些参数信息
2024-05-29 12:06:06
1607
原创 【Ubuntu】 Github Readme导入GIF
在本地项目文件夹中打开README.md文件,然后将gif链接添加进去,至于添加的位置,我们想在哪个位置展示该gif图片就插入在哪个位置即可,
2024-04-11 10:42:40
568
原创 【力扣hot100】25 K个一组反转链表(c++)解析
思路和模拟方法相同,首先判断链表是否有K个数,不足则直接返回head。否则对前K个数进行反转,然后进行递归处理。这是一题比较简单的hard。
2024-03-28 15:21:16
329
原创 【力扣hot100】23 合并K个排序链表(c++)解析
假设链表a和b的长度都是 n,如何在 O(n)的时间代价以及 O(1)的空间代价完成合并?这个问题在面试中常常出现,为了达到空间代价是 O(1),我们的宗旨是「原地调整链表元素的next 指针完成合并」。,你可以把 head 设置为一个虚拟的头(也就是head 的),这是为了方便代码的书写,。我们需要。注意这里的描述,tail不是下一个插入的位置,aPtr和 bPtr所指向的元素处于「待合并」的状态,也就是说它们还没有合并入最终的链表。当然你也可以给他们赋予其他的定义,但是定义不同实现就会不同。
2024-03-27 14:57:56
917
原创 【力扣hot100】207 课程表(c++、python)解析
相关题目: 210 课程表2这是一题经典的「拓扑排序」问题给定一个包含 n 个节点的有向图 G,我们给出它的节点编号的一种排列,如果满足:对于图 G 中的任意一条有向边 (u,v),u 在排列中都出现在 v 的前面那么称该排列是图 G 的「拓扑排序」*1.如果图 G 中存在环(即图 G 不是「有向无环图」),那么图 G 不存在拓扑排序。这是因为假设图中存在环 “x1,x2,…,„,í,那么 x1在排列中必须出现在 xn 的前面,但 xn同时也必须出现在 x1的前面,因此不存在一个满足要求的排列
2024-03-26 17:03:56
1171
原创 【力扣】823 带因子的二叉树 (c++)解析
传入数组,从小到大排序,初始化动态数组,结果res以及用于取余的mod,遍历arr每个元素,每个元素都可以作为一个单节点二叉树,先设为1,然后设立两个指针,一个指向首位元素,一个指向i-1,如果 arr[left] * arr[right]大于arr[i],则减小right的值,直到乘积小于arr[i];//状态转移方程,结束遍历这一层的dp[i],加入到结果中。
2023-08-29 10:41:25
205
原创 【力扣】 59 螺旋矩阵 (c++)解析
输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
2023-07-22 19:06:39
327
原创 【力扣】209 长度最小的子数组(c++)解析
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。输入:s = 7, nums = [2,3,1,2,4,3]解释:子数组 [4,3] 是该条件下的长度最小的子数组。
2023-07-22 14:54:23
183
原创 【力扣】27 26 283 844 977 移除数组 (c++)解析
示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。示例 2: 给定 nums = [0,1,2,2,3,0,4,2], val = 2, 函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。元素的顺序可以改变。
2023-07-22 13:12:13
515
原创 【力扣】 704 35 34 69 367 二分查找 (c++)解析
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。注意点:注意左闭右闭边界更新的取值。
2023-07-21 17:09:18
332
原创 Ubuntu18.04 拯救者R9-7945HX 4060 配置ZED 2i代双目相机驱动+ORBSLAM2
要确认已经安装了显卡驱动才能使用显卡,有些电脑可能已经安装了显卡驱动,笔者建议无论安装与否都可以更新下驱动,因为对应型号的显卡驱动一直在更新。下载的ZED SDK名称为ZED_SDK_Ubuntu18_cuda11.4_v3.6.1.run,说明适配的是cuda11.4。安装后重启电脑,在终端输入如下指令可以查看电脑显卡驱动信息。通过这张图我们可以看到CUDA最高的安装版本为12.1。这里一定要注意CUDA与SDK的版本号对应。
2023-07-19 17:34:50
1775
原创 Intel Realsense D405 在Ubuntu18.04下使用kalibr标定
创建工作站安装realsense_ros时修改constants.h文件中的编译工程环境,安装realsense_roscd ..如果说你重新安装了librealsense版本,那么这里需要重新对realsense_ros进行编译这里我之前没注意对应问题,重新装了librealsense那么就涉及到librealsense的卸载问题a. 如果您使用了apt-get安装,请运行以下命令卸载其中${ROS_DISTRO}应替换为您正在使用的ROS发行版,例如melodic或noetic。
2023-05-26 13:21:15
1966
5
原创 ACPI BIOS Error (bug): Failure creating named object
当安装完成进入系统后, sudo gedit /etc/default/grub,找到GRUB_CMDLINE_LINUX_DEFAULT=quiet splash,然后改成GRUB_CMDLINE_LINUX_DEFAULT=quiet splash nomodeset, 保存文件,然后 sudo update-grub。),点击"e"进入edit mode,找到"quiet splash —",把“—”换成“nomodeset”,然后F10继续安装。重启后在ubuntu 按e进入edit mode。
2023-05-22 15:16:25
4477
1
原创 NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver.解决
重启系统,在进行ubuntu启动引导的界面时,就是刚开始叫你选择操作系统的界面,选择“ubuntu高级选项”(双系统有这一选项,单一Ubuntu我也不确定),选择一个以前的内核版本,新版本是5.3.0-40-generic,然后选择一个离新版本最接近的低版本内核5.3.0-26-generic,然后成功进入系统。在安装显卡驱动时,弹出“输入密码界面”的提示中说,“需要将Secure Boot的状态”(当时未截图,大体是这个意思)。4会变,按照提示输入多次密码的第x位,进行确认。
2023-04-28 14:30:19
1240
1
原创 【力扣】7 整数反转 (c++)解析
但是题目要求不允许使用64位整数,也就是运算过程中的数字必须在32位有符号整数的范围内,因此我们不能直接按照上面式子进行计算,需要找其他方式。记rev是翻转之后的数字,为了完成翻转,我们可以重复弹出x末尾的数字,将其推入rev的末尾,直到x是0。题目需要判断推入数字是否溢出,要在推入数字之前判断,如果溢出那么不等式不成立返回0。
2023-04-05 13:26:16
244
原创 力扣算法 6.N 字形变换
对于其余的情况,考虑创建一个二维矩阵,然后在矩阵上按Z字形填写字符串s,最后逐行扫描矩阵中的非空字符,组成答案。具体来说,设当前填写的位置是(x,y)即矩阵的x行y列。根据题意,当我们在矩阵上填写字符时,会向下填写r个字符,然后向右上继续填写r-2个字符,最后回到第一行,因此Z字形变换的周期t=r+r-2=2r-2,每个周期会占用矩阵上的1+r-2=r-1列。因此我们有[n/t]个周期(最后一个周期视作完整周期),乘上每个周期的列数,得到矩阵的列数c=[n/t]*(r-1)。
2023-04-03 16:23:59
556
原创 【力扣】5 最长回文子串 (c++)解析
所提到的都是建立在子串长度大于2的前提之上的,还需要考虑动态规划中的边界条件,也就是子串的长度为1或者2.对于长度为1的子串,它显然是一个回文串;需要注意的是,在状态转移方程中,我们是从长度较短的字符串向长度较长的字符串进行转移的,因此需要注意动态规划的循环顺序。因此,可以使用动态规划解决本体,使用P(i,j)表示字符串s的第i到j个字母组成的串s[i:j] 是否为回文串。也就是说,只有s[i+1:j-1]是回文串,并且s的第i和j个字母相同时,s[i:j]才会是回文串。
2023-04-03 10:53:28
512
原创 【跟我一起读《视觉惯性SLAM理论与源码解析》】第十一章 ORB-SLAM2中的跟踪线程
在跟踪线程中一般认为分为四个阶段参考关键帧跟踪,恒速模型跟踪,重定位跟踪,局部地图跟踪。这里面比较复杂的是重定位跟踪,可好好看看EPnP原理。
2023-03-03 14:19:22
638
原创 【跟我一起读《视觉惯性SLAM理论与源码解析》】第十章 ORB-SLAM2中的地图初始化
这一章节主要讲了单目初始化以及双目初始化的事情,大部分篇幅给了单目地图初始化。
2023-02-27 18:05:46
652
原创 【跟我一起读《视觉惯性SLAM理论与源码解析》】第九章 地图点、关键帧以及图结构
我觉得这里最需要整理每一个实现的策略,有些算法非常巧妙比如说删除关键帧,其一子关键帧在寻找到新父后,直接升级成父加入其它子关键帧的父库中,如果是在子关键帧找不到父,直接把爷爷当成父,很有意思。这一章主要讲了一些基本内容,包括ORB-SLAM2中地图点,关键帧图结构的问题。
2023-02-27 10:55:21
704
原创 【跟我一起读《视觉惯性SLAM理论与源码解析》】第八章 ORB-SLAM2中的特征匹配
特征匹配在ORB-SLAM2中是很重要的内容,函数有多次重载,一般而言分为以下。这里还是需要反复琢磨每一个细节,这里只做一个基本的概括。
2023-02-24 20:50:14
825
原创 【跟我一起读《视觉惯性SLAM理论与源码解析》】第七章ORB特征提取
这些问题其实如果看过源代码都是轻松能回答上的,写在这里提醒自己不断复习。第七章是关于ORB特征提取,大部分是来自课上讲的部分,全当复习哈哈。从第七章到第十四章是ORB-SLAM2的部分。十五章到十九章是ORB-SLAM3的部分。
2023-02-23 20:27:46
596
原创 【跟我一起读《视觉惯性SLAM理论与源码解析》】第五章&第六章 对极几何&图优化库的使用
g2o线性求解曲线参数的具体步骤:第一步,创建一个线性求解器,使用不同的线性求解法例如cholesky,scparse,pcg,dense cholesky,eigen;第二步创建块求解器,分为固定变量的求解器以及可变尺寸的求解器,并用上面的线性求解器初始化;第三步,创建总求解器,从GN,LM,Dogleg中选择一个再用块求解器初始化;这几个算法继承同一个类OptimizationWithHessian,OptimizationWithHessian又继承于OptimizaitonAlgorithm;第四步
2023-02-23 11:21:48
777
原创 【跟我一起读《视觉惯性SLAM理论与源码解析》】第三章&第四章 SLAM中常用的数学基础知识&相机成像模型
针孔相机的原理在十四讲里讲得挺详细的,这里补充了孔径大小对于成像的影响,孔径越小成像越清晰,但是成像亮度越低;实际用的相机镜头使用了透镜,它可以汇聚光线,解决了成像清晰和高亮度不能兼顾的问题
2023-02-22 16:24:20
703
原创 【跟我一起读《视觉惯性SLAM理论与源码解析》】第二章 编程及编译工具
只用一个cmake文件来管理,最经典的就是ORB-SLAM2的cmake文件。如果用多层cmake来管理,可以看十四讲13章代码的管理模式,通过添加子文件夹add_subdirectory()构建框架。首先是介绍C++新特性,这里提到了列表初始化,auto,循环体,Lambda表达式,参数模板的具体使用,对于C++这些还是基础的,如果不会的话建议去看C++ Primer Plus这本书,p15页有一个改写可以实践一下。如何合并两个库的名字?find_package如何使用的,不使用怎么手动添加指定路径?
2023-02-21 19:22:10
789
原创 视觉SLAM 面试题 4 IMU预积分为什么可以避免重复传播?
IMU预积分与通常积分相比,解决了初始状态更新时以及加速度计、陀螺仪偏差变化时所导致的积分重新计算问题。其主要思路是计算两个关键帧之间的状态增量,当初始状态变化,就在原来增量基础上乘以初始状态的变化量;当偏差变化时,则通过求取预积分量关于偏差的雅各比,实现预积分的一阶线性近似更新。来源:旷视slam算法岗位。
2023-02-08 14:14:43
368
原创 视觉SLAM 面试题 3 八点法为什么要归一化?
2 归一化操作有一个作用就是把像素点都统一到一个坐标系下,无论是用哪八个点都在一个统一坐标系下,所以说可以排除选取点对对结果的影响。
2023-02-08 14:10:34
365
原创 【力扣】2 两数相加 (c++) 解析
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入:l1 = [2,4,3], l2 = [5,6,4]请你将两个数相加,并以相同形式返回一个表示和的链表。解释:342 + 465 = 807。输出:[7,0,8]
2023-02-07 18:06:32
155
原创 【力扣】1 两数之和 (c++)解析
当我们使用遍历整个数组的方式寻找 target - x 时,需要注意到每一个位于 x 之前的元素都已经和 x 匹配过,因此不需要再进行匹配。而每一个元素不能被使用两次,所以我们只需要在 x 后面的元素中寻找 target - x。如果存在,我们需要找出它的索引。这样我们创建一个哈希表,对于每一个 x,我们首先查询哈希表中是否存在 target - x,然后将 x 插入到哈希表中,即可保证不会让 x 和自己匹配。最容易想到的方法是枚举数组中的每一个数 x,寻找数组中是否存在 target - x。
2023-02-07 16:38:53
177
原创 视觉SLAM 面试题 2 H矩阵是什么?说出几个典型的使用场景
上,可以利用这种矩阵进行运动估计,典型使用场景有无人机携带的俯视相机等。来源:字节跳动pico slam算法岗。时,此时平移为零,基础矩阵自由度下降,,选用单应矩阵来恢复位姿。
2023-02-07 11:12:45
580
原创 视觉SLAM 面试题 1 ORB-SLAM2为了特征点均匀化做了哪些处理?
就是最开始整幅图像是一个节点,然后会对该节点进行划分,分成四个,然后将特征点都分别分配到这四个节点。后面就是不断重复类似的操作,划分节点,直到节点数等于所需的特征点数,然后只保留响应值最大的那个特征点。其实这里的操作也有点是把图像进行分块,直到分出来的块数等于所需的节点数,然后只留下质量最好的特征点。这时候特征点的数量往往是超过我们需要的点的数量,且只是初步进行了一个均匀化;1)构建图像金字塔,构建八层的图像金字塔,在每层图像上提取特征点,具体每层提取多少数量的特征点都事先通过。
2023-02-07 11:07:58
422
原创 【星球】【slam】 研讨会(6) AI技术人员如何做学习规划
找到自己的研究兴趣点,并初步实践(打比赛,有deadline自驱性比较强,泡实验室)站在巨人肩膀上,看开源代码,最新综述,全新方向慎重选择。主动和导师,师兄师姐沟通,了解他们的研究方向和进展。不要有打工人心态,要抱着为自己而学习,工作。关注行业的动态,产品的落地,技术发展的趋势。早进实验室做项目,参与到实际的工程项目中。论文从0到1最难,不要贪大求全,小幅迭代。注重高效率,编程规范,项目开发快速迭代。发小论文,做项目,刷题找实习,找工作。时间紧迫,上课,做项目,研究课题。如果走学术道路,一定要早出成果。
2023-01-28 20:01:43
361
视觉SLAM论文导读 2 Roadside HD Map Object Reconstruction Using Mono
2023-02-10
视觉SLAM论文导读 1 Vision-based localization methods under GPS-denied
2023-02-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人