IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 学习笔记2022.08.08-08.13 -> 正文阅读

[开发工具]学习笔记2022.08.08-08.13

学习笔记2022.08.08-08.13

一、vscode配置

这一周花了很长时间去考驾照(结果还没过 哭哭),主要跑了slambook2第四、第五章的代码,熟悉代码结构和相关库在linux中的应用。得到的很重要的一点就是在linux环境下vscode最好只用来写cpp、Cmakelists.txt之类的文件,虽然c_cpp_properties.json、tasks.json配置依赖库的路径不算困难,
tasks.json:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
引出tasks.json可以点击左上方终端然后点击配置默认生成任务。主要修改args部分,添加“l","库文件路径“。
c_cpp_properties.json


{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/usr/local/include",
                //"/home/jane/project/Sophus",
                "/usr/local/include/pangolin",
                "/usr/local/include/pangolin/gl"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "gnu++14",
            "intelliSenseMode": "linux-gcc-x64",
            "configurationProvider": "ms-vscode.makefile-tools"
        }
    ],
    "version": 4
}


引出c_cpp_properties.json可以Ctrl+Shift+P可以调出控制窗口再输入edit或者configuration,选择"C/Cpp:Edit Configurations。"依赖的库主要安装在/usr/local/include的目录下,在c_cpp_properties修改include path部分。

二、Cmakelists.txt语法

主要涉及的是配置第三方库,先找到包所在的位置,用find_pakages找到包,再include_directories(${xxx})添加头文件目录,add_excutable(可执行文件名称 源文件名称),将库链接到可执行文件:target_link_libraries(可执行文件名称 ${库})

project(rgbd)
cmake_minimum_required(VERSION 3.10)
find_package(Pangolin REQUIRED)
include_directories(${Pangolin_INCLUDE_DIRS})
add_executable(joinMap joinMap.cpp)
target_link_libraries(joinMap ${Pangolin_LIBRARIES} )
find_package(Sophus REQUIRED)

include_directories(${Sophus_INCLUDE_DIRS})
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
target_link_libraries(joinMap ${OpenCV_LIBS})


include_directories("/usr/local/include/eigen3")
target_link_libraries(joinMap ${Sophus_LIBRARIES} fmt)
set(CMAKE_CXX_FLAGS "-std=c++11")

链接: link

三、用命令行编译

1、在项目文件夹下新建一个build文件夹用于存放编译文件

jane@jane-virtual-machine:~/桌面/slambook2/ch5$ mkdir build

2、进入build文件夹

jane@jane-virtual-machine:~/桌面/slambook2/ch5$ cd build

3、用Cmake生成makefile文件

jane@jane-virtual-machine:~/桌面/slambook2/ch5$ cmake ..

注意是cmake 两个点表示在build的上一级目录根据Cmakelists.txt操作,生成的文件会放在build文件夹中(提供MakeFile文件)。

4、生成可执行文件

root@jane-virtual-machine:/home/jane/桌面/slambook2/ch5/build# make
-- Configuring done
-- Generating done
-- Build files have been written to: /home/jane/桌面/slambook2/ch5/build
[ 50%] Linking CXX executable joinMap
[100%] Built target joinMap

使用make命令根据MakeFile的内容生成可执行文件,如果在build文件下进行make,生成的可执行文件也会在build文件夹中。

5、运行可执行文件

root@jane-virtual-machine:/home/jane/桌面/slambook2/ch5/build# ./joinMap
转换图像中: 1
转换图像中: 2
转换图像中: 3
转换图像中: 4
转换图像中: 5
点云共有0个点.
Point cloud is empty!
root@jane-virtual-machine:/home/jane/桌面/slambook2/ch5/build# cd ..
root@jane-virtual-machine:/home/jane/桌面/slambook2/ch5# ./joinMap
bash: ./joinMap: 没有那个文件或目录

如果直接在build文件夹下运行./joinMap文件,会发现运行结果不对,应当将执行文件复制到根目录下进行运行。

root@jane-virtual-machine:/home/jane/桌面/slambook2/ch5# ./joinMap
转换图像中: 1
转换图像中: 2
转换图像中: 3
转换图像中: 4
转换图像中: 5
点云共有1081843个点.

二、slam依赖库的安装

