自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 各种杂记汇总

数据处理matlab读取文本数据

2021-01-13 20:52:09 234

原创 gtsam: 解决 error while loading shared libraries: libmetis-gtsam.so

参考github上的issue:https://github.com/borglab/gtsam/issues/380@acxz , this issue is solved by addling following in ~/.bashrc suggested by @ProfFanexport LD_LIBRARY_PATH=/home/lin/local/lib/:$LD_LIBRARY_PATH.But this issue is wired, so please let me know.

2022-05-03 16:50:10 590

原创 LIO-SAM:在高斯牛顿法求解过程中用SO3代替欧拉角

LIO-SAM发表于IROS2020,是一个效果非常好的惯性-激光紧耦合里程计我打算给我们的机器人搞一个激光里程计,于是打算把LIO-SAM改一改搞过来修改过程中发现一个问题:在里程计求解(mapOptimization的LMOptimization函数)过程中,作者是用欧拉角来表示位姿的旋转部分的这对于移动机器人来说还算可行,因为一般情况下地面移动机器人的pitch不会到达90°,也就不会引起死锁但我们的机器人是攀爬机器人,经常出现翻转的动作,因此不能使用欧拉角来表示旋转;因此,需要对这部分做.

2021-11-17 13:18:42 870

原创 Rviz——terminate called after throwing an instance of ‘std::bad_alloc‘解决方案

某天开启rviz报错:[ INFO] [1636163183.952628072]: rviz version 1.13.19[ INFO] [1636163183.952689224]: compiled against Qt version 5.9.5[ INFO] [1636163183.952704610]: compiled against OGRE version 1.9.0 (Ghadamon)[ INFO] [1636163183.956634846]: Forcing Open.

2021-11-06 10:57:22 3901

原创 pcl需要注意的编译问题——补充

原贴参考这-march=native是真的天坑,我编译pcl的时候没注意这个,后来使用过程中常出现segment fault(特别是使用ransac和filter的时候)为了将这个选项去掉,我用了一个较为激进的做法:在pcl源码目录下用grep -r '-march=native'指令搜索出设置这个选项的文件,结果如下:cmake/pcl_find_sse.cmake: check_cxx_compiler_flag("-march=native" HAVE_MARCH)cmake/p.

2021-10-19 13:00:13 321

原创 rviz marker测试程序

#include <geometry_msgs/PoseStamped.h>#include <ros/ros.h>#include <chrono>#include <thread>#include <mutex>#include <visualization_msgs/Marker.h>enum CONTROL_STATUS {RECORD, WAIT, QUIT} CONTROL_FLAG = WAIT;void

2021-10-16 08:34:29 240

原创 PCL-OpenCV冲突的解决方案

测试LIO-SAM,编译期报错:error: field ‘param_k_’ has incomplete type ‘flann::SearchParams’查了github,把/usr/include/pcl-1.7/pcl/kdtree/kdtree_flann.h里面两个变量改成指针,顺利通过编译roslaunch lio_sam run秒崩,报malloc(): memory corruption开idee单独调试mapOptimation,定位到allocateMemory函数内的kd.

2021-10-08 14:47:20 1376 4

原创 ROS自带OpenCV与新版本OpenCV冲突的一个解决方案

file(GLOB_RECURSE OLD_OPENCV "/usr/lib/x86_64-linux-gnu/libopencv*")list(REMOVE_ITEM catkin_LIBRARIES ${OLD_OPENCV})

2021-07-22 18:58:07 1149 1

原创 在CLION中调试带有其他ros package自定义消息包的程序

先写好cmakelists和package.xml依赖另一个包要修改的东西然后在终端上catkin_make一下(这样是为了在devel文件夹下生成我们需要的头文件)在CLION工程的settings处的Environments加上:CMAKE_PREFIX_PATH=catkin_ws/devel:/opt/ros/kinetic...

2021-06-09 10:34:06 231

原创 librealsense2 not found踩坑记录

