自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(177)
  • 收藏
  • 关注

原创 多目标跟踪中的数据关联

联合概率数据关联算法与PDA类似,也是基于确认门内的所有量测为其计算一个加权残差用于航迹更新,不同之处在于当有回波落入不同目标相关波门的重叠区域时,此时必须综合考虑各个量测的目标来源情况,在计算互联概率时需要考虑多条航迹对测量的竞争,有竞争的加权值要有所减少,以体现其他目标对该量测的竞争。跟踪门是跟踪空间中的一块子空间,中心位于被跟踪目标的预测位置,跟踪门的大小的设计应保证以一定的概率接收正确回波,落入跟踪门内的量测即为候选回波,若落入相关波门内的量测只有一个,则该量测值可被直接用于航迹更新;

2024-03-08 14:46:17 835

转载 【C++】Boost::circular_buffer——循环缓冲区

Boost.Circular_buffer维护了一块连续内存块作为缓存区,当缓存区内的数据存满时,继续存入数据就覆盖掉旧的数据。它是一个与STL兼容的容器,类似于std::list或std::deque,并且支持随机存取。被特别设计为提供固定容量的存储大小。当其容量被用完时,新插入的元素会覆盖缓冲区头部或尾部(取决于使用何种插入操作)的元素。

2023-02-20 10:58:51 935 1

转载 【C++】explicit 用法

explicit是个C++关键字,其作用是指定仅有一个参数或除第一个参数外其它参数均有默认值的类构造函数不能作为类型转化操作符被隐含的使用,防止该类的对象直接被对应内置类型隐式转化后赋值,从而规定这个构造函数必须被明确调用。对于仅有一个参数或除第一个参数外其余参数均有默认值的类构造函数,尽可能使用explicit关键字修饰。explicit主要就是避免隐式转换,C++ 中的转化真的是太灵活了,容易搞出 bug 来。

2023-01-09 15:30:22 1291

原创 【C++】ROS与boost:bind()详解

默认情况下,bind拥有的是函数对象的副本,但是也可以使用boost::ref和boost::cref来传入函数对象的引用,尤其是当该function object是non-copyable或者expensive to copy。bind(f, _1, 5)(x)等价于f(x, 5),其中_1是一个占位符,表示用第一个参数来替换;bind(g, _3, _3, _3)(x, y, z)等价于g(z, z, z);bind(g, _1, 9, _1)(x)等价于g(x, 9, x);,如果连着一起写那就是。

2023-01-09 14:45:58 1334

转载 【ROS】回调的多线程问题

从执行结果中可以看到,进程中包括四个线程:主线程、全局队列Spinner线程1、全局队列Spinner线程2,以及本地队列Spinner线程3。这就说明了单线程的不足,不管有多少个Subscriber,节点都只能顺序执行回调,这在某些时候是不能忍受的,因此,多线程有了用武之地,我们要做的事情就是增加spinner thread。在实际项目中,如果订阅回调中有耗时操作,那么可以用户可以启用多个Spinner线程并发从Callback队列中取出已可用的回调并执行,这样可以加快Callback队列被执行的速度。

2022-12-23 20:48:49 2439 1

转载 【C++】const与shared_ptr使用中的一个细节

这个和普通原生指针还是有很大区别的,需要注意。实现如下,摘自boost1.52.0版本。)大牛对此有解释:const T*

2022-12-23 12:22:30 1459

原创 【C++】const与constexpr详解

常量表达式函数在使用前,必须要有该函数的定义。

2022-12-16 18:18:03 9790 2

转载 【C++】利用yaml-cpp读写yaml配置文件

YAML是专门用来写配置文件的语言,非常简洁和强大,比JSON和xml格式要方便很多。YAML语言(发音 /ˈjæməl/ )的设计目标,就是方便人类读写,它实质上是一种通用的数据串行化格式。它的基本语法规则kv之间有空格 k: v- 大小写敏感- 使用缩进表示层级关系- 缩进时不允许使用Tab键,只允许使用空格。- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可- #表示注释,从这个字符一直到行尾,都会被解析器忽略。- 字符串默认不使用引号表示。

2022-12-15 11:35:50 2359

转载 【GEOS】GEOS库学习之几何关系判断

【代码】【GEOS】GEOS库学习之几何关系判断。