主要涉及到的库有Eigen3、sophus(fmt)、opencv、pangolin,最好将下载的源码文件放在一个专门的文件夹下,便于管理,安装之后可以在/usr/local/include中找到已安装的库。此外,安装opencv和pangolin都需要安装依赖.
opencv:安装依赖

sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install pkg-config

先从官网下载opencv源码,然后安装依赖,然后解压新建build文件,进行编译
pangolin做法类似,也要先安装依赖,但是slambook2中使用的pangolin是0.5版本的,若要下载0.5版本,可以使用命令:

git clone --recursive https://github.com/stvenlovegrove/Pangolin.git -b v0.5

recursive表示下载子模块,比较慢。可以在终端输入

git clone git@github.com:dmlc/dgl.git

配置SSHKey,参考链接:
链接: SSHKey

二、在visual studio配置opencv

首先还是在官网上下载相应的版本(.exe结尾的文件),安装(包括相关依赖包),记住安装位置。在visual studio配置主要修改:
1、项目属性界面–C/VC+±-包含目录(opencv的include文件夹的绝对路径)以及库目录(编译后lib的绝对路径)
2、C/C±-常规–附加包含目录(opencv的include文件夹的绝对路径,编译后lib的绝对路径)
3、链接器–常规–附加库目录(编译后lib的绝对路径)
4、链接器–输入–附加依赖项名称
在这里插入图片描述
5、最后还要在编译后的bin文件夹中找到对应的动态链接库(.dll结尾)复制到项目文件夹中。

三、代码中的类和变量

1、头文件“chrono”

chrono是一个头文件的名字,但是也是一个std下的一个子命名空间的名字:在这个头文件下的所有元素(除了(不包含)common_type 类 特殊化)不是直接定义在std命名空间下的(就像大多数标准库一样)而是定义在std::chrono命名空间里。
在这个头文件下的元素都是处理时间的。这主要依靠三种概念解决。

持续时间类 Durations

 他们测量时间范围,例如:1分钟,或10毫秒。
在这个库中,他们表示成这个duration类模板的对象,这个类模板结合了数量和单位(例如 10毫秒就有10作为数量表示,毫秒作为单位)。

时间点 Time points

 在时间上这可能涉及到一个特殊点,就像某个人的生日,今天的黎明,或者在下一辆火车经过的时候。
 在这个库中,这time_point类模板通过使用一个相对一个新纪元的持续时间表现这个(这个新纪元是一个固定的点,这个点与所有使用相同的时钟的time_point对象相同)。

时钟 Clocks

  一个框架,将一个时间点与真实物理时间关联。
这个库提供至少三种时钟,这些时钟提供方法去表示当前时间作为一个time_point:system_clock,steady_clock 和 high_resolution_clock。  system_clock 提供访问当前的time_point,是一个全系统实时时钟。steady_clock  提供访问当前的time_point,是专门被设计去计算时间间隔的.high_resolution_clock 提供访问当前的time_point,是一个具有最短tick周期的时钟,它可能是   system_clock  or  steady_clock的同义词。

函数:

 duration_cast(用于转换单位)
 time_point_cast
  chrono::steady_clock::time_point t2 = chrono::steady_clock::now();
    chrono::duration<double> timeused = chrono::duration_cast<chrono::duration<double>>(t2 - t1);

2、CV::Rect

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

 Mat Image = image;
    Image(Rect(0, 0, 100, 100)).setTo(0);

在ImageBasic.cpp中Rect()用于创建中心位于(0,0),高宽分别为100的图像。

3、cv::imshow

在这里插入图片描述
在这里插入图片描述

   imshow("image",image);
    imshow("Image",Image);
    waitKey(0);
    Mat Image_small;
    resize(image, Image_small, Size(200, 200), 0, 0, INTER_NEAREST);
    imshow("small", Image_small);
    waitKey();

ImageBasic.cpp用于显示克隆的图像Image以及缩小的图像Image_small
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

4、vector中的reserve使用

在这里插入图片描述
一般的vector的大小随着push_back的增大而增大,但是reserve可以在小于n值情况下不重新分配空间。当需要多次向向量添加元素且事先知道元素的数量时利于使用。

5、boost::format

在这里插入图片描述
在这里插入图片描述

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-08-19 19:26:35  更:2022-08-19 19:29:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:46:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码