自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Cartographer最新版完整安装教程(2020.8.7成功安装)

说实话Cartographer是比较难装上的,以来挺多,对各种包的版本要求也多,我装过很多次,最后都没能正常的跑起来,今天总算是成功了,同时也按照本教程安装成功了,大家可以严格按照这个来,别寄希望于Google官方教程了,那个不管用的。准备工作安装依赖库(默认已安装ros和cmake3.5以上版本) sudo apt-get update sudo apt-get...

2020-01-21 14:14:01 16787 17

原创 机器人领域C++/ROS/TCP编程

memsetmemset()函数原型是extern void *memset(void *buffer, int c, int count) buffer:为指针或是数组, c:是赋给buffer的值, count:是buffer的长度.int abs(int i); // 处理int类型的取...

2019-10-25 15:30:27 1006

原创 point cloud transformation between ROS and PCL

pcl::toROSMsg() and pcl::fromROSMsg() are both included inpcl_conversions/pcl_conversions.h (from ROS) and<pcl/ros/conversions.h> (from PCL), with the same namespace pcl::.The former is the one used to transform point clouds between sensor_msg..

2021-04-07 13:11:59 173

原创 C++开发易犯错误记录

1.std::vector<std::shared_ptr<T>>的初始化std::vector<PointCloudPtr> t(10, PointCloudPtr(new PointCloud()));这里PointCloudPtr(new PointCloud())生成一个临时的智能指针,然后通过浅拷贝的形式,赋值给了vector中的10个元素,因此10个元素实际上指向了同一块内存,这种浅拷贝并不是我们想要的!!!2.resize()的使用resiz

2021-03-31 16:39:52 193

原创 联想笔记本安装win10和ubuntu双系统装机踩坑记录

新买了台联想的Y9000K笔记本,想安装ubuntu双系统,遇到了一些以前没有遇到过的问题,这里记录一下疑难杂症。可能是机器比较新,安装了Ubuntu16之后,自带网卡,触摸板,声卡都无法正常工作,这个问题不知道怎么解决,也有别的博主题到了https://blog.csdn.net/zhh1997423/article/details/107197053。装Ubuntu18,则在装机阶段黑屏,显示不正常,表现为花屏,这个跟显卡有关,链接在这里https://blog.csdn.net/WangJia

2021-03-21 23:13:46 781

转载 source、sh的区别

Ubuntu中shell脚本无法使用source命令的原因与解决方法本文简要描述了在ubuntu系统下无法使用source命令的原因,及对应的两种解决方法,并在附录中引用一篇文章来详细解释source命令的用法1|0问题:由于在交叉编译时,需要在当前shell内执行source命令来临时指定系统的编译环境为嵌入式环境。故希望通过编写一个shell脚本来自动执行编译命令,然而在脚本中通过source命令指定编译环境时,系统会提示找不到命令 2|0原因:source命令是bas...

2021-01-30 14:15:27 1222

原创 leetcode79

