自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

向阳生长,为梦想而活

专注人工智能、机器视觉、c++、嵌入式

  • 博客(104)
  • 收藏
  • 关注

原创 git 简单操作流程图

2022-01-10 21:37:52 289

原创 进程编译连接动态库,需要将动态库改为lib***.so

1、本身该库可能编译成npuDetect.so,但是需要改其名字为libnpuDetect.so,CMakelists才能找到该库2、进程中连接动态库,如果该库还依赖别的动态库,则需要继续把其他的库也要连接进来

2021-09-30 09:33:01 178

原创 将Linux系统下交叉编译的依赖库推到ARM平台下无法建立以来关系解决

问题:平常把opencv库使用源码交叉编译好之后,从windows推到飞机里发现,该库的依赖关系都没有了,导致程序运行的时候报该库大小有问题解决办法:1、将linux下的库推到ARM平台中的一个文件夹中,然后将ARM平台下的文件夹再拉出来,这样一去一来,这些库的依赖关系都会消失,然后就可以把该文件的库copy到windows下2、最终从windows下推到ARM平台的opencv库就会显示正常大小...

2021-08-09 22:12:11 523

原创 结构体指针需要申请指针内存,结构体对象不需要申请对象内存

struct frame_info{char* data;//图像数据int bufsize;//图像大小};1、struct frame_info* finfoDT = new struct frame_info;finfoDT->data = new 1280*7202、struct frame_info finfoDT = new struct frame_info;finfoDT.data = new 1280*720..

2021-08-03 14:38:02 594

原创 ROS系统中的多个版本Boost问题

1、删除多余的boost版本,只需要删除该版本的libboost*库以及Boost的头文件,不需要使用sudo apt-get rm --pugre libboost-devsudo apt-get armove libboost-dev;这种卸载会把很多Boost依赖的库删掉;想要单纯的只删除当前版本的Boost库,只需要找到libboost库所在目录删掉就行2、...

2021-07-28 00:24:09 1120

原创 传输协议上的字节解析问题

1、 低字节在前,高字节在后2、0x01高字节 , 0x00 低字节,如何组合成一个字节3、0x01 = 0000 0000 0000 00014、0x00 = 0000 0000 0000 00005、按照组合规则,低字节在前,高字节在后组合成的新数据6、0x01 + 0x00 = 0x0001...

2021-07-18 21:48:20 983

原创 linux的进程与库之间的通信两种方式

文章目录前言一、进程A与算法库b的通信方式之一:动态dlopen加载算法库b具体的实施细节:二、进程A与算法库b的通信方式之二:进程A编译的时候连接上算法b具体的实施细节:2.读入数据总结前言像我平常主要是视觉算法的落地应用,有时候算法效果实现了,但是要想要用产品上需要工程的实践来串联起算法和整个产品的连接关系。大部分AI的产品,算法一般实现之后,对外只会留两个接口:1)输入图像、激光雷达、Imu等数据;2)输出算法的结果:机器人的状态估计位置、速度、方向、图像的检测推理后筛选的坐标等;但是这仅仅..

2021-07-18 21:37:12 305 1

原创 python读取excle表格数据,将数据编辑到图像上工程

这里写目录标题一级目录:python读取excel表格内容二级目录:python如何分割字符串三级目录:python如何在图像的相应位置编辑文字或者字母、数字一级目录:python读取excel表格内容二级目录:python如何分割字符串三级目录:python如何在图像的相应位置编辑文字或者字母、数字...

2021-07-02 22:48:19 136

原创 VINS状态估计篇-视觉sfm初始化

1、通过判断当前帧和滑动窗口中,平均视差>30

2021-06-26 23:20:18 227

原创 运动轨迹规划算法专栏

1、全局+局部路径规划,解决低速简单障碍物环境的路径规划功能

2021-06-20 23:00:28 549

原创 设计模式C++实践

1、单例模式1)饿汉士单例模式2)懒汉士单例模式

2021-06-20 22:58:37 66

原创 C++11 多线程库使用说明

