自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

春至冬去

小白的倔强

  • 博客(33)
  • 资源 (5)
  • 收藏
  • 关注

原创 Sophus与Eigen之间矩阵转换

【代码】Sophus与Eigen之间矩阵转换。

2024-01-16 17:21:19 596

原创 EVO使用记录

evo使用记录

2022-04-19 22:07:11 420

原创 基于ar_track_alvar的二维码识别

基于ar_track_alvar的二维码识别1. ar_track_alvar功能包sudo apt-get install ros-melodic-ar-track-alvar2. 创建AR_ID可以是从0到65535之间任意数字的标号rosrun ar_track_alvar createMarker 03. -s参数设置生成二维码的尺寸rosrun ar_track_alvar createMarker -s 5 0rosrun ar_track_alvar createMarker

2022-02-23 09:52:24 2964 2

原创 标记蓝色区域的外部轮廓

标记蓝色区域的外部轮廓这里简单记录一下轮廓的提取,便于以后需要时查找。#include <opencv2/core/core.hpp>#include <opencv2/imgcodecs.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <opencv2/opencv.hpp>#include <opencv2/highgui/highgui.hpp>#include <io

2022-02-21 17:37:33 1987

原创 深度相机的障碍物检测

深度相机的障碍物检测这里简单备份一下,有关深度相机障碍物检测的学习内容1. 准备相机的驱动Ubuntu18.04+ROS+ros_astra_camera-master采用的是astra深度相机,安装Linux驱动:ros_astra_camera-master2. 图像转LaserScan2.1 depthimage_to_laserscan​ 下面这个包可以将深度图像数据转换为二维激光雷达常用的LaserScan消息格式。git clone -b melodic-devel http

2022-02-11 19:12:19 4428 5

原创 C++中的map学习记录

C++中的map学习记录参考一些博客的内容,对map的使用有了简单了解,整理如下:#include <iostream>#include <utility> //utility中定义的pair类型#include <string>#include <map> //map类型#include <vector>//using namespace std;int main(){ std::pair<std::string

2021-08-08 08:28:25 187

原创 C++快速排序——递归方法

C++快速排序——递归方法刚开始看《算法图解》,进行简单记录。书中第四章有一个快速排序的代码,采用的是递归方法,书中采用的是python,在这里尝试用C++实现一下。//divide and conquer//quicksort#include <vector>#include <iostream>using namespace std;vector<int> quicksort(vector<int> v){ int pivot;

2021-08-06 09:49:54 346

原创 SLAM相关库安装

SLAM相关库安装——Ubuntu18.0418.04的系统重装了一遍,各个库都已编译安装成功,在这里进行一下简单备份,以便以后还要重装…1.Eigen//下载地址:https://download.csdn.net/download/weixin_46181372/20033998查看库版本,我的版本为3.3.90:gedit /usr/include/eigen3/Eigen/src/Core/util/Macros.h //如果 eigen 二进制安装gedit /usr/loc

2021-07-05 22:05:14 292

原创 rosbag使用介绍

rosbag1. 录制包//录制所有的topicrosbag record -a 2. 查看包的信息rosbag info your.bag会显示如下内容:path: 2014-12-10-20-08-34.bagversion: 2.0duration: 1:38s (98s)start: Dec 10 2014 20:08:35.83 (1418270915.83)end: Dec 10 2014 20:10:14.38

2021-07-03 08:45:59 1686

原创 四元数乘法

四元数乘法简要记录一下,主要参考SLAM十四讲

2021-05-21 16:52:25 133

转载 PCL_viewer指令

pcl_viewer指令1. 打开点云pcl_viewer 1.pcd设置点的大小(点体积)pcl_viewer 1.pcd -ps 2快捷键:r键: 重现视角。如果读入文件没有在主窗口显示,不妨按下键盘的r键一试。j键:截图功能。g键:显示/隐藏 坐标轴。放大缩小: 除了滚动滑轮外,还可以有 Alt +/- (每次更小单位的变大变小)2. 保存当前视角在打开点云后, 按快捷键 ctrl+s, 自动生成 类似 ".da840c78a63cedf6cdf2dd9a9a9a6b5f28ae

2021-05-04 19:58:48 1701