class Solution {public: bool exist(vector<vector<char>>& board, string word) { if(board.empty() || board[0].empty()){ return word.empty(); } vector<vector<bool> > map(board.size(), vecto.

2020-12-01 23:51:59 77

转载 C++强制类型转换运算符(static_cast、reinterpret_cast、const_cast和dynamic_cast)

将类型名作为强制类型转换运算符的做法是C语言的老式做法,C++ 为保持兼容而予以保留。C++ 引入了四种功能不同的强制类型转换运算符以进行强制类型转换:static_cast、reinterpret_cast、const_cast 和 dynamic_cast。强制类型转换是有一定风险的,有的转换并不一定安全,如把整型数值转换成指针,把基类指针转换成派生类指针,把一种函数指针转换成另一种函数指针,把常量指针转换成非常量指针等。C++ 引入新的强制类型转换机制,主要是为了克服C语言强制类型转换的以下三

2020-10-29 14:03:40 107

原创 Git使用简洁指令速记

// 初始化仓库git init// 添加文件到缓存区// 使用通配符git add *.c// 当前目录下所有文件git add . // 提交到本地仓库git commit -m "add:first commit"// 克隆git clone git://github.com/schacon/grit.git mygrit// git status获取在上次提交后,文件是否有改动,其中-s获得简短输出git status -sA 代表,相比于上次提交时的状.

2020-10-12 15:23:42 109

原创 ROS中发布各种形状的visualization_msgs::Marker及rviz中的显示

以下发布的是根据协方差矩阵求解的表征位置误差1 sigma范围的椭球,以及表征速度的箭头 void publish(){ visualization_msgs::MarkerArray ma; visualization_msgs::Marker m; visualization_msgs::Marker array; m.header.frame_id = "scan"; m.id = 0; m..

2020-09-25 16:04:36 5446

原创 视觉SLAM十四讲中Sophus安装

安装过程:git clone http://github.com/strasdat/Sophus.gitcd Sophusmkdir buildcd buildcmake ..sudo make install过程中,下载可能有点慢,耐心等待,千万不要出现下载文件不全的情况.如果出现与Eigen相关的问题,自己检查本机Eigen的版本是否为3.3.0及以上版本(这里说明使用apt-get方式安装的Eigen默认为3.2.92),如果不是需要进行升级,这里的升级不是简单的重新下载新包安

2020-08-19 10:44:34 1809

转载 OpenCV-3.1.0安装(2020.8.18)

简易安装opencv2:?1conda install --channel https://conda.anaconda.org/menpo opencv或:?1sudo apt-get install libopencv-dev python-opencv简易安装opencv3:?1pip install opencv-python或:?1pip install opencv-python==3.1.0简易安装方式是从库中安装编译好了的Opencv,这种安装方...

2020-08-18 09:25:09 610

原创 TCP通信server端搭建(C++)

因为工作需要,需要将我们计算的某种Pose数据发送给远端的client,远端的client规定了Pose的格式。搭建TCP server的过程如下: ///jin void createTCPServerClient(){ // 创建address // 结构体socketaddr_in用于描述Internet socket address,而且是ipv4的,区别于socketaddr_in6 struct sockaddr_in se

2020-08-05 19:08:53 1819

原创 const与智能指针:const shared_ptr<T>&

shared_ptr<T>::operator->返回的是T*类型指针,非const T*指针。因此通过const shared_ptr<T>&类型的ptr可以直接调用T各个原始的方法,不用担心const与非const问题。具体shared_ptr::operator->实现如下,摘自boost1.52.0版本boost\smart_ptr\shared_ptr.hpp?12345T * operator-> () const // never...

2020-07-28 10:09:25 5629

原创 ubuntu命令行连接WiFi

参考:Ubuntu命令行链接WIFIubuntu 命令行连接 WiFi一开始也能搜索不到想要的信号,等待路由器建立网络,多刷新试试,或者直接输入自己设置的网络名称和密码.

2020-07-11 13:57:02 825

转载 [转载]C++ tcp/ip网络编程中listen函数和accept函数详解和区别

listen函数摘要:listen函数使用主动连接套接口变为被连接套接口,使得一个进程可以接受其它进程的请求,从而成为一个服务器进程。在TCP服务器编程中listen函数把进程变为一个服务器,并指定相应的套接字变为被动连接。listen函数在一般在调用bind之后-调用accept之前调用,它的函数原型是:intlisten(int sockfd, int backlog)参数sockfd被liste...

2020-07-10 14:58:59 423

原创 linux安装搜狗拼音输入法

参考如何在ubuntu 18.04上设置设置sougo拼音输入法我这里是ubuntu16也是没问题的另外。如图候选词出现乱码,参考

2020-03-31 17:11:59 291

原创 Ubuntu系统问题汇总

存储空间不够了,装了个新硬盘,流程参考:Linux下挂载机械硬盘,通俗易懂有截图还有这个也很全面实用:linux挂载的硬件设备重启后丢失,问题根源在哪里,如何解决?本来打算挂载到/,即根目录上,实际上是不可行的,参考:什么是挂载,Linux挂载详解...

2020-03-30 14:42:44 153

原创 【Leetcode207】Course Schedule

有向判断是否存在环:策略:依次寻找图中入度为0的节点,代表这个课没有别的依赖,不需要先修别的课程,然后,将节点踢掉,同时,依赖于它的其他课程入度都-1.规定:prerequisites中的[i, j]代表i依赖j,j是i的先修,j指向i,而在邻接表中,存在第j行中,也就是说邻接表的第j个元素中保存着j所指向的节点,即j是谁的先修课程,方便将它的children节点入度-1.usin...

2020-03-29 14:20:14 83

原创 【Leetcode208】Implement Trie (Prefix Tree)

方法一:笨方法,搞两个unordered_set保存所有的word和word的prefix,可以通过,但是时间复杂度太高了;方法二:字典树,重在如何抽象出树的nodeclass TrieNode{public: bool isWord; TrieNode* children[26]; TrieNode(){ isWord = false...

2020-03-25 23:17:59 98

原创 【Leetcode200】Number of Islands

搜索四联通区域:方法一:之前是这么写的:记录每个region的root,最后根据真正的root的个数来判断,这是纯循环的方式,效率不是很高5%.//class Solution {//public:// int findRoot(vector<int> root, int region){// while(root[region] != reg...

2020-03-22 13:53:00 125

原创 【Leetcode152】Maximum Product Subarray

Runtime:4 ms, faster than87.06%ofC++online submissions forMaximum Product Subarray.Memory Usage:7 MB, less than100.00%ofC++online submissions forMaximum Product Subarray.典型的动态规划,因为起点和终...

2020-03-21 20:05:49 106

原创 【Leetcode148】Sort List

用递归实现的归并排序,能通过,但是感觉效果不是很好,/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solut...

2020-03-21 18:39:35 77

原创 【Leetcode146】 LRU Cache

//高效的get决定了需要有hash //每次操作都要将被操作的数的最近访问信息进行调整,涉及随机位置的变换,即从中间移动到队首,需要list在o(1)中移动节点 class LRUCache { public: list<pair<int, int>> l_; unordered_map<int, list<pair<int...

2020-03-21 14:05:45 69

原创 【Leetcode142】Linked List Cycle II

快慢指针,慢指针走了d+s1的时候,快指针走了d+s1+s2+s1正好跟满指针重合,其中s1+s2就是周长,此时快指针的总路程正好也是慢指针的2倍,即:d+s1+s2+s1 = 2×(d+s1)s2 = d即从起点和第一次相遇点同时出发,必然在入环处相遇。/** * Definition for singly-linked list. * struct ListNode...

2020-03-20 00:23:49 59

原创 【Leetcode139】Word Break

祥和是一个动态规划问题,原因在于每个地方都有可能作为分割点,在“可以”作为分割点的情况下,不一定就要在这里分割,例如:一直s="aaaaaaa"共7个'a',字典{“aaa", "aaaa"}。如果把前6个a分成了2组”aaa",那么剩下的一个就分割不了,所以说这里要讨论的是到index处可不可以分割成完整的,再例如index1, index2, index3代表3个位置的索引,如果想要知...

2020-03-19 00:18:40 151

原创 【Leetcode392】Is Subsequence

如果用递归或许可以解决,但是,100也不是个小数字。考虑使用双指针,一次循环来解决:class Solution {public: bool isSubsequence(string s, string t) { for(size_t i = 0, j = 0; i < s.length(); ++i, ++j){ while(t[j...

2020-03-15 19:23:58 74

原创 【Leetcode387】First Unique Character in a String

class Solution {public: int firstUniqChar(string s) { vector<int> v(26, -1); for(size_t index = 0; index < s.length(); ++index){ if(v[s[index]-'a'] == -1){ ...

2020-03-15 18:31:08 70

原创 【Leetcode383】Ransom Note

class Solution {public: bool canConstruct(string ransomNote, string magazine) { std::vector<int> bag(26, 0); for(const auto& c : magazine){ bag[c-'a']++; ...

2020-03-15 18:06:31 989

原创 【Leetcode371】 Sum of Two Integers

/*任何两个有符号数,在计算机内部都是用补码表示的,特点就是无论是正数还是负数,补码就按照:* 0+0=0, 0+1=1, 1+0=1, 1+1=10这种最朴素的方法计算,最前面的符号位也是如此,同时最前面溢出的就不要了* 最后再把补码变成源码,就得到了我们认知上的数(计算机内部不需要这一步,补码就可以了)* 考虑未操作的加法,无外乎本位加法,再和进位运算* 本位加法:* 0+...

2020-03-15 17:57:19 57

原创 【Leetcode367】Valid Perfect Square

笨方法就是类似于二分法的试,时间复杂度肯定很高。所以,从数学的角度,可能有解决方法:平方数一定是一系列奇数1,3,5,7...的加和,原因么,参考https://www.cnblogs.com/grandyang/p/5619296.htmlclass Solution {public: bool isPerfectSquare(int num) { if...

2020-03-14 00:52:28 65

原创 【Leetcode350】Intersection of Two Arrays II

Runtime:4 ms, faster than99.18%ofC++online submissions forIntersection of Two Arrays II.Memory Usage:7.9 MB, less than100.00%ofC++online submissions forIntersection of Two Arrays II.跟3...

2020-03-14 00:18:16 82

原创 【Leetcode349】Intersection of Two Arrays

must be unique让我想到了set,有序,而且自动unique,没想到可以通过vector初始化,不用一个个循环insert借助有序的特点,可以挨个位置的比较class Solution {public: vector<int> intersection(vector<int>& nums1, vector<int>&am...

2020-03-13 23:48:50 66

原创 【Leetcode342】Power of Four

直接循环的做法就不说了从二进制入手,很明显,对于4的幂,1只允许出现一次,而且是在偶数位上。操作上就是用1<<的方法就挨个获得该位置上的数,我的问题主要是:判断条件我已开始写的:if(num & (1<<index)==1)这是错的,==优先级为9,&优先级为10,所以并不会如期望的那样先做&再做==,这个点错过很多次了。clas...

2020-03-13 00:55:17 66

原创 【Leetcode299】Bulls and Cows

有个小细节,同样位置同样的数,不算作cow。计数排序的思想,因为对于cows,不管出现在哪儿,我只想知道每个数字在两个字符串中出现的最少次数。class Solution {public: string getHint(string secret, string guess) { vector<int> secret_count(10, 0); ...

2020-03-12 00:51:43 117

原创 【Leetcode292】Nim Game

思路真是一瞬间的事第一反应是走台阶那种题目,也就是说用递归?然后想可能从数学的角度有更好的方法,找规律试试,果然class Solution {public: bool canWinNim(int n) { return n%4 != 0 ; }};...

2020-03-11 00:13:25 67

原创 【Leetcode290】Word Pattern

Runtime:0 ms, faster than100.00%ofC++online submissions forWord Pattern.Memory Usage:7.9 MB, less than100.00%ofC++online submissions forWord Pattern.思路简单,主要是逻辑清楚,想的要全面,可能也没有什么简便方法了c...

2020-03-11 00:00:12 74

原创 【Leetcode263】Ugly Number

自己的数学功底太差了,首先想到的是一个个试,从235开始,看后面其他的质数能不能整除这个num;看答案,一直除以2, 3, 5,看最后剩下的是不是1,那我就有个疑问,万一剩下的是个合数,也不能说明啥呀但实际上是我太傻了,合数肯定可以继续分解,直到全部都是质数,如果可以分解出235之前就已经分解出来了也就是说,任何一个数肯定可以分解成,全质数的乘积,只要判断被2,3,5整除后还会不会剩...

2020-03-10 23:08:21 83

原创 【Leetcode168】Excel Sheet Column Title

Runtime:0 ms, faster than100.00%ofC++online submissions forExcel Sheet Column Title.Memory Usage:7.4 MB, less than100.00%ofC++online submissions forExcel Sheet Column Title.class Solu...

2020-03-10 00:00:16 91

原创 【Leetcode258】Add Digits

首先找规律;0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 170 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8规律是1~9的9进制循环,直接%9算的话:1~9分别对应:1 2 3 4 5 6 7 8 0而不是我们想要的:1 2 3 4 5 ...

2020-03-09 23:06:35 57

空空如也

空空如也

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

TA关注的人

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