自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

罗宾酱的博客

工作备忘录。

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

原创 鱼香ros一键安装

【代码】鱼香ros一键安装。

2024-02-07 15:55:15 537

原创 ros::spin()和ros::spinOnce()

目的:Ros自带的时间同步函数存在着“当一个输入缺失,就无法进入回调函数,也无法处理数据”的缺点,所以决定不再使用系统自带函数;自己手撕一段时间同步的代码;发现:1.关于ros::spin()和ros::spinOnce();在这之前,我一直以为ros::spin()是订阅消息/回调函数的专属语句;ros::spinOnce()是发布函数的专属语句;实际上,这两者都是回调函数的专属语句…回调函数的工作原理:回调函数的作用是接受订阅的消息,但是所接到的消息并不是立刻就被处理,而是必须要等到ros

2021-08-25 17:02:46 996

转载 点云到平面的映射

#include #include <pcl/io/pcd_io.h>#include <pcl/point_types.h>#include <pcl/ModelCoefficients.h>#include <pcl/filters/project_inliers.h>#include <pcl/visualization/pcl_visualizer.h>using namespace pcl;using namespace s

2021-08-19 15:29:52 632

转载 点云处理方法

https://blog.csdn.net/xiaoxiaowenqiang/article/details/79873816所有的内容都在:https://github.com/Ewenwan/MVision/tree/master/PCL_APP/Basic/Segmentation点云分割是根据空间,几何和纹理等特征对点云进行划分,使得同一划分内的点云拥有相似的特征,点云的有效分割往往是许多应用的前提,例如逆向工作,CAD领域对零件的不同扫描表面进行分割,然后才能更好的进行空洞修复曲面重建,特征描

2021-08-18 11:00:46 3361

原创 LeetCode28——实现 strStr()

