自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 资源 (2)
  • 收藏
  • 关注

原创 ROS 报错 ModuleNotFoundError: No module named ‘rospkg‘

ROS 报错 ModuleNotFoundError: No module named ‘rospkg‘写在前面一、问题描述二、出现原因1. Anaconda base 环境下的出现原因2. Anaconda 虚拟环境下的出现原因三、解决方法1. Anaconda base 环境下解决方法2. Anaconda 虚拟环境下解决方法写在前面一、问题描述自己在ubuntu16.04 下安装了Anaconda3后,在 base 环境下运行ROS,当自己运行 rosrun rqt_tf_tree rqt_tf

2022-01-04 11:41:58 2838 1

原创 Python模块导入出现ModuleNotFoundError: No module named ‘***’

Python模块导入出现ModuleNotFoundError: No module named ‘***’ Traceback (most recent call last):File “/usr/flink/alert/server/greeter_server.py”, line 8, in fromexample import helloworld_pb2, helloworld_pb2_grpcModuleNotFoundError: No module named ‘example’

2022-01-04 11:32:15 4037

原创 opencv知识点汇总

Opencv基础函数汇总Opencv常用图像处理函数汇总利用轮廓检测实现二维码定位HOG特征及其python代码实现

2021-11-18 11:17:49 2297

原创 C++教程6——动态内存

1、什么是动态内存C++编程中内存可以被分为两部分,分别是栈和堆。栈:在函数内部所声明的所有变量使用的都是栈空间。堆:其为程序中未使用的所有空间,可用于动态分配。使用特定的运算符可以进行动态内存分配。利用new运算符可以实现动态内存分配。使用delete运算符可以删除之前分配的动态内存。2、实现方式在C++中可以通过如下方式实现动态内存的分配。type_name* element= new class_name; 以int为例,具体应用方式为:int* test = new int;

2021-11-18 10:46:38 207

原创 C++教程5——多态与接口

1、什么是多态与接口C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。接口描述了类的行为和功能,而不需要完成类的特定实现。通过多态与接口的配合,可以使得C++中同一个函数在派生类与基类中实现方式不同,假设我们有一个名为shape的类,circle和rectangle都是它的派生类,circle和rectangle的求面积的方式不同,如果我们可以重定义circle和rectangle的面积求取方式,那么就更合适。此时基类提供一个接口,派生类对这个接口进行重定义,实现特定的功

2021-11-18 10:38:46 295

原创 C++教程4——类的静态成员

1、什么是静态成员当我们声明一个类的成员为静态时,无论创建多少个类的对象,静态成员是共享的。我们可以在类的外部对静态成员进行初始化,首先讲解静态数据的定义方式:class Box{public: static int Count; ……};则初始化方式如下:// 初始化类 Box 的静态成员int Box::Count = 0;而类的静态函数的定义方式如下:如果把函数成员被声明为静态的,静态函数可以在类对象不存在的情况下被调用,只要使用类名加范围解析运算符 :: 就可以访问静态

2021-11-18 10:34:19 155

原创 C++教程3——类的构造函数和析构函数