2022-10-18 16:56:06 415 1

转载 【GEOS】GEOS库学习之几何图形空间关系

从上往下,从左往右读取这个矩阵,就会有一个字符串,如"212101212",即将相互关系转换成了一个字符串,最终对字符串进行判断就可以了。上面的图只是许多关系中的一种,画的是相交的情形,所以并没有出现-1的情况。如果换一种写法,我们将(0,1,2)认为是相交,写为T,-1认为不相交,写为F。不关心是什么值,我们就用*来代替,因此,我们只要看到"T********",就知道两个图形相交。几何图形并不只有多边形一种,它包括点、线、面构成的任何图形,两两之间相互关系也有很多种,因此空间关系非常复杂。

2022-10-18 16:41:41 903

转载 【GEOS】GEOS库学习之简单几何图形的创建

GEOS的前⾝是JTS,JTS提供了全功能的,强⼤的空间操作和空间判断。后来PostGIS缺少⼀套完整的空间查询操作,于是就将JTS移植成为C++版本,正式命名为GEOS。GEOS为开源库,它包括了完整的空间查询和⼀⼤部分空间操作,是从事图形操作和GIS⾏业开发⼈员经常接触的开发库。较为知名的使⽤GEOS的GIS软件就有QGIS,QGIS使⽤GEOS的c接⼝,c接⼝函数名称不会经常发⽣更改,具有更多的稳定性。简单得说,GEOS就是判断两个几何形状之间关系和对两个几何形状进行操作以形成新的几何形状的库。

2022-09-29 19:48:20 1157 1

原创 【C++】浮点数的std::fixed、std::setprecision()、std::setw()用法

浮点数的std::fixed、std::setprecision()、std::setw()用法

2022-09-29 15:18:20 3124 1

转载 【C++】多线程中“锁”的基本用法

本篇主要讲述c++多线程编程中锁的基本用法,主要展示了stdmutex和stdlock_guard的用法。其实c++还提供了stdlock_guardstd相比于stdlock_guard,std提供了更多的接口,也就使其更加灵活,但性能方面也会有些受损。...

2022-07-27 15:28:17 5333

转载 【C++】vector的reserve()和resize()用法

在介绍resize(),reserve(),size()和capacity()函数之前,先简单介绍一下c++中vector的概念。vector顺序容器(可变大小数组)。支持快速随机访问。在尾部之外的位置插入或删除元素可能很慢。本文重点介绍vector中的resize(),reserve(),size()和capacity()函数。size()返回vector中的元素个数;capacity()返回vector能存储元素的总数;resize()操作。...

2022-07-18 16:13:39 5590

转载 【ROS】使用gdb在线调试

执行完上面的语句,你会发现程序直接开始跑了,我还来不及设置断点什么的呢。在写ROS工程代码时,有时候找一个bug非常麻烦,尤其是运行时出错的bug,这时候借助一些调试器可以极大的提高查找bug的效率。选项,让cmake以debug模式编译,不然可能会在gdb调试的时候不能跳转到源代码,只能进入断点。例如,我在上面的程序的28行注释了一下,我们在。的输出应该能很轻易的知道28行程序暂停了,断点已经设置成功了。默认在主函数中设置断点了,那么我们想在其他不在同一个。这样在执行原来例子的时候,就会先打开一个新的。.

2022-07-18 11:29:58 665

转载 【ROS】只编译一个功能包或不编译某些功能包

当工作空间中有包对其他包有依赖时,可以先编译被依赖的包。但是默认情况下,ros的。使用此指令后,在同一窗口下,直接使用。是对所有包进行编译。为包名,包和包之间用。还是会只编译一个包。...

2022-07-18 10:43:48 4676

原创 【C++】计算点到线段的最短距离

首先我们要判断点在线段端点的两侧(1,3)还是在两个端点之间(2)。假设p垂直于直线AB的交点为C,我们只需要计算出。但是由于我们使用的是浮点数,有效位数只能达到六位,即超过六位就会去掉。夹角不会等于0°,这时候我们需要设置一个临界值进行判断,比如他们夹角小于1°我们即视为同方向。实现代码如下(这里有些是unity的API,就是求长度和点积,需要换成不同语言的API)理论上,我们获取到交点C后,我们计算。如果是直角,sin(x)=1,|最短距离分别是AP,CP,BP.计算中得到的值是有误差的,即。...

