《视觉slam十四讲》初学小白笔记_视觉slam入门文章-程序员宅基地

技术标签: linux  cmake  

阅读《视觉slam十四讲》,留点记录,参考价值不大,自己写着看,为写论文留点素材~

主要参考https://blog.csdn.net/qq_32618327/category_9357175.html?utm_source=ffzl_BWzd 感谢这位博主,写的很详细了。

1.视觉SLAM框架

之后补充

2.linux编程基础(6.28)

在/home下新建一个文件夹Test用来存放测试程序。在/home/Test中新建一个文件helloSLAM.cc,输入如下内容

#include <iostream>
using namespace std;

int main(int argc,char** agrv){
    cout<<"hello slam"<<endl;
    return 0;
}

1.使用 g++编译

g++ helloSLAM.cc  #将helloSLAM.cc编译成可执行文件

生成a.out文件,在终端进入文件夹目录后,输入如下指令运行程序

./a.out         #运行程序

2.cmake编译(推荐使用)

在/home/Test中新建CMakeList.txt文件,输入

# 声明要求的 cmake 最低版本
cmake_minimum_required( VERSION 2.8 )

# 声明一个 cmake 工程
project( HelloSLAM )

# 添加一个可执行程序
# 语法:add_executable( 程序名 源代码文件 )
add_executable( helloSLAM helloSLAM.cpp )

为了方便,新建build文件夹用于存放编译生成的中间文件

mkdir build  #新建build文件夹
cd build     #进入文件夹
cmake ..     #编译
make
./helloSLAM  #运行程序

3.库的使用

在Test文件夹中新建一个libhelloSLAM.cc文件

#include <iostream>
using namespace std;

void printHello()
{
    cout << "Hello SLAM" << endl;
}

在CMakeList.txt中添加

# 添加一个库
add_library( hello libHelloSLAM.cpp )

编译工程(同上2),此时build文件夹中出现一个libhello.a的文件

在 Linux 中,库文件分成两种:

  • 静态库,以.a 作为后缀名
  • 共享库,以.so 作为后缀名

若要生成共享库,则在CMakeList.txt文件中添加如下命令

# 添加共享库
add_library( hello_shared SHARED libHelloSLAM.cpp )

编译后,在build文件夹中得到libhello_shared.so文件

编写头文件告诉使用者库文件的内容,就可以调用这个库了

在Test文件夹中创建libhelloSLAM.h文件:

#ifndef LIBHELLOSLAM_H_
#define LIBHELLOSLAM_H_
// 上面的宏定义是为了防止重复引用这个头文件而引起的重定义错误

void printHello();

#endif

编写可执行文件usehello.cc,调用printHello()函数

#include "libhelloSLAM.h"

int main( int argc, char** argv )
{
    // 使用 libHelloSLAM.h 中的 printHello() 函数
    printHello();
    return 0;
}

在CMakeList.txt中添加一个可执行程序的生成命令,链接到刚才使用的库上

# 添加一个可执行程序h
add_executable( usehello usehello.cpp )

# 将库文件链接到可执行程序上
target_link_libraries( usehello hello_shared )
hh

 

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_38336419/article/details/107001049

智能推荐

关于一个CUE文件及多个分轨APE合并成CUE及APE文件的办法_多个cue合并-程序员宅基地

文章浏览阅读7.1k次。 有CUE文件,就比没有简单多了. 1. 用monkey把多个分轨APE文件解压缩成wav格式.2. 修改原cue文件内容,把对应的ape全改成wav3. 用虚拟光驱载入这个cue文件.4. 用EAC抓取此虚拟CD. 生成一个cue及一个ape总文件. _多个cue合并

Linux期末考试题库(超全)-程序员宅基地

文章浏览阅读8w次,点赞339次,收藏2.4k次。Linux期末考试题库选择题在创建Linux分区时,一定要创建( D )两个分区A. FAT/NTFS  B. FAT/SWAP  C. NTFS/SWAP  D.SWAP/根分区在Red Hat Linux 9 中,系统默认的(A)用户对整个系统拥有完全的控制权。A. root  B. guest  C. administrator  D.supervistor.当登录Linux时,一个具有唯一进程ID号的shell将被调用,这个ID是什么( B )A. NID B. PID _linux期末考试题库

WIN10下VS+Fortran+Intel MPI安装、配置、运行笔记_ivf 2018-程序员宅基地

文章浏览阅读2w次,点赞30次,收藏143次。引子笔者因项目需求,需要做Fortran77代码的MPI并行,因此在 WIN10 下安装了 VS2017 和 Intel Parallel Studio XE 2018 Update 3 Cluster Edition for Windows(以下简称IVF2018Cluster) ,并做相应配置,最终以MPI并行的Hello World程序单机环境运行验证。IVF2018Cluster 版本..._ivf 2018

Optimizing Program Performance-- Capability and limitation of Optimizing Compilers_capability andlimitation-程序员宅基地