转载 Scan Context 学习记录

Scan Context 学习记录知乎上看到一篇有关scan context的文章,感觉内容不错,便进行了学习与转载,文章链接附在最后scan context 是一篇论文中提出的,通过激光点云做场景识别或者定位,当然也可以用来做闭环检测。定位,通常是在历史帧中找到与搜索帧pose最接近的一帧,当然这只用到了pose。如果用点云去做匹配,找到最相似的那一帧点云,怎么做呢,直接3d-3d匹配是可以的,但是不够快。那么降维,把3D点云变成二维,然后去匹配。scan context的做法就是从3D点云上空俯视,

2021-04-25 15:21:18 2586

转载 std::thread(线程) 学习记录

std::thread(线程) 学习记录1. thread的创建以及面临的问题1.1 thread.cpp//创建线程,C++中提供头文件thread,使用std的thread实例化一个线程对象的创建//std::thread在#include头文件中声明,因此使用std::thread需要包含#include头文件#include <iostream>#include <thread>#include <glog/logging.h>using na

2021-04-09 11:51:37 227

转载 C++ 中的static关键字

C++ 中的static关键字(类中的static关键字)1、static 数据成员在类内数据成员的声明前加上关键字static,该数据成员就是类内的静态数据成员。#include <iostream.h>class Myclass{public: Myclass(int a,int b,int c); void GetSum(); private: int a,b,c; static int Sum; //声明静态数据成员}; int Myclass::Sum=0

2021-04-03 12:35:41 262

原创 GLog学习记录

GLog学习记录1. 严重程度GLog允许你制定消息的严重程度,一共有四个级别:INFO,WARNING,ERROR,FATAL。记录FATAL消息会终止程序(在记录消息之后),在GLog记录的消息的开头以I、W、E、F来表示信息的严重级别。2. 日志格式默认情况下日志会写入本地/tmp/文件夹中,文件名格式:<program name>.<host name>.<user name>.log.<Severity level>.<date&gt

2021-01-25 23:24:09 595

原创 CMakeLists文件规划学习

CMakeLists文件规划学习在学习他人代码的过程中了解到一些CMakeLists的使用技巧,所以进行一个简单总结1. 把各个包放在单独的cmake文件中调用一个包,就是常规的三个步骤:find_package,include_directions,target_link_libraries包多的时候代码太杂,所以我们需要把每个包对应的这些操作放在cmake文件夹下对应的XX.cmake文件中,然后在CMakeLists中include(cmake/XX.cmake)一行代码就可以搞定。2. 合

2021-01-15 17:04:11 573

原创 git tag的使用

git 如何获取指定的tag代码1.查看本地git仓库下的taggit tag2. 切换到某一个tag下git checkout tag_name提示!当前处于一个“detached HEAD”状态,每一个tag就是代码仓库的一个快照,如果你想编辑此tag下的代码,上面的方法就不适用了;你需要把tag快照对应的代码拉取到一个分支上。3.例如你想编辑v1.0 tag的代码,那么你可以做如下的操作git checkout -b new_branch v1.0git checkout -b

2021-01-14 01:16:19 319

原创 C++之链表

C++之链表怎么理解链表?就是说现在有一个小纸条,上面写着一个抽屉的地址,那个抽屉里面有一些你需要的东西,和一个新的写着地址的小纸条,这个小纸条又指向了一个新抽屉,大体可以这么理解程序所包含的头文件#include <iostream>#include <cstdlib>using namespace std;1. 构建抽屉既然把装有东西和写有地址的小纸条比作抽屉那么我们不妨先写出抽屉的结构体struct listpoint{ int data; /

2021-01-05 21:30:32 428

原创 C++之enum与switch

Explanation of switch_case1. switch_case示例#include "iostream"using namespace std;int main(){ int mark; cout<<"请输入成绩(0~100):"; cin>>mark; switch (mark/20) { case 5: //当输入mark/20等于5时 { if(ma

2020-12-27 11:00:30 4561 2

原创 GMapping学习记录