多线程基础1.1 进程与线程根本区别:进程是操作系统资源分配的基本单位,线程是任务调度和执行的基本单位开销方面:每个进程都有自己独立的代码和数据空间,程序之间的切换开销较大。线程可以看作是轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器,线程之间切换开销小。所处环境:一个操作系统能同时运行多个进程(程序)。在一个进程中,可以有多个线程同时执行。内存分配方面:系统在运行的时候会为每个进程分配不同的内存空间。对线程而言,系统不会为线程分配内存(线程.

2021-06-06 14:56:30 531

原创 memcpy(cv::Mat.data,unsigned char *,320x240),保存数据失真问题解决方法

1、memcpy(unsigned char *C,cv::Mat.data A,,320x240),首先A是图像完整的,通过copy到C中的时候,再copy到新的cv::Mat 图像的对象上时,图像发生失真memcpy(cv::Mat B.data,unsigned char *C,320x240),保存数据失真问题解决方法...

2021-05-09 15:52:01 1882 1

原创 方差和协方差的数据意义

方差和协方差定义方差度量单个随机变量的离散程度,公式如下:协方差度量两个随机变量(变化趋势)的相似程度,定义如下:

2021-03-10 09:42:00 247

原创 ROS环境下跑orb-slam2 单目相机

1、配置环境、安装ROS ubuntu16.04 + kinetic2、安装依赖 cmake opencv Eigen3:sudo apt-get install libeigen3-dev3、创建catkin_ws 文件夹,并ROS初始化工作空间mkdir -p ~/catkin_ws/srccd ~/catkin_ws/srccatkin_init_workspacecd ~/catkin_ws/catkin_make4、git或者手动下载ORB-SLAM2的源代.

2021-03-02 22:31:33 649 2

原创 linux安装VScode

1、从官网下载Visual Studio Code 安装包下载地址:https://code.visualstudio.com/docs?dv=linux642、解压下载的VScode安装包tar -xzvf code-stable-1554971043.tar.gz3、将解压的文件夹 VSCode-linux-x64移动到目录 /usr/local下mv VSCode-linux-x64 /usr/loacl/4、赋予刚刚文件夹所有权限sudo chmod -R 777 /..

2021-02-06 21:46:20 622

原创 C++中静态成员数据初始化问题

C++中静态成员数据初始化问题1、静态成员变量:定义为静态成员意味着它能被所有的实例化对象所共有,其修改值为该类的其它所有实例所见。下面看一个例子class people{public: people(int i):id(i) { num++; } private: static int num; int id;};num为静态成员,每调用有参构造一次num就自加.

2021-02-04 23:49:35 1705

原创 orb-slam2 代码逻辑梳理

一、include头文件内容梳理1、System.hclass System 一个系统类System(const string &strVocFile, const string &strSettingsFile, const eSensor s

2021-01-26 10:44:50 63

原创 orb-slam2在PC和ARM上运行

标题这里写自定义目录标题标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何

2021-01-26 00:03:26 647

原创 C++获取一段算法程序耗时方法

1、添加头文件库#include <chrono>2、代码编写std::chrono::steady_clock::time_point t1 = std::chrono::steady_clock::now();std::chrono::steady_clock::time_point t2 = std::chrono::steady_clock::now();std::chrono::duration<double> time_used12 = std::ch..

2021-01-12 15:50:34 177

原创 VIO-slam 系统构建

文章目录系列文章目录 前言 一、VIO系统数据的获取:图像传感器选型、IMU传感器选型 二、建立linux系统+ROS环境 三、如何读取图像数据 四、如何读取IMU传感器数据 五、标定图像和IMU数据的外参、相机的内参 六、移植VINS-MONO或者VINS-FUSION:主要调试获取图像和imu的订阅数据 总结1、基础矩阵、单一性矩阵、本征矩阵为什么能计算出相机的旋转和平移;其原理是什么2、相机旋转的时候为什么能用IMU进行测量其旋转的角度...

2020-12-27 22:48:59 776 2

原创 SLAM后端优化之-核函数

1、核函数作用:保证每条边的误差不会大的没边,掩盖掉其他的边在SLAM后端优化中,BA优化了所有的相机姿态和所有路标点,使用的最小化误差项作的二范数平方和作为目标函数;当我们的误差来源特别大的时候;BA优化会朝着错误的方向优化,这个是我们不想看到的;出现这种问题的原因是,当误差项来源很大的时候,二范数增长的太快了,这个时候核函数的作用就体现出来了:未来保证每条优化的边误差项不会大到无法接受。...

2020-12-14 23:39:24 638

原创 opencv的pnp()算法接口是相对于3D点,输出的是相机与3D点之间的R和T

1、情况一:两帧图像 -》 提取特征-》特征匹配-》通过2d-2d计算 F基础矩阵、E 本质矩阵 、H 单一性矩阵 -》解析出 相机自身的运动R和T -》再通过三角化,将2d点转为相机的3d点(每个空间点在两个相机坐标系下的投影3D坐标与像素2D坐标)再通过pnp()算法,输入3d 、2d 、R、T-》输出相机相对于空间3D点的R和T的关系2、情况二:一张图像-》获取2d点和计算图像平面上的2d点相对于固定平面中心点O的每个3D点-》再通过pnp()算法,输入3d 、2d 、R、T-》..

2020-12-01 18:52:51 567 1

原创 视觉slam重点知识笔记

1、除了基本矩阵和本质矩阵,我们还有一种称为单应矩阵(Homography)H 的东西,它描述了两个平面之间的映射关系。若场景中的特征点都落在同一平面上(比如墙,地面等),则可以通过单应性来进行运动估计。这种情况在无人机携带的俯视相机,或扫地机携带的顶视相机中比较常见。2、...

2020-11-30 19:31:23 163

原创 图像之间特征匹配之后,深度d计算方法

for ( DMatch m:matches ) { ushort d = d1.ptr<unsigned short> (int( keypoints_1[m.queryIdx].pt.y )) [ int ( keypoints_1[m.queryIdx].pt.x ) ]; if ( d == 0 ) // bad depth continue; float dd = d/5000.0; ...

2020-11-27 17:36:40 559

原创 SLAM系统工程,常用数据集下载链接(TUM KITTI DSO Mono EuRoC)

TUM链接:https://pan.baidu.com/s/1nwXtGqH 密码:lsgrKITTI链接:https://pan.baidu.com/s/1htFmXDE 密码:uu20DSO链接:https://pan.baidu.com/s/1eSRmeZK 密码:6x5bMono链接:https://pan.baidu.com/s/1jKaNB3C 密码:u57rEuRoC链接:https://pan.baidu.com/s/1miXf40o 密码:xm59K

2020-11-01 17:28:44 619

原创 (视觉和激光传感器)SLAM 做室内GPS与室外真实GPS在无人机上的对比

1、室外无人机GPS的作用1)记录实时无人机起飞点与当前飞行无人机的绝对位置关系,显示当面无人机离起飞点的真实距离2)做室外无人机悬停的功能,使用GPS当前点与悬停点GPS经纬度做对比3)无人机上层应用,像汽车的导航一样,无人机在天上进行导航2、视觉和激光传感器)SLAM 做室内GPS作用1)记录实时无人机起飞点与当前飞行无人机的绝对位置关系,显示当面无人机离起飞点的真实距离2)做室内无人机悬停的功能,使用无人机slam系统计算的位置i>在有地图的情况下,也能给出无人.