2022-07-14 19:49:20 2640

转载 【C++】哈希表基础知识

首先什么是 哈希表,哈希表(英文名字为Hash table,国内也有一些算法书籍翻译为散列表)是根据关键码的值而直接进行访问的数据结构。直白来讲其实数组就是一张哈希表。哈希表中关键码就是数组的索引下标,然后通过下标直接访问数组中的元素,如下图所示:那么哈希表能解决什么问题呢?一般哈希表都是用来快速判断一个元素是否出现集合里。例如:要查询一个名字是否在这所学校里。要枚举的话时间复杂度是O(n),但如果使用哈希表的话, 只需要O(1)就可以做到。我们只需要初始化时把这所学校里学生的名字都存在哈希表里,在查

2022-06-15 12:07:35 1269 1

原创 【ROS】如何将两个rosbag包合并成一个rosbag

先上代码 merge_bag.py:#!/usr/bin/env python import sysimport argparsefrom fnmatch import fnmatchcase from rosbag import Bag def main(): parser = argparse.ArgumentParser(description='Merge one or more bag files with the possibilities of filtering

2022-05-23 16:16:13 4461 1

转载 【C++】extern “C“详解

参考:extern “C“的作用及理解extern C里面能有C++代码吗?1. 概述extern “C” 是C++特有的指令(C无法使用该指令),目的在于支持C++与C混合编程。2. 作用extern “C” 的作用是告诉C++编译器用C规则编译指定的代码(除函数重载外,extern “C” 不影响C++其他特性)。3. 原因为什么要用C规则编译C++代码呢?因为C和C++的编译规则不一样,主要区别体现在编译期间生成函数符号的规则不一致。C++比C出道晚,但是增加了很多优秀的功能,.

2022-05-18 16:44:59 944

转载 【git】使用git时显示untracked files(未监控)解决办法

问题:git status 时除了显示自己修改的文件,还多了两个文件,显示如下:untracked files:(use "git add <file>..." to include in what will be commited)bash.exe.stackdumpsh.exe.stackdump解决办法:删除git库中untracked files(未监控)的文件:在编译git库拉下来的代码时,往往会产生一些中间文件,这些文件我们根本不需要,尤其是在成产环节做预编译.

2022-03-31 16:46:43 20295 5

原创 【Linux】本地电脑配置多个SSH连接

例如:本地A电脑IP:172.30.12.1,用户名:aaaB电脑IP:172.30.12.2,用户名:bbb现在需要在A电脑远程连接B电脑,有以下两种SSH连接方式:直接进行SSH连接:ssh [email protected]然后输入密码进行连接;配置多个SSH连接:首先在A电脑上拷贝公钥:cd ~/.sshls# id_rsa id_rsa.pub known_hosts# 若没有id_rsa id_rsa.pub这两个文件,需要使用以下命令生成:ssh-keng

2022-03-31 16:40:42 2139

转载 【C++】const在函数名前面和函数后面的区别

参考:https://www.cnblogs.com/doker/p/11051175.html概述在普通的非 const成员函数中,this的类型是一个指向类类型的 const指针。可以改变this所指向的值,但不能改变 this所保存的地址。在 const成员函数中,this的类型是一个指向 const类类型对象的 const指针。既不能改变 this所指向的对象,也不能改变 this所保存的地址。关键字:Const,Const函数,Const变量,函数后面的Const看到const关.

2022-03-26 17:20:57 550

转载 【C++】类的(static)静态成员变量与(static)静态成员函数

参考:https://blog.csdn.net/lms1008611/article/details/81408236在C语言中,我们知道有static静态变量,生命周期与作用域都跟普通变量有所不同。而在C++的类中,也有静态成员变量同时还有静态成员函数,先来看看C++中静态成员变量与静态成员函数的语法:#include <iostream>#include <string> using namespace std; class test{private: .

2022-03-26 15:56:57 363

原创 【C++】c++实现二分查找