文章浏览阅读759次。编译器优化代码的时候, 并不是所有的代码都可以优化的。 有下面两种情况,不能优化。 1. Memory aliasing2. function call 例子11 void twiddle1(int *xp, int *yp)2 {3 *xp += *yp;4 *xp += *yp;5 }67 _capability andlimitation

mysql链接远程报错10061_mysql远程连接报10061-程序员宅基地

文章浏览阅读1.9k次。安装mysql后本地链接可以,远程无法连接。1进入mysql2切换mysql3查看root信息最后发现原因是root用户的权限设置是localhost即只允许本地连接。1更新用户表2刷新权限之后再查看发现root用户的权限已经是 % 了,代表所有访问权限。之后再连接就可以连接了。..._mysql远程连接报10061

Win10 VS2019情况下 安装Caffe_vs 需要安装caffe-程序员宅基地

文章浏览阅读5k次。在VS2019下选择安装MSVC v140 生成工具(VS2015的生成工具还是要安装一下的,比较省事。)安装Windows 8.1 SDK(需要这个SDK,否则要改一堆东西吧。)安装cmake,最新版即可。打开VS2015 x64 native cmd设置环境变量set path=c:\Program Files (x86)\Microsoft Visual Studio\2019\..._vs 需要安装caffe

随便推点

细说jquery ui和jqgrid的ASP.NET实现_repeatitems属性-程序员宅基地

文章浏览阅读6.2k次。2012-01-05 22:02 by keepfool, 4835 阅读, 37 评论, 收藏, 编辑前言 数据显示的方式可以通过很多控件来实现,例如服务端的原生GridView,第三方控件ComponentArt、Telerik等,客户端_repeatitems属性

mysql创建表时设置主键id为uuid_mysql创建某个表时给主键定义uuid-程序员宅基地

文章浏览阅读1.3w次,点赞7次,收藏26次。oracel创建uuid为主键的表时可以直接指定default uuid();但是mysql不支持,可以通过触发器实现。下面是创建一个产品表的sql语句。CREATE TABLE `product` ( `id` varchar(32) NOT NULL, `productNum` varchar(50) NOT NULL, `productName` varchar(50) DEF..._mysql创建某个表时给主键定义uuid

ENVI-met学习博客(一):df-envimet插件_envi-met教程 csdn-程序员宅基地

文章浏览阅读4k次,点赞6次,收藏14次。ENVI-met学习博客(一):df-envimet插件插件贡献者:安东内洛·迪·努齐奥(Antonello Di Nunzio)Antonello的githubdf-envimet插件介绍df-envimet(Dragonfly Envimet)代码将Ladybug,Dragonfly和Gismo连接到Envimet,以进行城市小气候分析。它可以创建Envimet 3D模型(INX),基本仿真文件,并读取建筑物和网格中几乎所有的结果。这个插件需要运行在Rhino和Grasshopper之上。它可_envi-met教程 csdn

2.4g无线芯片G350规格书详细介绍_2.4g无线通讯芯片-程序员宅基地

文章浏览阅读180次。G350是一款高度集成的2.4GHz无线收发芯片,旨在为各种应用提供低成本、高性能的无线通信解决方案。该芯片通过降低功耗,在保持寄存器值条件下,实现最低电流为5μA,从而显著提高了电池寿命。G350支持BLE广播收发,广泛用于BLE电子标签、无线遥控、无线键盘鼠标、无线组网、智能家居、工业和商用近距离通信等领域。总之,G350是一款性能优越、功耗低、功能丰富的2.4GHz无线收发芯片,适用于广泛的应用领域,为物联网和无线通信领域的设备提供了稳定、高效的无线通信能力。_2.4g无线通讯芯片

mysql必知必会第5版pdf_每周一书《SQL必知必会 (第4版)》分享-程序员宅基地

文章浏览阅读8.1k次。内容简介SQL语法简洁,使用方式灵活,功能强大,已经成为当今程序员不可或缺的技能。本书是深受世界各地读者欢迎的SQL经典畅销书,内容丰富,文字简洁明快,针对Oracle、SQL Server、MySQL、DB2、PostgreSQL、SQLite等各种主流数据库提供了大量简明的实例。与其他同类图书不同,它没有过多阐述数据库基础理论,而是专门针对一线软件开发人员,直接从SQL SELECT开始,讲述...

通过域名访问路由器配置界面的功能实现_用域名访问路由器 原理-程序员宅基地

文章浏览阅读2.2k次。需求背景:目前路由器的配置界面是通过输入网关IP来访问,市面上其他的路由器可以通过域名来访问,例如腾达路由器的配置界面地址 routendawifi.com。所以我们也希望支持域名访问路由器的配置界面。如在浏览器中输入www.9344base.cn 就可以访问路由器界面。实现原理:一次正常的域名访问流程如下:(1) 客户端向DNS服务器发送域名解析请求,该请求会先发到路由器。(2) 路由器收到DNS请求后会对其进行转发,发给外网的DNS服务器。(3) 外网的DNS服务器收到请求后,进行解析,之_用域名访问路由器 原理

推荐文章

热门文章

相关标签