2020-10-29 11:48:40 1654

原创 explicit关键字详解(C++ )

一:首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).class CxString // 没有使用explicit关键字的类声明, 即默认为隐式声明 { public: char *_pstr; int _size; CxString(int size) ...

2020-10-28 11:12:32 128

原创 自动驾驶汽车定位技术

一、高精度地图二、汽车定位技术三、无线通信辅助汽车定位四、视觉辅助汽车定位五、自动驾驶高精度地图与定位实践

2020-10-12 11:18:00 396

原创 C++函数返回引用的含义

引用的意思就是说返回变量的地址而非变量本身。这样子函double数结束之后存储返回值的内存单元不会被销毁,保留了它的地址。例如下面这个例子:int a=1,b;b=a;b++;这个例子里执行完之后a为1,而b为2。但这个例子:int a=1;int *b;b=&a;//指针b获取了a的地址(*b)++;a和b的值都会变为2...

2020-09-17 23:49:49 636

原创 像元尺寸计算

像元尺寸 X 总像素大小 = 感光芯片尺寸(图像区域大小)

2020-09-16 14:53:15 7832

原创 stdout标准输出、stderr标准错误输出 标准输入、标准输出、标准错误输出分别被定义为0、1、2。

$ make > compile.log 2>&1首先将标准错误输出也重定向到标准输出中,再将标准输出重定向到 compile.log 这个文件中。这样我们就可以将所有的输出都存储到文件中了。