GMapping学习记录1. Rao-Blackwellized 粒子滤波在定位问题中,每一个粒子只需要表示一个可能的姿态。但在SLAM中,姿态和地图都是变量,所以一个粒子需要同时保存所有历史时刻的机器人位姿和整个地图。根据贝叶斯法则,有这一分解相当于把SLAM分离为定位和建图两步,大大降低SLAM问题的复杂度。该处理方法称为Rao-Blackwellized粒子滤波(RBPF)。这里通过上一个时刻的地图和运动模型预测当前的位姿,然后计算权重,即在当前位姿下得到当前观测的可能性,再进行重采样,进

2020-12-24 15:46:30 902

转载 Gmapping学习记录

Gmapping 原理分析概念:1.Gmapping是基于滤波SLAM框架2.Gmapping是基于RBpf粒子滤波算法,即将定位与建图过程分离开,先进行定位后进行建图3.Gmapping在RBpf上主要做了两个方面的改进:改进提议分布和选择性重采样Gmapping有效利用了车轮里程计信息,这也是Gmapping对激光雷达频率要求较低的原因:里程计可以提供机器人的先验位姿。而hector和cartographer的设计初衷不是为了解决平面移动机器人定位和建图,Heator主要用于救灾等地面不平坦的

2020-12-15 22:02:40 1347

原创 编译cartographer_ros出现vert.vertices = pcl_vert.vertices问题

ubuntu18.04下编译cartographer_ros1. 编译过程中出现下图问题:error: no match for ‘operator=’ vert.vertices = pcl_vert.vertices;产生问题原因:pcl版本问题所导致2. 解决过程:将/opt/ros/melodic/include/pcl_msgs/Vertices.h中的uint32_t改成int32_t这是因为pcl_msg中使用unit32_t,而在我电脑目前版本已经改成int32_t解决上

2020-12-13 17:01:53 912 3

原创 小海龟前行的action server示例

小海龟前行的action server示例1. forward.action文件编写service消息有两个区域requestresponse然而action消息有三个区域goalresultfeedback以下是本例中创建的一个action消息新建一个工作空间,创建一个名为forward_server的功能包,先进入/forward_server目录下创建一个action文件夹,在actio文件夹下创建一个forward.action的文件,内容如下:goal内容为:lin

2020-12-10 21:59:57 604

原创 ROS 中 boost::bind( ) 的使用

ROS 中 boost::bind( ) 的使用1. boost::bind( )使用方法定义如下函数:int f(int a, int b){ return a + b;} int g(int a, int b, int c){ return a + b + c;}boost::bind(f, 1, 2)可以产生一个无参函数对象,返回f(1, 2);类似的,boost::bind(g, 1, 2, 3)相当于g(1, 2, 3)其中boost::bind()中使用

2020-12-10 13:59:00 2061

转载 粒子滤波学习记录

粒子滤波学习记录1.概况粒子滤波是贝叶斯滤波中一种非参数实现。它的出发点是利用一系列从后验概率分布中采样的粒子去表示这个后验概率。优点在于它可以表示各种奇形怪状的分布,也可以应对非线性变换。参数估计与非参数估计:比如下面的例子,假设有一个分布,那么参数滤波会先确定它是个高斯分布,然后求出它的概率密度函数(由均值、方差等参数给出);而粒子滤波不去纠结这个分布的具体函数是什么,而是利用从这个分布采样出的大量的样本,利用样本去描述这个分布。那么粒子滤波为什么可以这么做呢?蒙特卡洛采样:直观的说,假设我们

2020-12-06 21:06:57 435

原创 git相关指令

git 相关指令1.生成密匙运行如下指令ssh-keygen -t rsa -C ‘youremail@example.com’在用户主目录下的.ssh文件夹,会生成两个文件id_rsa,id_rsa.pub其中id_rsa是私钥,不能泄露出去;id_rsa.pub是公钥,可以放心的告诉别人。登录GitHub,打开右上角菜单栏,打开“settings”,“SSH Keys”页面;然后,点"add SSH Key",填上任意的title,在key文本框里面粘贴id_rsa.pub文件的内容。

2020-11-29 22:17:45 154

原创 机器人前行、旋转的service编写

