自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

天才樱木

专注嵌入式和人工智能

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

原创 cmake中add_definitions的用法

cmake中add_definitions的用法

2022-09-01 14:44:16 1670 1

原创 rviz 显示Laserscan 数据 缓冲之前数据显示.

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

2021-10-29 17:01:15 619

原创 2021-09-02 inline函数和一般的函数有什么不同

inline函数和一般的函数有什么不同 比如:1 int g(int x) 2 { 3 return x + x; 4 } 5 6 int f() 7 { 8 return g(); 9 } 这样f会调用g,然后g返回x + x给f,然后f继续把那个值返回给调用者。 如果g是inline的话。f会被直接编译成。 1 int f() 2 { 3 return x + x; 4 } 相当于把g执行的操作直接融合到f里。这样减少了调用g消耗的时

2021-09-02 11:55:47 362

原创 python 2.7 import cv2 导入问题报错

通过anaconda3 pip2 install opencv-pythonLog如下错误:Collecting opencv-python Using cached opencv-python-4.3.0.38.tar.gz (88.0 MB) Installing build dependencies ... done Getting requirements to build wheel ... error ERROR: Command errored out with exi...

2021-06-04 16:21:57 2374 1

原创 lower_bound( )和upper_bound( )的常见用法

lower_bound() 和 upper_bound 二分查找有序数列内数据(数据可以是重复出现,所以出现上下边界)lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的。在从小到大的排序数组中,lower_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。.

2021-04-22 17:13:55 274

原创 错切变换

错切变换水平方向仿射矩阵为反方向类似,可应用在车牌倾斜校正中,首先进行旋转校正,再进行错切校正。垂直方向仿射矩阵为坐标变换等式为

2021-04-09 14:07:48 518

原创 四元数的表示形式Hamilton & JPL定义