2020-08-27 16:10:17 847

原创 CmakeLists关于指定路径加载Opencv版本

file(GLOBAL "/home/Gthrid/opencv/"

2020-08-23 21:17:23 717 1

原创 使用视觉信息,为什么能把移动机器人的空间位置信息记录下来

1、首先由相机的世界坐标系,物体的世界坐标-》相机坐标-》到投影面坐标-》到像素坐标;最终一个世界中物体的三维点被记录在相机的一个转化的坐标系中;当同时拿到很多的物体坐标时候,此时相机中就拥有了该整个观察到物体的坐标位置;但是有个问题,怎么把相机1的观察到的物体坐标信息;传递给相机2因为相机2观察到的坐标可能与相机1观察到的物体坐标,转换后的位置不一样...

2020-08-23 17:22:49 103

原创 C++的命名规范

1、 变量名前缀i_ 类内数据成员(对象级成员) instance scopec_ 类内静态数据成员(类级成员) class scopeg_ 全局变量 global scopef_ 文件作用域变量(静态变量) file scope2、 类型名首字母大写,末尾加_T。如: class TnppCoverageArea_T{…};...

2020-08-22 14:19:54 159

原创 在linux系统中安装VSCode(Visual Studio Code)

1.从官网下载压缩包(话说下载下来解压就直接可以运行了咧,都不需要make)访问Visual Studio Code官网https://code.visualstudio.com/docs?dv=linux64我是64位的:wgethttps://az764295.vo.msecnd.net/stable/7ba55c5860b152d999dda59393ca3ebeb1b5c85f/code-stable-code_1.7.2-1479766213_amd64.tar.gz2.解压 ..

2020-08-14 22:44:16 808 1

原创 Cmakelists一版教程

cmake_minimum_required(VERSION 3.00)project(just_test)set(CMAKE_CXX_STANDARD 11 )# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread" )set(SOURCE_FILES main.cpp)SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -g -Wall")# OpenMPFIND_PACKA.

2020-08-11 18:56:00 239

原创 PID控制无人机

1、有效的办法就是,根据距离目标值的远近来调节云台的速度,离得远就转快一些,离得近就慢一些。这样就需要我们实时获取云台当前的实际角度,然后和目标角度做对比,根据差值来动态地调整云台的速度和方向。2、根据无人机距离停机目标的高度,高度较远控制量就大一些,高度较近的时候,控制量就小一些。...

2020-06-28 10:51:26 1361

原创 使用宏的可变参数来构造打印Log宏

#define Test_Debug#ifdef Test_Debug #define DBG_ERR(fmt,args) printf(fmt,__FILE__,__FUNCTION__,__LINE__,##args)#endifvoid printf_erro(int a,int b){ if (a < b) { //DBG_ERR("%d\n",888); //printf("%s %s %d %d\n", __FILE__...

2020-05-17 22:38:52 195

原创 将字符串和数字合并动态写入

sprintf(tmpTime, "/media/AIlog/%02d_%02d_%.txt",100,200);

2020-05-12 20:00:51 608

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除