视觉SLAM ch3补充——在Linux中配置VScode以及CMakeLists如何添加Eigen库
ch3中的所有代码,除了在kdevelop中运行,还可以在VScode中运行。下面将简要演示配置过程,代码不再做解答,详细内容在下面的文章中。(这一节中的pangolin由于安装过程中会出现很多问题,且后续内容用不到该平台,所以暂时不进行安装)
视觉SLAM ch3—三维空间的刚体运动https://blog.csdn.net/Johaden/article/details/141023487
其次,我之前的文件推荐了一些软件可以下载,在看下面文章之前,需要至少安装VScode以及git等。
git等常用工具以及cmakehttps://blog.csdn.net/Johaden/article/details/140715733
下载vscode时会遇到很多问题,可以按照下面的博客逐步下载
ubuntu 20.04系统下安装VSCode(配置C/C++开发环境)https://www.cnblogs.com/icmzn/p/16244665.html
一、基本插件
将命令用不同颜色显示以及tab自动补全。
ROS现在暂时用不上,需要的时候再安也行。(建议先不安,拓展安多了容易冲突)
重点:没有Edit Configurations(JSON)怎么办!?
其实这一步是第二部分中需要用到的,但是我在这一步后面卡了两天,现在大家可以现在就自检一下,按ctrl+shift+p后有没有红框内的选项卡,我的刚开始就是没有。
如果你也很不幸,没有这个选项的话(其实C/C++开头的有很多,如果你只有七八个,那肯定就是出问题了),我的建议是不要看网上的别的资源了,因为我看了两天,也实践了两天。无论怎么调整文件、设置都是徒劳的。究其根本就是安装的时候没安好。只能重装了,其实很好装,就是找到这条路的过程是艰辛的。
重装成功之后我也发了一篇博客,链接放在下面了:
在Ubuntu中重装Vscode(没有Edit Configurations(JSON)以及有错误但不标红波浪线怎么办?)https://blog.csdn.net/Johaden/article/details/141193093 重装之后需要重新安拓展
二、includePath配置
在使用vscode调库的时候,即使我们有头文件,但是总会出现报错,如下图。
以ch3为例,在ch3中打开终端后输入code .命令后,弹出vscode。
当打开后eigen头文件标红该怎么办?
1.没装过eigen需要自装eigen
sudo apt-get install libeigen3-dev
2.方法一:自动修复
方法二:
(1)ctrl+shift+p,选择C++:Edit Configurations(JSON)
(2)添加库所在位置(使用locate命令查询在哪)
初次使用lacate可能需要安装:
sudo apt install mlocate
我们发现当输入locate core的时候,输出了很多个答案,我们也不知道哪个是,所以结合使用grep命令(初次需要安装)
所以我们就知道他们的路径了,也就是/uer/include/engen3/,然后复制下来加在配置文件里。
保存后,原来的cpp文件报错消失
有的时候,/usr/include下面的文件不只是有Eigen,所以如果我们不只是用到了eigen的话,我们只需要使用通配符即可,如下。 (搜索可能比较慢,但是不太容易报错)
三、嵌入式终端
打开需要按ctrl+·,键位图如下
我们可以在里面通过cmake命令生成可执行文件。
(如果你没有build,那就要mkdir build,然后再进去)
注意:其他功能,比如SSH、Debug都是需要配置的,比较麻烦。未必一定要追求在IDE里运行程序,在写一个大型项目或调试时,一般可以采用直接cout该变量的方式来看该值发生了怎样的变化,调试需要配置的过程非常困难(cmakelist、编译器、setting等)。除非安装一些插件,比如cmake tools,无需配置,直接点击窗口下面的“bug虫”的按钮就行,不做过多介绍。
还有就是删目录的时候,一般都在build下面输入rm -rf *,这个就可以删除全部内容(当然直接在可视化界面删除build文件夹也可以)。但是,用上面命令的时候一定要注意,不要写成rm -rf /*,这会把根目录全删除!!一定要注意!!
四、知识点补充:CMakeLists如何添加Eigen库
以该处的代码为例,我们不知道它的“包”,也就是动态库在哪里,这时候我们就可以使用find_package(xxx),如果找到了,会返回两个东西,也就是头文件“include_directories(${xxx_INCLUDE_DIRS})”和动态库静态库“target_link_libraries(xxx_LIBRARIES})”
(PS:find_package(xxx)中的xxx必须和xxx.config.cmake中的xxx对应上)
比如之前上一节的代码可以这样写:
我们怎么知道那个xxx是什么?也就是为什么要写Eigen3?
(1)locate xxx -> include_directories(“路径”)
(2)find_package(xxx):
①REQUIRED:
find_package(xxx REQUIRED)
时,CMake 将尝试定位名为 xxx
的包,并且如果找不到该包,则构建过程将失败,cmake过程会终止,并显示一条错误信息说明缺少所需的包。这确保了在没有正确安装或配置所需依赖项的情况下,不会尝试编译项目,从而避免了潜在的构建失败或运行时错误。
如果不使用 REQUIRED
关键字,即使用 find_package(xxx)
,那么 CMake 会尝试查找包,但如果找不到,它不会终止构建过程,而是简单地继续下去,就像没有找到这个包一样。在这种情况下,你的项目可能需要在运行时动态检查是否存在这些库,或者实现一些替代逻辑来处理缺失的依赖。
②locate xxx | grep 如cmake,就是要找出xxx 相关的 CMake 配置文件。
只要找到类似于这个红框的格式,就代表它可以被Eigen找得到。而xxx代表的是Config前面的那个,也就是Eigen3。所以就得到了xxx的格式。
还有,{}里面的是大小写呢?如下,文档中怎么写,这就这么写。
gedit 上面的路径
如上图,Eigen文档中写的就是大写,所以我们也要写大写。
相关文章:
视觉SLAM ch3补充——在Linux中配置VScode以及CMakeLists如何添加Eigen库
ch3中的所有代码,除了在kdevelop中运行,还可以在VScode中运行。下面将简要演示配置过程,代码不再做解答,详细内容在下面的文章中。(这一节中的pangolin由于安装过程中会出现很多问题,且后续内容用不到该平台…...
开关电源:优化电子产品中的能源使用
电压转换器是许多技术系统的支柱。根据应用的不同,所需的电源单元由变压器、整流器 AC/DC 转换器实现。当高性能开关电源尚未上市时,几乎只使用 50 Hz 变压器解决方案。 电源注意事项 电能几乎完全以三相电流的形式提供,系统电压为 10 ...3…...
Java语言程序设计——篇十三(2)
🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿 欢迎大家:这里是我的学习笔记、总结知识的地方,喜欢的话请三连,有问题可以私信🌳🌳&…...
python结合csv和正则实现条件筛选数据统计分数
前景提要: 有一个项目的数值和员工统计的对不上,如果一页一页翻找自己手动算,一个就有16、7页, 功能实现 1、创建csv文件 需要将每一个模块的所有数据头提取出来,这个可以直接用爬虫或者手工复制出来,因…...
Ubuntu系统的基础操作和使用|Linux|安装|网络连接|更新与升级系统|系统维护|故障排除|监控|桌面环境|虚拟机|快捷键
目录 1. Ubuntu系统的安装与初步设置 1.1 下载与安装Ubuntu 1.2 创建用户和设置密码 1.3 配置网络连接 1.4 更新与升级系统 2. Ubuntu的基本操作 2.1 文件与目录管理 2.2 系统进程管理 2.3 软件安装与管理 2.4 权限与用户管理 3. 系统维护与故障排除 3.1 系统日志查…...
day 38
2824.统计和小于目标的下标对数目 int countPairs(int* nums, int numsSize, int target){int x0;for(int i0;i<numsSize;i){for(int ji1;j<numsSize;j){if(nums[i]nums[j]<target){x;}}}return x; }2951.找出峰值 int* findPeaks(int* mountain, int mountainSize,…...
352532
c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话: 知不足而奋进,望远山而前行&am…...
Day.38 | 1143.最长公共子序列 1035.不相交的线 53.最大子序和 392.判断子序列
1143.最长公共子序列 要点:dp[i][j] dp[i - 1][j - 1] 1; dp[i][j] max(dp[i - 1][j], dp[i][j - 1]); class Solution { public:int longestCommonSubsequence(string text1, string text2) {vector<vector<int>> dp(text1.size() 1, vector<…...
pytorch 3 计算图
计算图结构 分析: 起始节点 ab 5 - 3ac 2b 3d 5b 6e 7c d^2f 2e最终输出 g 3f - o(其中 o 是另一个输入) 前向传播 前向传播按照上述顺序计算每个节点的值。 反向传播过程 反向传播的目标是计算损失函数(这里假设为…...
一文吃透:暗水印是什么?企业防泄密可以加暗水印吗?
设计部主管:昨天下班的时候我在办公室捡到一张文件,上面可是我们最新产品的设计草稿,严禁打印的,到底是谁干的? 员工:办公室没有监控,似乎很难查到哦。 网络部经理:不用担心&#…...
Ajax-02.Axios
Axios入门 1.引入Axios的js文件 <script src"js/axios-0.18.0.js"></script> Axios 请求方式别名: axios.get(url[,config]) axios.delete(url[,config]) axios.post(url[,data[,config]]) axios.put(url[,data[,config]]) 发送GET/POST请求 axios.get…...
NodeJS的核心配置文件package.json和package.lock.json详解
package.json 文件 package.json 文件是 Node.js 项目的核心配置文件,它包含了项目的基本信息、依赖关系以及一些脚本命令等。以下是 package.json 文件的主要字段说明: name:项目的名称,必须是小写,可以包含字母、数…...
开源数据采集和跟踪系统:助力营销决策的关键工具
开源数据采集和跟踪系统:助力营销决策的关键工具 在现代营销中,数据是最重要的资产之一。了解用户行为、优化广告效果、提升转化率,这一切都离不开精准的数据分析。为了帮助商家更好地掌握这些数据,市场上出现了许多开源的数据采…...
Luminar Neo for Mac/Win:创新AI图像编辑软件的强大功能
Luminar Neo,这款由Skylum公司倾力打造的图像编辑软件,为Mac和Windows用户带来了前所未有的创作体验与编辑便利。作为一款融合了先进AI技术的图像处理工具,Luminar Neo以其独特的功能和高效的操作流程,成为了摄影师、设计师及摄影…...
Mac平台M1PRO芯片MiniCPM-V-2.6网页部署跑通
Mac平台M1PRO芯片MiniCPM-V-2.6网页部署跑通 契机 ⚙ 2.6的小钢炮可以输入视频了,我必须拉到本地跑跑。主要解决2.6版本默认绑定flash_atten问题,pip install flash_attn也无法安装,因为强制依赖cuda。主要解决的就是这个问题,还…...
MyBatis:Maven,Git,TortoiseGit,Gradle
1,Maven Maven是一个非常优秀的项目管理工具,采用一种“约定优于配置(CoC)”的策略来管理项目。使用Maven不仅可以把源代码构建成可发布的项目(包括编译、打包、测试和分发),还可以生成报告、生…...
获取链表中间位置的两种方法方法
方法一: 我们可以计算链表节点的数量,然后遍历链表找到前半部分的尾节点。 方法二: 我们也可以使用快慢指针在一次遍历中找到:慢指针一次走一步,快指针一次走两步,快慢指针同时出发。当快指针移动到链表的末尾时&am…...
第二十天的学习(2024.8.8)Vue拓展
昨天的笔记中,我们进行的项目已经可以在网页上显示查询到数据库中的数据,今天的笔记中将会完成在网页上进行增删改查的操作 1.删除表中数据 现在网页上只能呈现出数据库中的数据,我们首先添加一个删除按钮,使其可以对数据库数据…...
微信小程序教程011:全局配置:Window
文章目录 1、window1.1、`window`-小程序窗口的组成部分1.2、了解 window 节点常用的配置项1.3、设置导航栏的标题1.4、设置导航栏的背景色1.5、设置导航栏的标题颜色1.6、全局开启下拉刷新功能1.7、设置下拉刷新时窗口的背景色1.8、设置下拉刷新时 loading 的样式1.9、设置上拉…...
Tomcat服务器和Web项目的部署
目录 一、概述和作用 二、安装 1.进入官网 2.Download下面选择想要下载的版本 3.点击Which version查看版本所需要的JRE版本 4.返回上一页下载和电脑和操作系统匹配的Tomcat 5. 安装完成后,点击bin目录下的startup.bat(linux系统下就运行startup.sh&…...
PCIe学习笔记(22)
Transaction Ordering Transaction Ordering Rules 表2-40定义了PCI Express Transactions的排序要求。该表中定义的规则统一适用于PCI Express上所有类型的事务,包括内存、I/O、配置和消息。该表中定义的排序规则适用于单个流量类(TC)。不同TC标签的事务之间没有…...
Vue3 依赖注入Provide / Inject
在实际开发中,我们经常需要从父组件向子组件传递数据,一般情况下,我们使用 props。但有时候会遇到深度嵌套的组件,而深层的子组件只需要父组件的部分内容。在这种情况下,如果仍然将 prop 沿着组件链逐级传递下去&#…...
Python | Leetcode Python题解之第332题重新安排行程
题目: 题解: class Solution:def findItinerary(self, tickets: List[List[str]]) -> List[str]:def dfs(curr: str):while vec[curr]:tmp heapq.heappop(vec[curr])dfs(tmp)stack.append(curr)vec collections.defaultdict(list)for depart, arri…...
React状态管理:react-redux和redux-saga(适合由vue转到react的同学)
注意:本文不会把所有知识点都写一遍,并不适合纯新手阅读 首先Redux是一种状态管理方案,本身和react并没有什么联系,redux也可以结合其他框架来用。 react-redux是基于react的一种状态管理实现,他不像vuex那样直接内置在…...
刷题技巧:双指针法的核心思想总结+例题整合+力扣接雨水双指针c++实现
双指针法的核心思想是通过同时操作两个指针来遍历数据结构,通常是数组或链表,以达到优化算法性能的目的。具体来说,双指针法能够减少时间复杂度、空间复杂度,或者简化逻辑结构。以下是双指针法的几个核心思想: ps 下面…...
什么是前端微服务,有何优势
随着互联网技术的发展,传统的单体应用架构已经无法满足复杂业务场景的需求。微服务架构的兴起为后端应用的开发和部署提供了灵活性和可扩展性。与此同时,前端开发也经历了类似的演变,前端微服务作为一种新兴的架构模式应运而生。 一、前端微服…...
小论文写作——02:编故事
一篇论文,可以发水刊,也可以发顶刊顶会,这两者的区别就是一个故事编的好不好。 你的论文ABC,但不能之说有ABC。创新就是看你故事编的怎么样?创新是编出来的。 我们要说:我发现了问题,然后准备…...
GIT企业开发使用介绍
0.认识git git就是一个版本控制器,记录每次的修改以及版本迭代的一个管理系统 至于为什么会有git的出现,主要是为了解决一份代码改了又改,但最后还是要第一版的情况 git 可以控制电脑上所有格式的文档 1.安装git sudo yum install git -y…...
文件上传-前端验证
查看源代码(找验证代码) 1、源代码直接找到验证代码 示例: function checkFileExt(filename){var flag false; //状态var arr ["jpg","png","gif"]; //允许上传的文件//取出上传文件的扩展名var index f…...
ROT加密算法login-RESERVE
ROT算法(字母轮换加密) 也称为Caesar加密,是一种简单的字母替换加密算法。它通过将字母表中的每个字母向后(或向前)移动固定的位置来加密文本。 加密步骤: 选择一个固定的偏移量(通常是1到25之间的整数)&…...
什么是网站前置审批/广州seo排名收费
Greenberg等。(2007年)审查了有关潮汐和潮汐流模拟的足够水平分辨率的需求。 关键考虑因素如下。 潮汐运动 Δx≤(T√gH)/ n 其中Δx是网格大小;T是潮汐期;g是重力;H是平均水深;n是节…...
wordpress自动添加动态内容/关键词搜索热度查询
Fiddler中的inspector的意思是“检查器”的意思,用来显示界面左侧抓取到的数据列表中选定数据的请求和响应。 1 打开inspector 可以使用两种方法来打开Fiddler的inspector,一种是在数据列表中双击某个数据就可以打开右侧面板,在右侧面板中选…...
b2c网站建设平台/西地那非片的功能主治
机器语言:直接用计算机能听的懂得二进制去编写程序,需要了解硬件细节 优点:执行效率高 缺点:开发效率低 汇编语言:用英文单词取代二进制指令去编写程序 优点:开发效率高于机器语言 缺点:执行效率低于机器语言 高级语言:不需要了解硬件细节 编译型(C语言):谷歌翻译 解释型(Pytho…...
湘潭外包网络推广公司/seo推广是什么意思
多线程 当我们写的爬虫是单线程的时候,一旦到一个地方卡的不动了,那就永远的等下去吧,我们可以使用多线程来改变这个问题。 爬虫使用多线程来处理网络请求,使用线程来处理URL队列中的url,然后将url返回的结果保存再另…...
个人免费建网站/百度秒收录蜘蛛池
使用Action、Func和Lambda表达式 在.NET在,我们经常使用委托,委托的作用不必多说,在.NET 2.0之前,我们在使用委托之前,得自定义一个委托类型,再使用这个自定义的委托类型定义一个委托字段或变量。.NET 2.0给我们带来了Action、Func两个泛型委托ÿ…...
大淘客平台怎么做分销网站/电子商务seo名词解释
作者:胡存存爱可生 DBA 团队成员,主要负责 MySQL 故障处理和 SQL 审核优化。对技术执着,为客户负责。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。MySQ…...