文章目录目录1.引言2.JPL定义1.引言Quaternion(四元数)是一种三维空间旋转的表示方法,四元数由一个实部和三个虚部构成,写如其中 i, j, k 为虚部的三个基:不是所有的四元数对于基的关系的定义都是一致的,下文描述两种定义形式:Hamilton & JPL,它们的区别及影响。2.Hamiltion定义ijk=−1四元数转换为旋转矩阵MatJPL左四元数 - 乘积矩阵(left-quaternion-product matri

2021-03-02 13:57:50 1256

原创 C++11多线程中的detach()、join()、joinable()

一.传统多线程编写:一般来说,我们在主线程中开辟出一些子线程来完成我们的任务,正常情况下,需要在主线程的最后调用join(),用于阻塞主线程,避免主线程先于其他子线程执行完毕,退出,然后导致整个进程的异常.join():阻塞主线程,主线程等待其他子线程执行完毕,一起退出.二.非传统多线程编写: 引入detach()有人说,我们创建多个线程完成一些任务,不过需要主线程最后等待所有的子线程完毕才能退出,这样不好,主线程不自由.所以,detach()应运而生,希望主线程可以正常的退出, 子线程被

2020-12-23 17:49:37 793

原创 C++ 互斥量std::mutex简单介绍

std::mutex互斥量是一个可以处于两态之一的变量:解锁和加锁。这样,只需要一个二进制位表示它,不过实际上,常常使用一个整型量,0表示解锁,而其他所有的值则表示加锁。互斥量使用两个过程。当一个线程(或进程)需要访问临界资源的临界区时,它调用mutex_lock。如果该互斥量当前是解锁的(即临界区可用),此调用成功,调用线程可以自由进入该临界区。#include <iostream>#include <vector>#include <thread>.

2020-12-23 17:19:54 7399

原创 C++列表初始化和在函数体内初始化的区别

在列表初始化中才算是真正的初始化,而在函数体内的实际上是赋值操作,给成员变量分配内存是在列表初始化中完成的。明白了这点就可以明白两点:1.const变量的初始化只能在列表初始化中完成,因为在函数体内是赋值操作,我们不能对const变量进行赋值操作。2.含有类对象的最好在列表初始化中完成,如果在函数体内进行赋值,实际上是在列表初始化中先调用了类对象默认构造函数,然后在函数体内调用了operator=赋值运算符。另外,若一个函数没有默认构造函数,并且不在列表初始化,那么就会不能通过编译。...

2020-11-30 10:41:15 421

原创 Quaternion和AxisAngle的互相转换

四元参数和轴角的互相, 即Quaternion和AxisAngle的互相转换.1. 旋转轴和旋转角到四元参数旋转轴(ax,ay,az), 旋转角angle计算四元参数:qx = ax * sin(angle/2)qy = ay * sin(angle/2)qz = az * sin(angle/2)qw = cos(angle/2)2. 四元参数到旋转轴和旋转角angle = 2 * acos(qw)x = qx / sqrt(1-qw*qw)y = qy / sqrt(

2020-08-21 16:15:57 1287

原创 Ubuntu 系统绑定设备串口名称

Ubuntu 下绑定串口名称步骤如下:一、插上设备,使用lsusb命令查看设备的ID号 形式如ID 1a86:7523二、在文件夹/etc/udev/rules.d下新建一个文件为xxx.rules三、在该文件下写上KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0666", SYMLINK+="hexapod"注意:二三步需要用权限sudo 最好用命令行输入四、运行sudo ude

2020-08-17 14:17:31 1073

原创 SLAM后端优化的简要描述

1.图优化理论中,本质还是优化理论,主要涉及最小均方二次优化方法。这里的图与组合数学的图论还是有些区别,这里的图只是一个形象的比喻,本质是优化理论。2.激光雷达扫描位置从P0开始,沿着P1,P2,……,一直到Pn-1,Pn。结束点Pn在起始点P0附近。Pn的坐标位置可以通Pn-1获得,当然也可以通过P0获得。显然由于误差存在问题,Pn分别从Pn-1和P0获得的坐标不一样。如通过Scan to scan,Pn通过P0获得的坐标准确点,通过Pn-1获得的坐标误差大点,因为累计误差较大;如果把所有测量看做

2020-07-31 11:47:50 2133 1

原创 SLAM系统性能评估:绝对轨迹误差(ATE)和相对位姿误差(RPE)

绝对轨迹误差直接计算相机位姿的真实值与SLAM系统的估计值之间的差,程序首先根据位姿的时间戳将真实值和估计值进行对齐, 然后计算每对位姿之间的差值, 并最终以图表的形式输出, 该标准非常适合于评估视觉 SLAM 系统的性能。白话:找参考和参考做差相对位姿误差用于计算相同两个时间戳上的位姿变化量的差, 同样, 在用时间戳对齐之后, 真实位姿和估计位姿均每隔一段相同时间计算位姿的变化量, 然后对该变化量做差, 以获得相对位姿误差, 该标准适合于估计系统的漂移白话:找参考 在一定时间间断内对比

2020-07-31 11:39:03 4619

原创 RVIZ 显示 urdf 模型命令

roslaunch urdf_tutorial display.launch model:=

2020-06-17 15:33:14 976

原创 Tcp/ip 报文解析简要介绍

在编写网络程序时,常使用TCP协议。那么一个tcp包到底由哪些东西构成的呢?其实一个TCP包,首先需要通过IP协议承载,而IP报文,又需要通过以太网传送。下面我们来看看几种协议头的构成。一 .Ethernet头以太帧分好几种类型,常见的以太帧为Ethernet II下面就是一个典型的Ethernet II帧这里的数据段为TCP 、IP段数据Ethernet II类型以太网帧...

2020-05-08 16:14:08 1179

原创 Ubuntu 16.04 快捷键截图

进入系统设置:Setting->Keyboard->Shortcurts->Custom Shortcuts-> + 号然后:Name: 你喜欢的Command: gnome-screenshot -aNext: Apply鼠标点击后面Disabled在键盘输入: Ctrl +Alt +A 三个键不用退出,直接调用Ctrl+Al...

2020-03-30 10:55:07 710

转载 TF 在ROS基本作用和简单介绍

TF库的目的是实现系统中任一个点在所有坐标系之间的坐标变换,也就是说,只要给定一个坐标系下的一个点的坐标,就能获得这个点在其他坐标系的坐标.使用tf功能包,a.监听tf变换:接收并缓存系统中发布的所有参考系变换,并从中查询所需要的参考系变换。 b.广播 tf变换:向系统中广播参考系之间的坐标变换关系。系统中更可能会存在多个不同部分的t...

2019-07-30 10:55:09 16721

转载 Google Abseil基础库的简单介绍

概述:Abseil已在Google历经十多年的开发,它的目的是为Google编程人员在各种项目上的工作需求提供支持,这些项目包括Protocol Buffers、gRPC和TensorFlow等。Google公开了其项目内部使用的一系列C++库,随后还会公开其Python库。Abseil已在Google历经十多年的开发,它的目的是为Google编程人员在各种项目上的工作需求提供支持,...

2019-05-24 11:27:50 6975

转载 Cartographe纯雷达计算位姿的前后端总结

转载@梦凝小筑本人的研究方向为激光SLAM,因此对于Google Cartographer 的经典算法十分感兴趣,但是苦于该算法的论文是英文写作,且该论文有着公式多,解释少的特点。因此在看了原论文和网上的各种论文解读,都没有能够完全把这块硬骨头吃下去。机缘巧合,本人研究生课程高等运筹学大作业需要运用和Google Cartographer 中的闭环检测 相同的方法,结合Cart...

2019-05-09 11:12:28 2617 1

转载 Ubuntu 主副屏之间切换

1、参考网址:https://blog.csdn.net/u012207345/article/details/76283834原文如下:作为一个程序员,从开始使用双屏之后,一个显示屏开发,那种感觉,就是不好。好吧,刚换到ubuntu,笔记本一个显示屏,外接了一个HDMI的显示器,由于书桌的位置...

2019-05-08 17:46:07 4220 3

转载 共轭函数

共轭函数是最优化问题中非常重要的概念,常用来在原问题和对偶问题之间进行转换。本文从便于理解的角度对其进行介绍,并推导常见例子。本文主要参考S. Boyd and L. Vandenberghe, Convex Optimization中3.3节。https://blog.csdn.net/shenxiaolu1984/article/details/78194053...

2019-05-07 11:44:58 3214

转载 std::fstream 一些经验

在做实验的时候遇到这个问题,找原因的时候发现出处除了讲明原因,还举了例子,所以记下来。其实在循环判断文件是否结束的时候可以直接就流输入放在循环条件那里,但是这里补充使用eof()的一些细节问题。其实这是关于到底什么时候标志位才会变化的问题。总结起来就是只有使用一次流变量来输入输出,标志位才会更新一次。正文: fstream流的eof() 判断有点不合常理...

2019-03-25 10:33:38 1492

转载 Allan 方差简单理解

转载学习:链接:    http://blog.sina.com.cn/s/blog_40edfdc90102y1ar.html

2019-02-20 10:12:06 13868

转载 矩形边界框

矩形边界框另一种常见的用来界定物体的几何图元是矩形边界框,矩形边界框可以是与轴对齐的或是任意方向的。轴对齐矩形边界框有一个限制,就是它的边必须垂直于坐标轴。缩写AABB常用来表示axially aligned bounding box(轴对齐矩形边界框),OBB用来表示oriented bounding box(方向矩形边界框)。轴对齐矩形边界框不仅容易创建,而且易于使用。一个3D的AAB...

2019-01-14 22:00:19 1805

转载 PCL点云特征描述与提取(1)

转载学习:https://www.cnblogs.com/li-yao7758258/p/6479255.html3D点云特征描述与提取是点云信息处理中最基础也是最关键的一部分,点云的识别。分割,重采样,配准曲面重建等处理大部分算法,都严重依赖特征描述与提取的结果。从尺度上来分,一般分为局部特征的描述和全局特征的描述,例如局部的法线等几何形状特征的描述,全局的拓朴特征的描述,都属于3D点云特征...

2018-12-12 11:37:11 2585 1

转载 ICP

ICP(迭代最近点)算法  图像配准是图像处理研究领域中的一个典型问题和技术难点,其目的在于比较或融合针对同一对象在不同条件下获取的图像,例如图像会来自不同的采集设备,取自不同的时间,不同的拍摄视角等等,有时也需要用到针对不同对象的图像配准问题。具体地说,对于一组图像数据集中的两幅图像,通过寻找一种空间变换把一幅图像映射到另一幅图像,使得两图中对应于空间同一位置的点一一对应起来,从而达到信息融...

2018-12-12 10:37:40 1191

转载 PCL_用鼠标点击点云中任意点显示该点的FPFH直方图

#include &lt;pcl/point_cloud.h&gt;#include &lt;iostream&gt;#include &lt;pcl/io/pcd_io.h&gt; #include &lt;pcl/point_types.h&gt; #include &lt;pcl/visualization/cloud_viewer.h&gt; #include &lt;pcl/...

2018-12-11 19:45:21 824 4

转载 PCL中计算点云的法向量并显示

参考源:http://www.cnblogs.com/bozhicheng/p/5842428.html利用的是最小二乘估计的方法计算了点云的法向量,并且提供了两种法线的显示方法,还设置了多个ViewPort,练习了点云的显示:// NormalEstimation.cpp : Defines the entry point for the console application. ...

2018-12-11 19:34:25 7514 4

转载 PCL学习一 法线估计

PCL法线估计平面的法线是垂直于它的单位向量。在点云的表面的法线被定义为垂直于与点云表面相切的平面的向量。表面法线也可以计算点云中一点的法线,被认为是一种十分重要的性质。常常在被使用在很多计算机视觉的应用里面,比如可以用来推出光源的位置,通过阴影与其他视觉影响,表面法线的问题可以近似化解为切面的问题,这个切面的问题又会变成最小二乘法拟合平面的问题解决表面法线估计的问题可以最终化简为对一个协...

2018-12-07 15:26:50 834

转载 pcl demo

3D重建中,肯定是避免不了需要看自己的建立的模型的效果,所以之前一段时间在纠结用什么库来显示,最后还是决定了用PCL库进行模型的显示。我也仅仅只是懂得普通的安装和在自己的程序里测试使用PCL,贴出来方便向像一样的初学者使用,仅供参考。下面开始正事。1. PCL的编译安装首先,要先安装一大堆依赖库,这个过程耗时挺久的     sudo apt-get update     sudo ap...

2018-12-03 14:11:35 1107

转载 ROS Nodehandle句柄

转载学习:https://blog.csdn.net/jack_20/article/details/707467361、句柄可以让你通过构造函数指定命名空间ros::NodeHandle nh("my_namespace");这使得使用该句柄的任何相对名字都是相对&lt;node_namespace&gt;/my_namespace,而不是只相对&lt;node_namespace&...

2018-11-27 10:46:17 6508

转载 error: invalid use of non-static member function

转载学习:https://blog.csdn.net/bill_ming/article/details/6872165#include &lt;iostream&gt;using namespace std;class A{public :    A (int i)    {        a = i;    }    int fun(int b)    {  ...

2018-11-26 19:23:29 30783

转载 Buildroot 神器

为什么要使用buildroot?   (文件系统搭建,强烈建议直接用buildroot,官网[http://buildroot.uclibc.org/]上有使用教程非常详细)文件系统通常要包含很多第三方软件,比如busybox,udhcpc,tftp,apache,sqlite,PHP,iptable,DNS等,为了避免繁杂的移植工作。buildroot应运而生。通过menuconfig配置我...

2018-11-23 10:42:26 1271

转载 【CVPR2018】论文整理(收藏这一篇就够了)

    转载学习:https://blog.csdn.net/leviopku/article/details/80783301【CVPR2018】论文整理(收藏这一篇就够了)

2018-11-19 11:12:46 1001

转载 ICRA2018-SLAM相关论文集锦

本文首发于泡泡机器人SLAM微信公众号。ICRA ,全名是IEEE International Conference on Robotics and Automation,相信大家都不陌生。今年ICRA2018(5.21-5.25)在美丽的澳大利亚布里斯班举行,作为机器人领域的顶级会议,虽然未能亲临现场,但是论文还是要读的,因此整理了一下与SLAM相关的一些论文,发现SLAM相关的论文确实不少,有...

2018-11-19 11:09:14 474

转载 感性总结卡尔曼滤波器

转载学习:http://www.cnblogs.com/xmphoenix/p/3634536.html1.简介(Brief Introduction)在学习卡尔曼滤波器之前,首先看看为什么叫“卡尔曼”。跟其他著名的理论(例如傅立叶变换,泰勒级数等等)一样,卡尔曼也是一个人的名字,而跟他们不同的是,他是个现代人!卡尔曼全名Rudolf Emil Kalman,匈牙利数学家,1930年出...

2018-11-16 15:18:28 610

转载 Matlab求解代数多项式方程组

函数——“solve”    使用函数:“solve”,对这个函数不清楚的可以自行百度或在Matlab中help    solve前表示你要指定的未知数,solve后是每个代数方程组,记得每个方程组之间需要用英文状态下的单引号‘’包起来。同时对单个的未知数也要单独包起来。实例1[x,y,z]=solve('x+y+z=1','x-2*y+5*z=2','x-2*y-z=3','...

2018-11-15 15:08:24 4616 1

转载 kd-tree

https://www.cnblogs.com/lysuns/articles/4710712.html

2018-11-13 13:53:55 268

转载 C++函数默认参数

C++中允许为函数提供默认参数,又名缺省参数。 使用默认参数时的注意事项: ① 有函数声明(原型)时,默认参数可以放在函数声明或者定义中,但只能放在二者之一double sqrt(double f = 1.0); //函数声明double sqrt(double f) //函数定义{ // .... } ② 没有函数(原型)时,默认参数在函数定义时指定....

2018-11-12 16:13:05 383

空空如也

空空如也

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

TA关注的人

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