- 博客(35)
- 资源 (6)
- 问答 (5)
- 收藏
- 关注
原创 2D平面机器人运动ESKF过程相关方程推导
2D平面运动相关状态量及符号约定机器人(Robot)状态:世界系下位置(Positon)记为PR=∣xRyR∣P_R=\begin{vmatrix} x_R \\ y_R \end{vmatrix}PR=xRyR,世界系下航向(orientation)记为Φ\PhiΦ;路标点(Landmark)状态:世界系下位置(Postion)记为PL=∣xLyL∣P_L=\begin{vmatrix} x_L\\ y_L \end{vmatrix}PL=xLyL;约定:真实状态(true
2023-06-02 22:46:36 669
原创 ROS .bashrc文件下source无效问题完美解决手段
1、注释掉 .bashrc文件下的所有 source部分,只留下source /opt/ros/melodic/setup.bash2、删掉已有包的所有 devel,build文件夹并重新 catkin_make 编译3、将相应的路径重新添加到 .bashrc 文件下进行source 即可...
2022-03-18 20:38:52 2178 1
原创 bamvo视觉里程计编译报错‘cv::imshow(cv::String const&, cv::_InputArray const&)’未定义的引用
缺少库导致报错,在CMakeLists.txt中,加上find_package( OpenCV 3 REQUIRED ) #缺少库,导致报错完整的CMakeLists.txt文件如下:cmake_minimum_required(VERSION 2.8.3)project(bamvo)find_package(catkin REQUIRED COMPONENTS cmake_modules cv_bridge eigen_conversions geometry_msg
2021-11-02 11:01:18 731 2
原创 Pangolin安装error: ‘AV_PIX_FMT_VAAPI_MOCO’ was not declared in this scope
重装ffmpeg,版本为3.4.8
2021-10-05 13:56:14 1251
原创 ceres编译报错
按照ceres官网教程Installation — Ceres Solver编译安装ceres出现错误,原因是要先编译安装glogs和gflags两个依赖库,依赖库的安装参考Linux下安装glog和gflags_大葱敏的博客-CSDN博客_linux 安装glog
2021-10-05 09:50:30 860
原创 UBUNTU to UBUNTU VSCODE远程不能显示gui的完美解决方案
参考老外的回答:https://github.com/microsoft/vscode-remote-release/issues/267#issuecomment-535403394我的本地机是UBUNTU18.04远程服务器主机是UBUNTU20.04VSCODE下,使用SSH-REMOTE连接后,需要在连接后的终端下输入:export DISPLAY=localhost:10.0这样VSCODE才能调试远程GUI程序。...
2021-07-13 22:44:16 650
原创 Eigen向量Vec3f使用的坑
注意:Eigen库中,Vec3f是定义向量,比如定义:Vec3f translation(1,2,3)和Vec3f(4,5,6),他俩相乘得到的是32而不是Vec3f( 4,10,18 );因为它们是一维向量不是矩阵
2021-07-05 20:29:14 578
原创 编译程序时报错:undefined reference to `cv::dnn::dnn4_v20210301::Net::~Net()‘
原因:CMakeLists.txt文件没有指定dnn模块,将语句find_package(OpenCV 4 REQUIRED opencv_core opencv_imgproc opencv_highgui opencv_calib3d opencv_videoio opencv_imgcodecs )修改为:find_package(OpenCV 4 REQUIRED)即可编译通过。...
2021-07-03 15:50:23 4484 1
原创 VSCODE 编译生成动态链接库时需要注意命名
我在当前目录下有3个文件,分别是object_detector.h,object_detector.cpp和main.cpp。其中,main.cpp的编译要依赖于objector.cpp生成的库。我用VSCODE编译object_detector.cpp好后,生成object_detector的二进制文件,但是当编译main时,却链接不上,后面我灵机一动,将:object_detector重命名为libobject_detector.so,这样就能链接上啦。最后,附上我的VSCODE的配置文件:
2021-06-27 11:24:01 1630
原创 UBUNTU下编译OPENCV4.5.2提示找不到CUDA SDK
在终端键入:sudo ln -s /usr/local/cuda-5.5 /usr/local/cuda
2021-06-24 21:24:33 763
原创 变换矩阵矩阵到底要左乘还是右乘!!!
最近又要开始改SLAM算法了,又遇到了旋转变换矩阵需要左乘还是右乘的问题,这里举个例子来形象说明: 如下图所示:为了便于举例,这里我们仅考虑二维情况下的变换假设相机F1在世界坐标系下的位姿为:(这里仅举二维齐次矩阵为例,三维同理)|a b 0||c d 0||0 0 1|假设从F1到F2只有平移而没有旋转,令F1沿x轴和y轴各平移1m,问,F1在平移后的位姿应该是多少?易知,上述作用在F1上的变换矩阵T为:|1 0 1| |0 1 1| |0 0 1| 将T左乘.
2021-05-26 09:02:15 5132
原创 最完整剖析为什么需要四次挥手
1、首先,你要知道,数据报的结构如下图所示:2、你要知道FIN的含义即:发送FIN=1,即上图中,F位置位,会使得FIN接收方得到的信息是——FIN发送方不再向我发送数据了。而FIN发送方的本意则是:我不会再向你发送数据,但我还能接收你的数据。3、而事实上,对于四次挥手,如下图所示:第二次挥手时,主机2往往没有发送完数据,如果将2,3次挥手合并,那么就会导致主机1忽略主机2发的数据,要知道,主机1可能是想要这份数据的。因此,如果二次挥手有数据发送,那么就不能合并,其次,如果发送方
2021-03-25 09:19:14 2254
原创 关于C++虚函数表的理解
C++虚函数表只有在C++中使用面向对象编程时才会用到;一般,设计作为基类的类,其中必会声明虚函数,设class Base{ pubilc: Base(); virtual a();......}那么,Base类会维护一个虚表,同时有一个虚表指针指向该虚表,虚表的内容就是虚函数的入口地址,此处是a;那么当继承Base时:class Child: public Base{ pubilc: Child();
2021-03-22 20:56:53 86
原创 对于创建链表引发的思考
今天刷到一道链表创建的题。平时做的基本是题目给你提供好的链表,而不需要自己创建。举个例子,对于vector来说,其实,当我们声明如:vector<int> v(10,0);所调用的vector类的构造函数内部调用了new来给对象分配了空间。因此,当你需要创建诸如:链表,二叉树等结构时,对于每一个新加入结点,都必须为它new分配一个内存,否则,对于如下语句:ListNode n(10);ListNode* n = new ListNode(10);第一条语句,当
2021-03-18 21:17:48 110
原创 归并排序算法通俗易懂
//归并排序算法 vector<int> merge_sort( vector<int>& arr ) { int m = arr.size(); if( m<2 ) return arr; int pivot = m/2; vector<int> left; vector<int> right; //std::copy( arr.begin(),.
2021-03-14 20:15:36 186 1
原创 快速排序简单易懂
//快速排序算法 vector<int> quick_sort( vector<int>& arr ) { int m = arr.size(); if( m==0 ) return arr; //数组有可能为空如[0,1,2,1] if( arr.size()==1 ) return arr; vector<int> left; vector<int>.
2021-03-14 17:38:29 98
转载 英伟达显卡驱动报错转载,主要是添加黑名单步骤
https://blog.csdn.net/ksws0292756/article/details/79160742
2020-11-15 16:38:34 197
原创 联想小新AIR15 2021 intel 酷睿版 WIN10+UBUNTU安装遇到的坑
1、第一坑来自BIOS,BIOS需要在Configration目录下把英特尔卷管理关闭,这样才会跳出ACHI磁盘管理模式,UBUNTU就能识别出硬盘了。2、第二个坑来自于无线网卡驱动安装.鲁大师这个傻逼软件显示笔记本的网卡是AX201而实际上是AC9560,因此导致驱动装错,UBUNTU一直无法显示WIFI。...
2020-11-14 13:58:17 4413 7
原创 LINUX C++ serial port block问题
最近在LINUX下做串口通信,串口通信很重要的问题就是阻塞与非阻塞两个问题,同时,阻塞与非阻塞是否能够真正起作用和内存分配也有很大关系,下面以阻塞设置来举例说明一下:阻塞何时会正常作用,又何时不能作用。首先,我们当然是把串口打开,并设置为阻塞模式啦,串口设置共有三种模式,为:O_RDWR , O_NOCTTY ,O_NDELAY 我们不选择最后一个非阻塞模式O_NDELAY选项即可。如下打开串口:fd_ = open(dev_, O_RDWR | O_NOCTTY )设置联合体
2020-09-20 12:06:18 428
转载 2020-09-02
四元数的理解转载:https://blog.csdn.net/candycat1992/article/details/41254799
2020-09-02 15:15:00 583
转载 2020-09-01
转载:https://blog.csdn.net/qq_42700518/article/details/104453752?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.c
2020-09-01 23:10:47 84 1
原创 基于ROS系统的手部追踪器程序设计
第一部分: 完成该程序的注意事项1、ROS默认的python版本为2.7,但是在python2.7环境下,手部追踪程序不能正确运行,其主要原因在于python2与python3的运算规则存在很大差异,比如对于除法即 ‘/’运算符,python2下,int/int = int, 而python3环境下int/int = int=float,而cv.dnn模块以及python脚本程序中涉及到很多'/'运算,因此必须让该程序在ROS系统下以python3环境运行,否则不可能得出想要的效果。2、如何使ROS
2020-08-08 20:29:26 194
原创 PIL与opencv-python坐标系
PIL与cv坐标系是不一样的,这点在编程时一定要注意。PIL采用图像坐标系,而cv是数组坐标系,看下面测试代码:test_img = 'E:\\YanYiS\\AItech\\deeplabv3\\my_test\\img.png'a = np.array( [ [1,2,3,4],[5,6,7,8],[9,10,11,12] ] )cv.imwrite( test_img,a )cv_img = cv.imread( test_img,0 )pil_img = Image.open( tes
2020-06-09 16:07:41 548
原创 python-pclpy一致性采样
本人目前在使用pclpy进行3D点云相关处理,由于pclpy目前没有相关官方文档,因此我会持续更新我的博客,和大家一起学习使用pclpy。下面的代码展示了利用pclpy对点云进行一致性采样的操作过程,我已详细注释每一步代码的含义,大家可以参考:# -*- coding: UTF-8 -*-import pclpyfrom pclpy import pclimport mathim...
2020-03-27 08:46:26 735 2
原创 WIN10-Python-pclpy离线安装步骤
Python-pclpy离线安装步骤欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导...
2020-03-24 16:33:03 2325 7
原创 tensorflow GPU版本 cuda8.0 cudnn6.0
本人之前一直用 tensorflow CPU版本,由于实验室有两台GPU服务器,听说GPU能够快十几倍,确实如此,GPU加速计算快了不止一点半点。但安装过程中遇到了很多问题。一定要让cuda,cudnn,tensorflow-gpu,一定要匹配。下面上干货。我自己目前的配置为:python3.6 + tensorflow1.4 + cuda8.0 + cudnn6.0安装代码如下:(py3.6...
2019-12-31 12:42:48 393
原创 C++空指针表示
C++有三种方式来表示空指针,定义int *pt则 pt=0;(C++98赋予数值0的含义)pt = NULL;(C语言定义的宏)pt = nullptr;(C++11关键字)我们应当尽量使用nullptr
2019-12-13 09:47:52 1465
原创 C++类—头文件与源文件
C++头文件一般只放类成员声明,而不将类成员函数的初始化放在头文件中,原因在于,若将成员函数初始化放置于头文件中,当其他源文件也引用这个文件时,便会引发重复定义这一冲突。例如:class stringBad{private:public:int length(char* s);} int stringBad::length(char*s){return strlen(s);}...
2019-12-13 09:43:25 917
原创 C++类的5种默认成员函数
当创建一个C++类时,若不显示提供如下所述的成员函数,则C++将自动提供,并可能出错。1、默认构造函数2、默认析构函数3、默认复制构造函数4、赋值运算符5、地址运算符(返回this指针,与我们的初衷一致,一般不会出现问题)需要引起高度重视的是3、默认复制构造函数。当类中成员函数存在创建动态内存时,必须显示构造复制构造函数如CLASS::class_(CLASS &s){}...
2019-12-10 20:08:11 405
原创 C++delete与delete[]使用时区别
delete与delete []均需与new配套使用,原因在于,new会申请一个内存区块,同时会令一个指针指向该区块,但是这个内存区域不会自动释放,不及时释放会导致内存泄漏,因此需要delete与delete[].当申请如:int *pt=new int;使用delete释放当申请如:int *pt = new int[8];使用delete []释放。即申请时有[],释放...
2019-12-10 18:56:04 113
原创 C++类静态数据成员
C++类静态成员不依赖于类对象而是拥有独立的存储空间,因此可以单独声明。但是,不可以在类声明中进行初始化,因为类声明只描述了如何分配内存,并没有实际分配内存。例如声明一个stringBad类:class stringBad{private:static int num_of_object;//不能在此初始化static int num_of_object=0;public:strin...
2019-12-09 16:02:44 108
原创 深入浅出解释旋转变换矩阵
深入浅出讲解旋转变换矩阵近来本人在自学《机器人学基础》一书,起初自以为理解了旋转变换本质,后来发觉最初的理解是不准确或者说完全错误的。于是上网查找了许多关于旋转矩阵以及方向余弦的相关文章,但发现他们所写过于复杂,或者说还没有深入浅出地解释好旋转矩阵本质。本人完全理解变换矩阵后,希望以一种简单的几何原理而不是利用空间坐标计算来解释旋转矩阵,相信看到本文之后你会完全理解旋转矩阵本质。记住一句话:旋转...
2018-11-26 17:35:56 6781 2
OpenNI安装包.rar
2020-03-15
基于卷积神经网络的智能猜拳机器人设计.rar
2020-01-09
PAT乙级题号1005提示段错误
2019-04-19
VS2010 Menu资源快捷键在Accelerator中定义后没有作用
2018-11-11
WIN32简单创建窗口程序,编译通过但却显示不出结果,代码如下,求助?
2018-10-25
TA创建的收藏夹 TA关注的收藏夹
TA关注的人