莫名报错:程序找不到librealsense2.so.2.42问题是,我的程序并不需要用到realsense经过一番排查(变量控制法,逐一注释头文件),发现是pangolin依赖了这个库(PS:???莫名其妙)先用ldconfig -p | grep pangolin查看pangolin装在哪,然后用ldd xxx/xxx/libpangolin.so看依赖情况:``席八…还真是pangolin背锅;先不研究为什么pangolin会依赖了realsense的库,先重装一波pangolin再说重装.

2021-06-07 10:56:27 950 1

原创 Sophus安装踩坑

装SLAM十四讲第二版提供的SophusEigen版本3.4.0报错:/home/ch/下载/Sophus-13fb3288311485dc94e3226b69c9b59cd06ff94e/test/core/test_so2.cpp:99:25: error: implicitly-declared ‘Eigen::Map<Sophus::SO2<double> >::Map(const Eigen::Map<Sophus::SO2<double> &.

2021-05-08 23:17:12 2871 12

原创 实现UWB RO-SLAM

前言最近在搞多传感融合,目前打算用优化方法来做;那么大名鼎鼎的g2o肯定是要学会用的了,在这记录一下学习的过程,以及用g2o对文章Multi-modal Mapping and Localization of Unmanned Aerial Robots based on Ultra-Wideband and RGB-D sensing中UWB RO-SLAM进行复现SLAM十四讲第六章中的典型例子这个例子是用带有噪声的指数函数值来估计指数函数的参数a,b,c,详情看SLAM十四讲哈,这里不叙述

2021-04-22 11:36:02 1061

原创 c++常见面试题

文章目录语言C++ 中智能指针和指针的区别是什么?C++ 中多态是怎么实现的简述 C++ 右值引用与转移语义STL 中 vector 与 list 具体是怎么实现的?常见操作的时间复杂度是多少?C++ 11 有什么新特性简述 new 与 malloc 的区别深拷贝与浅拷贝区别是什么?C++ 中虚函数与纯虚函数的区别编译时链接有几种方式?静态链接和动态链接的区别是什么?内存中堆与栈的区别是什么?const、static 关键字有什么区别类默认的构造函数是什么?简述 C++ 中内存对齐的使用场景变量的声明和定义

2021-04-07 22:58:04 215

原创 深入探索C++对象模型_(4)虚函数表

文章目录虚函数表指针虚函数表虚函数表是怎么工作的?虚函数表的布局?多重继承的类对象虚函数指针是怎么布局的?虚函数表(vtbl)和虚函数表指针(vprt)是在什么时候被创建的?虚函数表指针如果某个类中声明了虚函数,那么编译器会在该类对象以及该类的派生类对象中插入一个指针变量,此变量就是虚函数指针虚函数表指针的位置可能在对象开头,也可能在对象末尾,取决于编译器// project100.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <ios

2021-04-03 11:19:29 477 1

原创 深入探索C++对象模型_(3)构造函数

默认构造函数(或称缺省构造函数)默认构造函数就是没有任何参数的构造函数合成默认构造函数传统认识认为,如果我们自己没有定义任何构造函数,那么编译器就会为我们隐式自动定义一个默认的构造函数事实上,"合成的默认构造函数"只有在必要的时候,编译器才会为我们编译出来,非必要的时候不会合成必要的时候:该类不包含任何构造函数,但包含一个类成员,这个类成员有缺省的构造函数(这种情况下合成一个缺省构造函数的目的是:调用类成员的默认构造函数),此时编译器合成一个默认构造函数,在这个函数里调用类成员的默认构

2021-04-01 11:19:04 86

原创 深入探索C++对象模型_(2)派生类对象的内存布局

先推荐一个在线运行CPP的网页,免去编写CMAKE之苦:Compile and Execute C++ Online派生类对象是包含基类子对象的。如果派生类只从一个基类继承的话,那么这个派生类对象的地址和基类子对象的地址相同。但如果派生类对象同时继承多个基类,那么大家就要注意:第一个基类子对象的开始地址和派生类对象的开始地址相同。后续这些基类子对象的开始地址与继承顺序有关调用哪个子类的成员函数,这个this指针就会被编译器自动调整到对象内存布局中 对应该子类对象的起始地址那去..

2021-04-01 09:54:45 184

原创 深入探索C++对象模型_(1)类对象占用的空间

空类占用的空间空类对象占用的空间为1个字节#include <iostream>using namespace std;class A {};int main() { cout << "size of an empty class is: " << sizeof(A); return 0;}上面的例子输出为: size of an empty class is 1为什么空类占用空间为1?第一种解释: 看看隔壁的 Go,struct{}

2021-03-31 10:50:00 213

原创 gcc、g++升级与多版本管理

gcc升级gcc多版本管理

2021-02-08 08:36:12 244

原创 STL学习:vector篇

参考代码内部定义重点的定义:///元素类型typedef T value_type;///迭代器typedef T* iterator; typedef const T* const_iterator;//底层const(const在*号左边),迭代器本身能被修改,迭代器所指之物不可修改typedef reverse_iterator_t<T*> reverse_iterator;typedef .

2021-02-04 16:59:18 188

原创 字符串匹配算法:暴力匹配

int BruteForceMatching(const string& target, const string& pattern) { int t = 0, p = 0; for (; t < target.size() && p < pattern.size(); t++) { if (target[t] == pattern[p]) p++; else p = 0; } if (p == p.

2021-01-11 16:25:16 131

原创 字符串匹配算法:KMP(c++实现)

参考文献:如何更好地理解和掌握 KMP 算法?vector<int> get_next_kmp(const string& pattern) { int i = -1, j = 0; vector<int> next(pattern.size(), -1); while (j < pattern.size()) { if (i == -1 || pattern[i] == pattern[j]) next[++j] = ++

2021-01-11 16:05:28 140

原创 自学计算机资源

计算机网络CS144 lab

2021-01-07 11:45:48 104

原创 字符串排序算法:低位优先排序(LSD)

LSD:低位优先的字符串排序,核心思想就是对字符串的每个字符做一次键索引排序#include <iostream>#include <utility>#include <vector>#include <string>using namespace std;int main(int argc, char** argv) { vector<string> to_sort_strings = {"456346", "1234.

2021-01-01 14:17:32 638

原创 字符串排序算法:键索引排序法

#include <iostream>#include <utility>#include <vector>using namespace std;int main(int argc, char** argv) { vector<pair<string, int>> index_string = { {"Gary", 2}, {"Jenny", 3}, {"Tom", 2}, {"Jane", 1}, {"Wade", 1}, .

2021-01-01 10:52:13 302 2

原创 CGI程序sleep后无法打印信息到网页

/* * adder.c - a minimal CGI program that adds two numbers together *//* $begin adder */#include "csapp.h"int main(void) { char *buf, *p; char arg1[MAXLINE], arg2[MAXLINE], content[MAXLINE]; int n1=0, n2=0; /* Extract the two argume.

2020-12-16 10:31:19 143

原创 类对象模型实验:类数据成员大小

#include <iostream>#include <vector>using namespace std;/** c++对象内存模型 **////一、空类字节大小class EmptyClass {public:};///二、对象类型占用字节大小//结构体的有效对齐值的确定://1)当未明确指定时,以结构体中最长的成员的长度为其有效值//2)当用#pragma pack(n)指定时,以n和结构体中最长的成员的长度中较小者为其值。数据成员、结构体和类.

2020-12-02 20:17:22 129

原创 SLAM杂记

ICP实现

2020-11-29 09:52:02 81

原创 装Opencv Aruco踩坑记录

本想着用 oepncv的aruco模块,按教程官网教程操作,先#include<opencv2/aruco.hpp>,ide报错:没有这个文件去百度搜了下,发现aruco这个模块是属于功能不稳定的模块之一,被放在opencv_contribute那。也就是说想用aurco就要重新编译Opencv。附上安装opencv/opencv_contribute的教程重装opencv过程又出幺蛾子: 出了个error:/usr/local/include/ceres/internal/integer.

2020-11-27 11:25:09 2714

原创 记录Opencv手眼标定的过程

参考文献参考文献1:OpenCV手眼标定(calibrateHandeye())参考文献2:【OpenCV3学习笔记 】相机标定函数 calibrateCamera( ) 使用详解(附相机标定程序和数据)思路:按照参考文献1的做法,首先要拿到标定板的位姿与机器人TCP的位姿;TCP的位姿是由机器人上位机软件或API给出的,因此第一步是先想办法拿到标定板的位姿标定板位姿:直接跑参考文献2的代码即可,我稍作了修改,代码如下:拿到位姿之后,进一步用参考文献二中的方法,标定出手眼变换矩阵..

2020-11-25 19:00:55 3503 1

原创 CLION-ROS:调用同一工作空间下的package报xxxConfig.cmake(find_package找不到该功能包)的问题

原因是当前的CMAKE_PREFIX_PATH没有包含当前工作空间的devel文件夹,有两种方法可解决:(1)在用终端打开Clion之前,先source了目标工作空间的setup.bash(2)直接把目标工作空间的setup.bash写到~/.bashrc里去...

2020-10-29 19:59:02 657

原创 PoseStamped转成tf

//// Created by ch on 2020/10/20.//#include <tf/transform_broadcaster.h>#include <geometry_msgs/PoseStamped.h>#include <Eigen/Dense>#include <Eigen/Core>void DrMarker0ToTF(const geometry_msgs::PoseStampedConstPtr& data).

2020-10-20 19:52:19 905

原创 Eigen杂记

旋转相关eigen 中四元数、欧拉角、旋转矩阵、旋转向量

2020-10-10 11:43:17 133

原创 ROS——CLION:A包引用同一工作空间下B包的自定义消息

1.先看这个:引用同一目录下其他包的自定义消息2.由于Clion不会自动生成自定义的消息头文件,因此要如下处理:将catkin_make生成的devel文件夹下的share文件夹完整复制至听catkin-build-debug下;然后正常使用即可:#include <ui/robot_feedback.h>...

2020-10-09 19:45:04 274

原创 构造函数的奇怪现象

定义了一个航迹推算的类,无参构造函数如下:DeadReckoning::DeadReckoning() : _T_w_0_current(Transform()), _T_w_6_current(Transform()), _T_w_0_last(Transform()), _T_w_6_last(Transform()), _encoder_data(EncoderDataType()), _kinem.

2020-09-27 16:19:35 100

原创 读取/IMU topic并以TF转发

读取/IMU topic并以TF转发#include <ros/ros.h>#include <sensor_msgs/Imu.h>#include <tf/transform_broadcaster.h>/* 参考ROS wiki * http://wiki.ros.org/tf/Tutorials/Writing%20a%20tf%20broadcaster%20%28C%2B%2B%29 * */void ImuCallback(const sens

2020-09-24 16:20:21 941

原创 2020-09-21

类型转换类型转换coding style优秀的代码规范

2020-09-21 08:31:44 46

原创 QT杂记

QT核心机制QT核心机制信号与槽窗口类的弹出窗口弹出子窗口后禁用主窗口close自动释放空间点击红叉的event物理通信Qt串口编程串口读取/写一个字节QML的Qt进阶之路事件QCloseEvent计时计时...

2020-09-19 15:31:06 71

原创 rosbag踩坑:自定义消息包千万别用中文注释

那天尝试录一个自定义消息包的rosbag,发现matlab打不开这个包然后尝试用rqt_bag打开这个包,打开是打开了,当我想画出某个话题的数据曲线时,报错:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 434: ordinal not in range(128)一查,发现了类似的情况:https://www.guyuehome.com/237说是中文会引起这个错误随即直接打开rosbag看

2020-09-08 14:17:24 803

原创 maskrcnn配置踩坑

https://www.jianshu.com/p/9f498a512ce4

2020-07-28 15:18:40 273

原创 STL源码剖析系列——第一章、STL概论

一、STL概论这一章其实提到了挺多东西,如STL的又由来、STL文件的分布、STL config、STLconfig语法解惑等,但这些我都不大感兴趣,我只记下了我感兴趣的一个点:STL六大组件:容器(container):如map、vector、list等数据结构,用来存放数据,因此称为容器。从实现来看,他们是class template。迭代器(iterators):迭代器实际上是一种泛型指针,是容器和算法之间的桥梁。算法(algorithm):如sort、search等,从实现上来说是一种

2020-07-19 19:35:39 152

空空如也

空空如也

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

TA关注的人

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