参考:https://blog.csdn.net/qq_31828515/article/details/51791833https://www.jianshu.com/p/13a854172b0c一、二分查找二分查找又称折半查找,在C和C++里,二分查找是针对有序数组所用的一种快速查找元素的方法。二、二分查找的条件以及优缺点条件:针对有序数组(元素从小到大或从大到小)优点:查询速度较快,时间复杂度为O(n)缺点:有硬性条件的限制,而且即使查到后,插入与删除困难。三、图解四、实.

2022-03-26 14:28:45 12970 4

原创 【ROS】参数的用法——利用参数创建节点

在 ROS 消息通讯——服务器/客户端的来龙去脉的基础上,对service_server.cpp文件进行修改如下:#include "ros/ros.h" // ROS Default Header File#include "ros_tutorials_parameter/SrvTutorial.h"// action Library Header File#define PLUS 1 // Addition#d.

2022-03-23 11:58:11 198

转载 【ROS】消息通讯——动作action的来龙去脉

1. 创建功能包:2. 修改功能包说明文件package.xml:<?xml version="1.0"?><package> <name>action_tutorials</name> <version>0.0.0</version> <description>The action_tutorials package</description> <maintainer email=

2022-03-22 20:19:33 104

转载 【ROS】消息通讯——服务器/客户端的来龙去脉

1. 创建功能包:cd ~/learning_ws/srccatkin_create_pkg ros_tutorials_service message_generation std_msgs roscpp //创建功能包和依赖2. 修改功能包说明文件package.xml:<?xml version="1.0"?><package format="2"> <name>ros_tutorials_service</name> <ve

2022-03-22 20:04:20 114

转载 【ROS】ROS工作过程及通信原理

转载:https://www.cnblogs.com/fuzhuoxin/p/12560210.htmlPS:这是迄今看到的关于ROS通信原理讲解的最通俗易懂的博客,强烈推荐~ROS可以形象的描述为一个工厂的运行机制,创建好一个工作空间(workspace)就像一个工厂,工厂里又有好多个生产车间,每个功能包(pkg)看作是一个生产车间,每个生产车间又有好多工人在配合,每个节点(node)看作是一个工人,节点是又是可执行程序的最小单位,工人们之间相互沟通通过消息(mesage)来完成。1. 话题(.

2022-03-22 19:46:40 1657

转载 【ROS】常用命令

1 sudo apt-get install ros-<distro>-ros-tutorials 安装ros软件 2 sudo chown -R <your_username> ~/.ros If roscore does not initialize and sends a message about lack of permissions,增加权限 51 ifconfig //查看本机IP 52 tar zxvf OpenNI-Linux-x64-2.2-.

2022-03-22 18:13:48 244

转载 【ROS】编写CMakeLists.txt简单实例

在一个项目文件夹下面建立如图所示的文件和文件夹:include文件夹下放.h文件,内容为声明一个函数:#pragma oncevoid helloslam();src下面放源码文件,对应的内容如下:/*sayHello.cpp文件内容*/#include <sayHello.h>#include <iostream>using namespace std;void helloslam(){ cout<<"Hello SLAM".

2022-03-22 17:52:59 172 1

转载 【ROS】消息通讯——发布者/订阅者的来龙去脉

参考:https://www.cnblogs.com/fuzhuoxin/p/12578343.html1. 创建工作空间和工作环境mkdir -p ~/learning_ws/src //工作环境及功能包建立、编译cd ~/learning_ws/catkin_makesource devel/setup.bash //设置环境变量echo $ROS_PACKAGE_PATHcd ~/learning_ws/srccatkin_create_pkg ros_tutorials_.

2022-03-22 16:58:00 585

原创 【C++】DBL_MAX

DBL_MAX:double型的最大值DBL_MIN:double型的最小值FLT_MAX:float型的最大值FLT_MIN:float型的最小值负值取值范围为:-1.79769313486231570E+308 到 -4.94065645841246544E-324;正值取值范围为:4.94065645841246544E-324 到 1.79769313486231570E+308。...

2022-03-22 16:27:44 5840

转载 【ROS】launch文件详解

参考:https://www.cnblogs.com/fuzhuoxin/p/12588402.html在节点少,程序小的情况下可以一个一个节点来启动,测试运行效果;但是当工程规模大,需要的节点多时就显得比较费劲,用.launch文件来启动可以将需要的节点同时启动,不用再一个一个进行。为工程搭建提高了效率,里面还有很多参数灵活使用会带来非常高效的调试。一、创建launch文件在上个例子ROS 消息通讯——发布者/订阅者的来龙去脉的基础上创建launch文件去启动节点看效果会如何。<lau.