文章目录一、机器人前行1.forward.srv2.forward.cpp二、机器人旋转1.rotate.srv2.rotate.cpp小结一、机器人前行1.forward.srv请求参数为:1.前行的距离2.前行的速度3.设定的时间,即机器人在给定的时间内运行完成返回的参数:1.bool值,是否到达指定位置2.字符串2.forward.cpp//该例程执行/forward服务#include <ros/ros.h>#include <geometry_msgs

2020-11-22 11:10:43 267

原创 ROS中tf学习笔记

文章目录前言一、turtle_tf_broadcaster.cpp二、turtle_tf_listener.cpp三、编译1.CMakeList.txt2.package.xml总结前言一、turtle_tf_broadcaster.cpp#include <tf/transform_broadcaster.h>//使用 TransformBroadcaster,我们需要包含头文件:tf/transform_broadcaster.h#include <turtlesim/Po

2020-11-22 10:20:33 672 3

转载 odom坐标系的理解

ROS中基本坐标系的理解:map,odom,base_link,base_laster1.map地图坐标系,顾名思义,一般设该坐标系为固定坐标系,一般与机器人所在的世界坐标是重合的。2.base_link机器人本体坐标系,与机器人中心重合,当然有些机器人是base_footprint。3.odom里程计坐标系,这里主要区分odom topic,这是两个概念,一个是坐标系,一个是根据编码里程计计算得到的里程计信息。但是两者也有关系,odom topic转化得到的位姿矩阵是odom->bas

2020-11-14 18:51:50 12567 2

原创 New关键字、引用&与指针的学习记录

文章目录一、New关键字的学习二、&的学习三、指针的学习1.指针是什么?2.变量在程序中的储存3.指针对象(变量)3.1定义指针对象3.2获取对象地址3.3解析地址对象3.4指针值的状态3.5指针之间的赋值4.指针内含信息5.函数和指针5.1函数的参数和指针5.2函数的指针5.3返回值和指针6.const与指针6.1常量指针6.2指向常量的指针小结一、New关键字的学习1.C++通过new关键字进行动态分配内存。2.new开辟的空间存储在堆上,而我们定义的变量存储在栈上。3.new分配的空

2020-11-09 17:15:19 251

原创 ROS初学者编写小乌龟以一定速度旋转一定角度的server

编写server.cpp让小乌龟以一定速度旋转一定角度在src文件夹下新建srv文件夹在src文件夹下新建server.cpp文件运行server结语在src文件夹下新建srv文件夹添加rotate_angle.srv文件float64 angle //输入的弧度float64 angular_velocity//输入的角速度(rad/s)float64 time//设定超时时间,超过这个时间退出循环---bool success//返回一个bool型的参数string message//

2020-11-03 22:10:56 1681

原创 Kinect2.0+ORBSLAM2_with_pointcloud_map

文章目录一、kinect2.0驱动1.libfreenect22.iai-kinect2二、ORBSLAM2_with_pointcloud_map1.安装Pangolin2.ORBSLAM2_with_pointcloud_map3.用自己的Kinect实时建图总结一、kinect2.0驱动1.libfreenect2git clone https://github.com/OpenKinect/libfreenect2.gitcd libfreenect2cd depends; ./dow.

2020-10-25 22:24:05 644

原创 IMU的学习记录

IMU的学习记录文章目录IMU的学习记录一、IMU简单介绍1.IMU原理2.GPS+IMU二、IMU信息采集1.xsense_driver2.rostopic list3.rostopic4.四元数转欧拉角4.运行rqt5.运行rviz总结一、IMU简单介绍1.IMU原理当我们晚上回到家,发现家里停电时,眼睛在黑暗中什么都看不见的情况下,只能根据自己的经验,极为谨慎地走小碎步,并不断用手摸周围的东西(比如冰箱),用以确定自己所在的位置。IMU的原理和黑暗中走小碎步很相似。在黑暗中,由于自己对步长

2020-10-20 16:56:41 1530 1

sophus+g2o+ceres.zip

sophus+g2o+ceres

2021-07-05

gtsam-4.0.0-alpha2.zip

gtsam

2021-07-05

protobuf-3.14.x.zip

protobuf-3.14.x.zip

2021-07-05

GeographicLib.zip

GeographicLib-1.51.zip

2021-07-05

eigen-git-mirror.zip

Eigen库:版本3.3.90

2021-07-05

空空如也

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

TA关注的人

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