28. 实现 strStr()题目描述:实现 strStr() 函数。给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。示例 1:输入:haystack = “hello”, needle = “ll”输出:2题解:1.自己的答案class Solution {public: int strStr(string haystack, string ne

2021-08-05 11:16:10 145

原创 LeetCode27——移除元素

27. 移除元素题目描述:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。题解:这是一道简单的题,与26题是同一类型。class Solution {public: int removeElement(vector<int>& nums, int val) {

2021-08-05 09:32:50 84

原创 LeetCode26——删除有序数组中的重复项

26. 删除有序数组中的重复项题目描述:给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。思路:题目中不要求将多余的数据删除掉,因此可以不断向前覆盖重复的数据即可;p是满足非重复要求的元素的位置(类似与慢指针);p是从0开始的,输出需要是非重复数组的长度,因此最后需要++p;题解:class Solution {public:

2021-08-03 12:12:31 79

原创 LeetCode20 —— 有效的括号

20. 有效的括号题目描述给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = “([)]”输出:false示例 2:输入:s = “{[]}”输出:true思路:首先判断,数组s中元素的数量:若为奇数,直接返回false;将要求的括号对应放置在哈希表中,以便查找元素;写一个数组,用以存放未匹配上的左侧括号;class So

2021-08-02 10:29:24 68

原创 LeetCode14——最长公共前缀

14. 最长公共前缀题目描述:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入:strs = [“flower”,“flow”,“flight”]输出:“fl”示例 2:输入:strs = [“dog”,“racecar”,“car”]输出:""解释:输入不存在公共前缀。解题思路:strs中的每个元素中的字母都依次遍历;长度假设为其中任意一个元素的长度即可(其实能找到最短的元素,使用他的长度是最好的),但是使用任意一个也可以,我

2021-07-30 18:19:00 119

原创 LeetCode13——罗马数字转整数

13. 罗马数字转整数题目描述:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000通常情况下,罗马数字中小的数字在大的数字的右边。存在几种特殊情况:I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和

2021-07-30 16:43:50 84

原创 LeetCode9——回文数

9. 回文数题目描述:给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入:x = 121输出:true示例 2:输入:x = 10输出:false解释:从右向左读, 为 01 。因此它不是一个回文数。解题思路:首先排除负数以及两位数及以上中个位数为0的数据;因为可以存在末尾为0的两位以上数据,但并不存在首位为0的两位以上数据,如示例2,因此只要x非0,且末尾为0,即

2021-07-30 13:57:49 138

原创 LeetCode7——整数反转

7. 整数反转给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321class Solution {public: int reverse(int x) { int z=0,res=0;

2021-07-30 11:12:42 75

转载 LeetCode1——两数之和

1. 两数之和描述:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。方法一:暴力循环法class Solutio

2021-07-30 10:13:11 102

原创 点是否位于区域内的位置判断

文章目录前言一、“引射线法”是什么?二、实现1.方法一2.方法二总结前言目的:本文主要记录如何判断点是否位于ROI区域内部。常见判断方法:面积和判断法;夹角和判断法;凸多边形判断法;引射线法;各判断方法适用性:面积和判断法、夹角和判断法:【优势】实现较为简单,效率高,不需要循环所有的roi的边,主要参与计算的是多边形的几个顶点;【劣势】需要多边形是规则的直边,对弧形的多边形则无法处理;凸多边形判断法:【优势】实现不难,就是逆时针判断目标点是否一直在各个相邻点形成的边的左侧.

2021-07-26 16:11:23 3448

原创 坐标旋转实现

文章目录前言一、点绕点旋转1.二维平面2.三维平面(点绕轴旋转)1.二维平面2.三维平面总结前言本文旨在记录旋转的问题,旋转存在两种情况:1.点绕点旋转;2.平面绕轴旋转;区别:点绕轴旋转:坐标系不动,点动;平面绕轴旋转:点不动,坐标系动;两者一般是变换矩阵中内部符号的变化,极易混淆。可参考:1.https://www.cnblogs.com/kljfdsa/p/9084598.html2.全篇可参考:https://blog.csdn.net/hbsyaaa/article/.

2021-07-21 16:08:12 2127 1

原创 Rviz——Marker

一个立方体模拟目标,添加文字描述位置、速度,目标航向的例子;void SubscribeAndPublish::pub_radarlist_func(){ int R_col=R.cols(); visualization_msgs::MarkerArray A; A.markers.resize(R_col);//marker矩阵的大小 visualization_msgs::MarkerArray A_Text; A_Text.markers.resi

2021-05-19 09:15:21 1132

转载 Ros发布图像/视频流消息

目的:Opencv处理后的图像,将其转变为Ros消息发布出来,就可以在Rviz中Add话题从而显示了。实现:1 创建一个发布者节点不断发布图像1.1 程序 #include <ros/ros.h> #include <image_transport/image_transport.h> #include <opencv2/highgui/highgui.hpp> #include <cv_bridge/cv_bridge.h>

2021-05-17 10:38:17 2494

原创 时间同步及在回调函数中发布ROS消息

1、五种时间同步方法(粗略同步)本文介绍的是时间粗略同步,时间精准同步的函数是:ExactTime,将ApproximateTime换成ExactTime即可;#include <ros/ros.h>#include <message_filters/subscriber.h>#include <message_filters/time_synchronizer.h> //法1的头文件#include <message_filt

2021-05-12 18:52:34 2248 9

原创 一、东西

目录1 包含其他人定义的msg2 查看及杀死线程3 … …正文1 包含其他人定义的msg情况1: 你的sub节点中,需要接收其他节点发布的ROS消息,用在

2021-05-04 15:30:13 172

转载 resize()和reserve()

首先分清楚两个概念:1.capacity:该值在容器初始化时赋值,指的是容器能够容纳的最大的元素的个数。还不能通过下标等访问,因为此时容器中还没有创建任何对象。2.size:指的是此时容器中实际的元素个数。可以通过下标访问0-(size-1)范围内的对象。就比如说一个瓶子的容量是600ml,意思是它最多可以装600ml,而不是说现在瓶子里就有600ml,这里的600ml就相当于capacity;而说现在瓶子的size为300ml,就是说它真的装有300ml。那么就可以分清楚resize和reserv

2021-03-26 16:57:00 545

原创 c++文件输入输出操作

在进行编程时,不可避免的要将程序运算结果输出到文件中,或者将文件中的数据读取到程序中,网上好多这个类继承那个类什么什么的,我也看不懂,所以总结、记录一下简单又实用的方法。《一》在介绍这个方法之前,先说一下string和int/double…类型的数据转换1、包含头文件—— #include sstream2、关键词:stringstrem3、使用:(1)string转intint a,b;string s(" 123 456");stringstream ss; //stringstre

2021-03-25 15:18:47 579

转载 Ubuntu上Qt安装以及配置完整步骤

(1)安装 Qt:第一步:到官网http://download.qt.io/archive/qt/下载 Qt 安装包,此处本人安装的是 qt-opensource-linux-x64-5.7.0.run;第二步:打开终端,输入命令:“sudo chmod -R 777 qtopensource-linux-x64-5.7.0.run”,赋予安装包权限;第三步:开始安装 Qt,输入命令“./qt-opensource-linux-x64-5.7.0.run”或者“sudo ./qt-opensource

2021-03-02 15:43:51 6572 2

原创 scp的使用

一 在没有网络下使用网线实现两台电脑的数据交互1 准备工作(1)假设电脑A 为远程电脑,电脑B 为本地电脑;(2)使用网线将两台linux系统的电脑A 和电脑B 连接起来;(3)设置两个的以太网的ip地址,假设电脑A 的ip为10.2.13.10,电脑B 的ip 为10.2.13.11(可随意设置,只需要保证前三个数值相同即可);(4)在电脑B 中打开终端terminal输入: ping 10.2.13.10 查看是否有效连接;如可以ping 通,那么进行步骤22 scp传输工作1、假设

2021-02-25 15:30:57 902

原创 最近邻目标关联算法

1 最近邻目标关联算法前言:就我所知,关联或匹配方法(如:匈牙利算法、最近邻目标关联算法、回溯法等)都是以获取两者之间的距离或其他标准(如网上回溯法的例子大部分是给工人分配工作,要求完成时间最少,那么这个标准就是时间,但是时间也可以看作是一种距离)为前提的,这个距离的获取可以是一些几何距离计算方法(如:欧式距离、标准欧式距离、自定义加权欧式距离、马氏距离等)、IOU等。只不过有的关联或匹配方法只需要求解两两之间的距离就可以了,如回溯法和最近邻目标关联算法,只需要知道每个工人完成某项工作所需的时间或者两

2021-02-19 15:08:07 3851 2

原创 关于联邦滤波器

将联邦滤波器整理如下,但因为可参考的材料太少,所以也并不一定完全正确,仅供参考。目录: 联邦滤波器 关键技术 一般结构 工作流程1 联邦滤波器联邦滤波器:是一种两级滤波器,由1个主滤波器和n个子滤波器组成,子滤波器之间是平行结构。主滤波器功能:时间更新;(n+1)个滤波器的结果融合;子滤波器功能:独立的进行时间更新和状态更新/量测更新(可以选择不同的滤波算法);2 关键技术联邦滤波器的关键技术:方差上界消除相关;统一的信息分配原则;方差上界消除技术:首先假设子滤波器和主滤波

2021-02-18 16:14:16 7436 22

原创 多传感器系统的信息融合滤波

1.信息融合信息融合: 联合标定 [ 时间同步( 硬同步、软同步 ( 精准、大致 ) )、空间同步 ( 旋转、平移矩阵 ) ] 目标匹配/关联 [ 相似性度量 / 距离计算( 标准欧式距离等 )、匹配 / 关联方法 ( 匈牙利算法 / 回溯法 / 指派法等 ) ] 目标状态估计 [ 多传感器数据加权融合 ( 按矩阵、按对角矩、按标量 ) ( 常用于实时多传感器观测数据 )、预测和观测状态融合 ( KF/EKF/UKF ) ( 常用于上一帧和现在帧的处理 ) ]...

2021-02-10 14:47:07 878 2

原创 如果使用复制过来的pkg包

在复制或者下载了程序时,src下的CmakeLists.txt是复制不了的,那么该如何处理呢?创建工作空间及其下的: src mkdir -p ~/fanmin_ws(可自定义工作空间)/src #递归创建目录进入到工作空间中: cd ~/catkin_ws #切换至创建的工作空间中编译: catkin_make #此时src内部生成CmakeLists.txt将下载或者复制过来的pkg放到src里边,重新 catkin_

2020-12-28 10:50:01 209

转载 Linux常用命令

参考:https://blog.csdn.net/weixin_44985880/article/details/108399357https://www.runoob.com/linux/linux-command-manual.html本文主要记录一些常用的Linux命令。1、系统信息显示arch 显示机器的处理器架构uname 显示当前操作系统信息 uname -a 显示全部信息,可采用uname --help查看每个单独功能如何实现,显示如下: -a, --all

2020-10-28 16:06:05 81 2

原创 工作记录——相似度判断及C++实现

一、 欧式距离欧氏距离是最常见的距离度量,衡量的是多维空间中点之间的绝对距离。1.手动输入数组中数据个数,保证了数组中数据数量相同,所以没有再次进行数量判断,在实际应用时,如果是读取的数据,则应该进行数量是否相等的判断。2.定义一个距离判断的类,在类的构造函数中调用距离计算的成员函数,#include<iostream>#include<cmath>usi......

2020-10-26 09:11:55 1014

转载 Eigen Matrix删除矩阵某一行或某一列

删除矩阵某一行:void RemoveRow(Eigen::Matrix3Xd& matrix, unsigned int rowToRemove) { unsigned int numRows = matrix.rows() - 1; unsigned int numCols = matrix.cols(); if( rowToRemove < numRows ) { matrix.block(rowToRemove,0,numRows-rowToRemove,nu

2020-10-05 09:53:42 2661

原创 角点检测和亚像素检测

pro文件:INCLUDEPATH += /usr/local/include \ /usr/local/include/opencv \ /usr/local/include/opencv2LIBS += /usr/local/lib/libopencv_highgui.so \ /usr/local/lib/libopencv_core.so \ /usr/local/lib/libopencv_im

2020-07-09 09:33:37 304

原创 Autoware的安装及使用

挖一个安装及使用autoware的坑,最近来填。

2020-04-29 09:50:07 6931 22

原创 回溯法

Time : 2020.01.16这是一篇关于“回溯法”的文章。/************************************************************************** 功能: 将n个作业分配给n个人完成,使得总花费时间最短(回溯法)******************************************************...

2020-01-17 19:37:24 153

原创 匈牙利算法

Time:2020.01.16这是一篇以“工作记录——2”为基础的,实现匈牙利算法的工作记录。程序是参照二分图匹配实现的,他的前提就是已经确定两个集合之间的吸引情况,即0或者1。但是我通过几何距离算法得到的是两个集合之间的距离,所以我主观的将最小的和次之的数设置为1,其余的设置为0。总感觉这种方法带入了主观判断,有一些缺陷,因此接下来要考虑对数组采用“指派法”或者“回溯法”实现。#inc...

2020-01-16 15:56:49 195 1

原创 数据的最小值和次小值

Time:2020.01.16PART One这里首先定义了一个5*5的数组,目的是求解数组每行的最小的和次之的两个数据,该程序实现了矩阵每行最小的两个值的程序。目的:为了求矩阵中每行最小的和次之的两个数据的位置,考虑先找到目标数据,然后对其定位。int main() { nx=5; ny=5; // int b=100,a=30; vector...

2020-01-16 14:31:27 1068

转载 ROS Marker工具的使用

上海硅步ROS连载系列43期 RViz工具使用实操https://mp.weixin.qq.com/s?__biz=MzA5NjkyMzI2OA==&mid=2651197718&idx=2&sn=8d070f799a1af5e61fe733d4b027c89f&chksm=8b5a0afdbc2d83eb769a9940cc75cb659caae47b721a2...

2020-01-02 11:17:47 2935 5

原创 launch文件启动多个节点

当编写的程序中存在多个节点时,每次都使用“rosrun 功能包名 节点名”一个个开启节点是很麻烦的,因此开始学习如何采用xxx.launch文件启动多个节点,并记录下在编写的过程中踩过的雷。1 一个简单的launch文件1.1 将 launch文件放在哪里?在“功能包名”(我用catkin_create_pkg创建的包名为package) 目录下,创建**.launch文件(我是为了启动im...

2019-12-25 10:30:03 4541 5

原创 ROS 创建及使用msg和srv(二)

ROS 创建及使用msg和srv(一)介绍了如何创建和编译msg及srv文件,接下来将介绍如何使用。1. 使用新建的msg上一章work/src/myros/msg目录下建立了num.msg文件,现在要使用num.msg创建两个节点,在myros/src目录下新建exa1.cpp和exa2.cpp,同时调用num.msg。1.1 exa1.cpp:#include "ros/ros.h"...

2019-12-13 11:11:53 557

原创 ROS 创建及使用msg和srv(一)

1. 什么是msg文件和srv文件1.1 msg文件msg是一个简单的txt文件,每行定义一个信息域。其格式为:类型 名称类型 包括:int8, int16, int32, int64 (plus uint*)float32, float64stringtime, durationother msg files可变长度array[ ] and 固定长度array[C]Head...

2019-12-11 18:33:03 555 4

转载 ROS发布及订阅消息简单实践(二)

一.在catkin_ws/src/pkg_name/src下创建talker.cpp和listener.cpp.分别编辑三个文件:1.你创建的publisher(talker.cpp):#include#include<ros/ros.h>#include<std_msgs/String.h>int main(int argc,char** argv){ros...

2019-12-10 19:39:01 525 1

空空如也

空空如也

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

TA关注的人

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