2022-03-22 16:16:51 12074 2

转载 机器人基础数学知识3——3D空间的相似、仿射、射影变换

参考:视觉SLAM十四讲学习笔记-第三讲-相似、仿射、射影变换和eigen程序、可视化演示使用Eigen实现四元数、欧拉角、旋转矩阵、旋转向量之间的转换 Eigen::Affine3f和Eigen::Matrix4f的转换 以及float 和 double类型转换相似、仿射、射影变换除了欧氏变换之外,3D空间还存在其他几种变换方式。它们一部分和测量几何有关。欧氏变换保持了向量的长度和夹角,相当于我们把一个刚体原封不动地进行了移动或旋转,不改变它自身的样子。其他几种变换则会改变它的外形。它们都.

2022-03-19 17:07:46 2878

转载 【C++】Eigen 库中旋转向量、旋转矩阵、欧拉角、四元数的定义及互相转换

参考:https://blog.csdn.net/u011092188/article/details/77430988https://www.cnblogs.com/lovebay/p/11215028.htmlEigen: C++开源矩阵计算工具一、Eigen中表述刚体运动的简单用法Eigen库是一个开源的C++线性代数库,它提供了快速的有关矩阵的线性代数运算,还包括解方程等功能。Eigen是一个用纯头文件搭建起来的库,这意味这你只要能找到它的头文件,就能使用它。Eigen头文件的默认.

2022-03-19 16:14:44 11188

转载 机器人基础数学知识2——3D空间位置及旋转表示

一、2D姿态描述二、三维坐标系下的旋转三维坐标的旋转有以下几种常见的表示形式:旋转向量,旋转矩阵,欧拉角,四元数,下面对这四种表示形式及其之间的转换进行介绍:旋转向量旋转的一个神奇之处就在于,三维空间的任意旋转,都可以用绕三维空间的某个轴旋转过某个角度来表示,即所谓的Axis-Angle表示方法。这种表示方法里,Axis可用一个三维向量(x,y,z)来表示,theta可以用一个角度值来表示,直观来讲,一个四维向量(theta,x,y,z)就可以表示出三维空间任意的旋转。注意,这里的三维向量(x,y,

2022-03-19 15:30:33 1543

转载 机器人基础数学知识1——齐次坐标系

一、机器人基础数学知识:笛卡尔坐标系笛卡尔坐标系(Cartesian coordinates)就是直角坐标系和斜角坐标系的统称。相交于原点的两条数轴,构成了平面仿射坐标系。 如两条数轴上的度量单位相等,则称此仿射坐标系为笛卡尔坐标系。两条数轴互相垂直的笛卡尔坐标系,称为笛卡尔直角坐标系,否则称为笛卡尔斜角坐标系。笛卡尔直角坐标系就是我们常见的直角坐标系,包括平面直角坐标系、空间直角坐标系。也就是下图中的关系:二、关于齐次坐标的理解(经典)问题:两条平行线可以相交于一点在欧氏几何空间,同一

2022-03-19 14:17:30 1076

转载 【C++】终端颜色输出及ROS终端颜色输出控制

参考:https://blog.csdn.net/mao834099514/article/details/52303074<pre name="code" class="cpp">颜色特效控制: printf("\033[1;33m Hello World. \033[0m \n"); 颜色如下: none = "\033[0m" black = "\033[0;30m" dark_gray = "\033[1;30m" .

2022-03-16 16:21:40 907

转载 【git】git rebase详解

参考:https://www.jianshu.com/p/f7ed3dd0d2d8https://www.cnblogs.com/-beyond/p/9495604.htmlgit rebase 可以帮助项目中的提交历史干净整洁!!!git rebase能够将分叉的分支重新合并。下面主要介绍它的两个使用场景:场景一:本地与远端同一分支提交历史不一致方式一多个人在同一个分支上协作时,出现冲突是很正常的,比如现在有一个项目由我和A一同开发。我在修复了一个bug以后准备提交:Howied.

2022-01-19 16:35:55 792

空空如也

空空如也

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

TA关注的人

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