1、什么是构造函数和析构函数类的构造函数是一种特殊的成员函数,它会在每次创建类的新对象时执行。类的析构函数也是一种特殊的成员函数,它会在每次创建类的新对象时执行。2、构造函数和析构函数的声明构造函数的声明方式是在类内添加一个名字与类名相同的函数。析构函数则是在名字前添加一个"~"号。/*Box基类*/class Box{protected: int width; int length;public: void setWidth(int widthIn); void setLeng

2021-11-18 10:09:16 169

原创 C++教程2——类的重载

1、类的重载是什么C++的重载分为两类,一个是函数的重载,一个是运算符的重载,重载的意思就是允许在一个作用域内对函数或者运算符指定多个定义,以实现不同的功能。其中函数的重载是,在同一个作用域内,可以声明与定义几个名字相同的函数,但是其形式参数不同(不同包括形式参数类型、多少、顺序等等),但是必须注意的是不能仅通过返回类型的不同来重载函数。其中运算符的重载是,这里用一个例子来说明,**假设我们定义了一个int a = 5,int b = 10;此时调用int c = a + b;得到c = 15。**但

2021-11-18 10:00:58 2330

原创 C++教程1--------类的继承

1、类的继承是什么类的继承概念是怎么样的呢?它的概念就好像哺乳动物和人的关系,哺乳动物是一个类,人也是一个类,人属于哺乳动物,哺乳动物所具备的特征人都具备。因此,我们在“创建“人这个类的时候,不需要从头创建,它有许多特点可以从哺乳动物处获取。换一种话说,当创建一个类时,您不需要重新编写新的数据类型和函数,只需指定新建的类继承了一个已有的类的成员即可,这就是类的继承。这个已有的类称为基类,新建的类称为派生类。在C++语言中,假设存在一个类,名为Box:class Box {protected:

2021-11-18 09:46:34 628

原创 Lambda函数与表达式

这里写目录标题1、什么是Lambda函数2、简单Lambda函数使用示例3、捕捉列表1、什么是Lambda函数C++11提供了对匿名函数的支持,匿名函数被称为 Lambda 函数,也可以被称作Lambda表达式。具体的形式如下:[capture](parameters)mutable->return-type{body}其中存在四个参数,分别是:1、[capture] :capture是捕捉列表。捕捉列表是Lambda表达式的开头。2、(parameters):parameters是参

2021-11-18 09:36:38 576

原创 Ubuntu16.04中python3添加opencv库

Ubuntu16.04中python3添加opencv库python3版本的选择opencv版本的选择以及安装pip3的安装在python3中添加opencv库python3版本的选择如果使用python3.5的版本,安装opencv比较困难,建议非必要选择3.6/3.7版本这里选择3.7.9版本进行安装python官网opencv版本的选择以及安装选择python3.7.9安装包下载存放到你想放的文件夹下,解压输入以下的操作 sudo apt-get install python3.7

2021-10-11 12:04:52 551

原创 解决Anaconda与ROS冲突解决方法

解决Anaconda与ROS冲突解决方法汇总一下在网上找到的Anaconda与ROS冲突解决方法anaconda和ros的安装就不介绍了。创建ros虚拟环境安装完成后,在.bashrc/会出现:# >>> conda initialize >>># !! Contents within this block are managed by 'conda init' !!__conda_setup="$('/home/“user”/anaconda3/bin

2021-10-11 11:54:18 535

原创 【pip install】ERROR: Cannot uninstall ‘xx‘. It is a distutils installed project 的解决办法

【pip install】ERROR: Cannot uninstall ‘xx’. It is a distutils installed project 的解决办法在使用pip install 时出现的问题:.... Attempting uninstall: llvmlite Found existing installation: llvmlite 0.23.1ERROR: Cannot uninstall 'llvmlite'. It is a distutils install

2021-06-21 11:52:13 404

原创 【LeetCode每日一题】1190. 反转每对括号间的子串

【LeetCode每日一题】1190. 反转每对括号间的子串题目示例 1示例 2示例 3示例 4题解题目给出一个字符串 s(仅含有小写英文字母和括号)。请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。注意,您的结果中 不应 包含任何括号。示例 1输入:s = "(abcd)"输出:"dcba"示例 2输入:s = "(u(love)i)"输出:"iloveu"示例 3输入:s = "(ed(et(oc))el)"输出:"leetcode"示例

2021-05-26 22:01:17 88

转载 【LeetCode每日一题】810. 黑板异或游戏

【LeetCode每日一题】810. 黑板异或游戏题目示例题解题目黑板上写着一个非负整数数组 nums[i] 。Alice 和 Bob 轮流从黑板上擦掉一个数字,Alice 先手。如果擦除一个数字后,剩余的所有数字按位异或运算得出的结果等于 0 的话,当前玩家游戏失败。 (另外,如果只剩一个数字,按位异或运算得到它本身;如果无数字剩余,按位异或运算结果为 0。)换种说法就是,轮到某个玩家时,如果当前黑板上所有数字按位异或运算结果等于 0,这个玩家获胜。假设两个玩家每步都使用最优解,当且仅当 Alic

2021-05-26 21:57:16 64

转载 【LeetCode】1707. 与数组中元素的最大异或值

【LeetCode每日一题】1707. 与数组中元素的最大异或值题目示例 1示例 2题解题目给你一个由非负整数组成的数组 nums 。另有一个查询数组 queries ,其中 queries[i] = [xi, mi] 。第 i 个查询的答案是 xi 和任何 nums 数组中不超过 mi 的元素按位异或(XOR)得到的最大值。换句话说,答案是 max(nums[j] XOR xi) ,其中所有 j 均满足 nums[j] <= mi 。如果 nums 中的所有元素都大于 mi,最终答案就是 -

2021-05-25 21:56:20 112

原创 【LeetCode每日一题】664. 奇怪的打印机

【LeetCode每日一题】664. 奇怪的打印机题目示例1示例2题解题目有台奇怪的打印机有以下两个特殊要求:打印机每次只能打印由 同一个字符 组成的序列。每次可以在任意起始和结束位置打印新字符,并且会覆盖掉原来已有的字符。给你一个字符串 s ,你的任务是计算这个打印机打印它需要的最少打印次数。示例1输入:s = "aaabbb"输出:2解释:首先打印 "aaa" 然后打印 "bbb"。示例2输入:s = "aba"输出:2解释:首先打印 "aaa" 然后在第二个位置打印 "b"

2021-05-25 21:51:56 93

原创 【LeetCode】1787. 使所有区间的异或结果为零

【LeetCode每日一题】1787. 使所有区间的异或结果为零题解第一种情况第二种情况题解第一种情况采用贪心的方法求得最优解。因为修改后的元素可能是原序列中没有出现过的元素。如果修改的某一列的元素是原序列中没有出现过的元素,那么这种情况下一定可以用贪心的办法求出最优解,做法是将众数最小的一列中的每个数变成一个全新的,该列中没有出现的,使得每个周期内的元素的异或和为0的数。第二种情况采用dp的方法求得最优解在这种情况下,由于没有最终修改后的元素是原数组中存在的数,因此可以从前往后枚举每一列,

2021-05-25 21:44:19 107

原创 cartographer学习笔记

cartographer学习笔记cartographer理论及实现:添加链接描述cartographer理解:添加链接描述Cartographer代码阅读笔记:添加链接描述cartographer生成ros格式地图:添加链接描述另一博主注释版源码地址:添加链接描述cartographer参数调试:添加链接描述...

2021-05-19 08:43:53 219

原创 【LeetCode每日一题】363. 矩形区域不超过 K 的最大数值和

【LeetCode每日一题】363. 矩形区域不超过 K 的最大数值和题目题解题目给你一个 m x n 的矩阵 matrix 和一个整数 k ,找出并返回矩阵内部矩形区域的不超过 k 的最大数值和。题目数据保证总会存在一个数值和不超过 k 的矩形区域。题解前缀和暴力class Solution {public: int sum[101][101]; int maxSumSubmatrix(vector<vector<int>>& matri

2021-05-18 16:52:20 102

原创 【LeetCode每日一题】368. 最大整除子集

【LeetCode每日一题】368. 最大整除子集题目示例 1示例 2题解题目你一个由 无重复 正整数组成的集合 nums ,请你找出并返回其中最大的整除子集 answer ,子集中每一元素对 (answer[i], answer[j]) 都应当满足:answer[i] % answer[j] == 0 , 或 answer[j] % answer[i] = 0 如果存在多个有效解子集,返回其中任何一个均可。示例 1输入:nums = [1,2,3]输出:[1,2]解释:[1,3] 也会被视

2021-05-18 16:48:12 83

原创 【LeetCode每日一题】377. 组合总和 Ⅳ

【LeetCode每日一题】377. 组合总和 Ⅳ题目示例1题解题目给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。题目数据保证答案符合 32 位整数范围。示例1输入:nums = [1,2,3], target = 4输出:7解释:所有可能的组合为:(1, 1, 1, 1)(1, 1, 2)(1, 2, 1)(1, 3)(2, 1, 1)(2, 2)(3, 1)请注意,顺序不

2021-05-13 09:56:10 120

原创 【LeetCode每日一题】897. 递增顺序搜索树

【LeetCode每日一题】897. 递增顺序搜索树题目示例1题解题目给你一棵二叉搜索树,请你 按中序遍历 将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。示例1输入:root = [5,3,6,2,4,null,8,1,null,null,null,7,9]输出:[1,null,2,null,3,null,4,null,5,null,6,null,7,null,8,null,9]题解保存前一个结点即可,采用中序遍历。/**

2021-05-13 09:49:29 62

转载 【LeetCode每日一题】1011. 在 D 天内送达包裹的能力

【LeetCode每日一题】1011. 在 D 天内送达包裹的能力题目示例 1示例 2题解题目今日题目与410. 分割数组的最大值是一样的题目,只不过今日题目包装了一层。传送带上的包裹必须在 D 天内从一个港口运送到另一个港口。传送带上的第 i 个包裹的重量为 weights[i]。每一天,我们都会按给出重量的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。返回能在 D 天内将传送带上的所有包裹送达的船的最低运载能力。示例 1输入:weights = [1,2,3,4,5,6,

2021-05-13 09:44:28 63

原创 【LeetCode每日一题】938. 二叉搜索树的范围和

【LeetCode每日一题】938. 二叉搜索树的范围和题目示例1题解题目给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。示例1输入:root = [10,5,15,3,7,null,18], low = 7, high = 15输出:32题解1.递归class Solution {public: int rangeSumBST(TreeNode* root, int low, int high) { if (!r

2021-05-13 09:38:11 44

原创 【LeetCode每日一题】633. 平方数之和

【LeetCode每日一题】633. 平方数之和题目示例 1示例 2题解题目给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c 。示例 1输入:c = 5输出:true解释:1 * 1 + 2 * 2 = 5示例 2输入:c = 3输出:false题解1.预处理+查询class Solution {public: typedef unsigned long long ULL; bool judgeSquareSum(int

2021-05-13 09:29:28 58

原创 【LeetCode每日一题】403. 青蛙过河

【LeetCode每日一题】403. 青蛙过河题目示例 1题解题目一只青蛙想要过河。假定河流被等分为若干个单元格,并且在每一个单元格内都有可能放有一块石子(也有可能没有)。青蛙可以跳上石子,但是不可以跳入水中。给你石子的位置列表 stones(用单元格序号 升序 表示), 请判定青蛙能否成功过河(即能否在最后一步跳至最后一块石子上)。开始时, 青蛙默认已站在第一块石子上,并可以假定它第一步只能跳跃一个单位(即只能从单元格 1 跳至单元格 2 )。如果青蛙上一步跳跃了 k 个单位,那么它接下来的跳跃

2021-05-13 09:14:32 233

原创 【LeetCode每日一题】137. 只出现一次的数字 II

【LeetCode每日一题】137. 只出现一次的数字 II题目示例1示例2题解题目给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。示例1输入:nums = [2,2,3,2]输出:3示例2输入:nums = [0,1,0,1,0,1,99]输出:99题解//哈希表class Solution {public: int singleNumber(vector<int>& nu

2021-05-13 08:40:37 58

原创 【LeetCode每日一题】 1720. 解码异或后的数组

【LeetCode每日一题】 1720. 解码异或后的数组1720. 解码异或后的数组554. 砖墙7. 整数反转740. 删除并获得点数1720. 解码异或后的数组取数组的最后一个元素进行异或即可。class Solution {public: vector<int> decode(vector<int>& encoded, int first) { vector<int> res {first}; for (au

2021-05-12 21:10:15 71

转载 【LeetCode每日一题】1723. 完成所有工作的最短时间

【LeetCode每日一题】1723. 完成所有工作的最短时间[1] 1723. 完成所有工作的最短时间[2] 473. 火柴拼正方形[1] 1723. 完成所有工作的最短时间1.题目:给你一个整数数组 jobs ,其中 jobs[i] 是完成第 i 项工作要花费的时间。请你将这些工作分配给 k 位工人。所有工作都应该分配给工人,且每项工作只能分配给一位工人。工人的 工作时间 是完成分配给他们的所有工作花费时间的总和。请你设计一套最佳的工作分配方案,使工人的 最大工作时间 得以 最小化 。返回分

2021-05-11 19:56:15 265

转载 【LeetCode每日一题】1482. 制作 m 束花所需的最少天数

【LeetCode每日一题】1482. 制作 m 束花所需的最少天数相关题目1482. 制作 m 束花所需的最少天数1011. 在 D 天内送达包裹的能力相关题目1482.制作 m 束花所需的最少天数1011.在 D 天内送达包裹的能力1482. 制作 m 束花所需的最少天数1.题目:给你一个整数数组 bloomDay,以及两个整数 m 和 k 。现需要制作 m 束花。制作花束时,需要使用花园中 相邻的 k 朵花 。花园中有 n 朵花,第 i 朵花会在 bloomDay[i] 时盛开,

2021-05-11 15:47:29 59

原创 【LeetCode每日一题】938. 二叉搜索树的范围和

【LeetCode每日一题】938. 二叉搜索树的范围和题目示例 1示例 2题解题目请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。举个例子,如上图所示,给定一棵叶值序列为 (6, 7, 4, 9, 8) 的树。如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。如果给定的两个根结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false 。示例 1输入:root1 = [3,5,1,6,2,9,8,null

2021-05-11 14:14:58 74

原创 【LeetCode每日一题】1734. 解码异或后的排列

【LeetCode每日一题】1734. 解码异或后的排列题目示例 1题解题目相似题目:1720. 解码异或后的数组这道题是给定first,球perm,而今天这道题目是有一个前置条件,那就是n个正整数的排列,这个条件比较重要,因为可以确定地是perm数据是1~n范围地有序数,尽管有可能乱序,具体看后面题解。给你一个整数数组 perm ,它是前 n 个正整数的排列,且 n 是个 奇数 。它被加密成另一个长度为 n - 1 的整数数组 encoded ,满足 encoded[i] = perm[i]

2021-05-11 11:39:32 60

原创 激光slam :5基于图优化的激光SLAM 方法(Grid-based)

@[TOC](激光slam :5基于图优化的激光SLAM 方法(Grid-based))课程内容Graph-based SLAM1.概念非线性最小二乘原理1.解决的问题2.示意图3.误差函数5.线性化6.求解非线性最小二乘在SLAM中的应用1.图的构建2.误差函数3误差函数的线性化4.固定坐标系5.构建线性系统6.求解cartographer介绍...

2021-05-06 09:54:29 609 1

原创 激光slam :4基于滤波的激光SLAM方法----Grid-based

激光slam4:基于滤波的激光SLAM方法----Grid-based课程内容贝叶斯滤波粒子滤波FastSLAM的原理及优化gmapping课程内容基于滤波的激光SLAM方法----Grid-based栅格地图基于激光贝叶斯滤波1.概念2.特性3.推导4.实例粒子滤波1.示意图2.状态传播3.权重评估5.重采样6.算法流程FastSLAM的原理及优化1.介绍2.算法流程3.问题及优化4.最终优化流程gmapp

2021-04-14 11:12:32 170

原创 激光slam:3激光的前端配准算法

激光slam:3激光的前端配准算法课程内容ICP匹配方法PI-ICP方法基于优化的方法课程内容ICP匹配方法1.ICP介绍2.已知对应点的求解3.未知对应点的求解EM算法是非线性MLE的工具ICP的缺点是由于激光点是离散的,前后两帧打到的可能不是同一个物体。PI-ICP方法基于优化的方法1.ICP方法2.VICP方法3.里程计辅助方法...

2021-04-13 11:46:34 275

原创 激光slam学习——第三章(激光slam运动畸变去除)习题

激光slam学习——第三章(激光slam运动畸变去除)习题题目描述解题思路:代码实现功能实现题目描述本次的作业为实现一个里程计去除激光雷达运动畸变的模块本次的作业里面有两个工程:champion_nav_msgs和LaserUndistortion;大家需要首先编译安装champion_nav_msgs,按照champion_nav_msgs的readme文件执行即可,注意根据自己ubuntu的不同版本做修改。本次程序的运行过程为:实现LidarMotionCalibration函数,并进行

2021-04-12 21:54:22 1277 9

原创 激光slam学习——第二章(里程计标定)习题

深蓝学院激光slam学习——第二章(里程计标定)习题题目描述可能出现的问题第二种解决思路:第三种解决思路:题目描述本次的作业为用直接线性方法来对机器人的里程计进行校正。给出的文件中包含有本次作业使用的bag数据,路径为odom_ws/bag/odom.bag。本次的作业中,需要实现三个函数,分别为:Main.cpp,第340行中的cal_delta_distance()函数,该函数的功能为给定两个里程计位姿,计算这两个位姿之间的位姿差。Odom_Calib.cpp,第23行Add_Data()

2021-04-12 14:57:16 2330 9

原创 [ROS]message filters时间同步

[ROS]message filters时间同步1.message_filters介绍message_filters用于对齐多种传感信息的时间戳,对齐时间戳有两种方式,一种是时间戳完全对齐 :ExactTime Policy ,另一种是时间戳相近:ApproximateTime Policy2.message_filters作用同时订阅并发布话题时间同步3.message_filters实例头文件//ros头文件#include <ros/ros.h>//时间

2021-04-06 11:11:29 337

原创 Eigen学习--------块操作

Eigen学习--------块操作Eigen 为 Matrix 、Array 和 Vector提供了块操作方法。块区域可以被用作 左值 和 右值。在Eigen中最常用的块操作函数是 .block() 。block() 方法的定义如下:block of size (p,q) ,starting at (i,j)。matrix.block(i,j,p,q); matrix.block<p,q>(i,j);上述两种形式都可以被用在固定大小和动态大小的矩阵中。 举例如下:

2021-04-02 17:36:16 587

rosdep_update.rar

rosdep_init+rosdep_update离线文件,包括下载步骤,脚本文件

2021-11-23

环境peizhi.rar

深度学习环境配置(显卡驱动450+cuda10.2+cudnn7.6.5离线文件,脚本文件安装显卡驱动)

2021-11-23

空空如也

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

TA关注的人

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