- 博客(48)
- 资源 (7)
- 收藏
- 关注
原创 linux手册翻译 execve
execve - 执行程序描述execve() 执行由参数 pathname指定的程序. 这将导致调用进程当前正在运行的程序被一个新程序替换,该程序具有新初始化的堆栈、堆和(初始化和未初始化的)数据段。参数pathname必须也是一个可执行的二进制文件, 或者是一个 #!interpreter [optional-arg] 形式的脚本. 详情见下面 “Interpreter scripts” 部分.参数 argv 一组指向字符串的指针的数组. 这些字符串作为命令行参数传递给新程序. 按照惯例,这些字符
2024-10-13 23:03:36
1053
2
原创 linux手册翻译 addr2line
addr2line将地址转换为文件名和代码行数描述addr2line 将地址转换为文件名和代码行数. 给定可执行文件中的地址或可重定位对象的部分中的偏移量,它使用调试信息来找出与它相关联的文件名和行号。要使用的可执行或可重定位对象使用-e选项指定。默认是文件a.out。使用-j选项指定可重定位对象中要使用的部分。addr2line 有两种操作模式第一种, 在命令行上指定十六进制地址,addr2line显示每个地址的文件名和行号。第二种, addr2line从标准输入中读取十六进制地址,并在标准输出
2024-09-15 21:27:53
1155
原创 linux手册翻译 dlopen系列
dlclose, dlopen, dlmopen 打开和关闭一个共享对象描述dlopen函数dlopen()加载由以空结尾的字符串filename命名的动态共享对象(共享库)文件,并为加载的对象返回一个不透明的“句柄”。此句柄与dlopen API中的其他函数一起使用,例如dlsym(3), dladdr(3), dlinfo(3)和dlclose()如果filename为NULL,则返回的句柄是主程序的。如果filename包含斜杠(“/”),则将其解释为(相对或绝对)路径名。否则,动态链接器按照如
2024-09-08 00:34:45
1414
原创 linux手册翻译 kill系列
在linux中, 通过man kill 终端指令, 可以了解到和杀死进程kill相关的使用说明.kill 给进程发送一个信号, 使用方法:kill的默认信号是TERM,使用 -l/-L 列出所有的信号。特别有用的信号包括:HUP, INT, KILL, STOP, CONT, 0负的PID值被用来选择整个进程组。见ps命令的PGID列,-1的PID是特殊的,它表示除了kill进程它本身和init进程以外的所有进程。
2024-07-28 18:28:41
361
原创 文章翻译——矩阵微积分
文章作者:Sourya Dey发表时间: 01 April 2019.原文:Matrix Calculus目录:文章目录1. 符号2. 基本规则3. 导数类型3.1 标量对标量(求导)3.2 标量对向量(求导)3.3 向量对标量(求导)3.4 向量对向量(求导)3.4.1 特殊的例子——向量化的标量函数3.4.2 特殊的例子——Hessian3.5 标量对矩阵(求导)3.6 矩阵对标量(求导)3.7 向量对矩阵(求导)3.8 矩阵对向量(求导)4. 操作和例子4.1 Commutation4.2 转
2021-11-20 20:09:16
1130
原创 pcl有序点云分析
在工作和学习中,只要是与点云打交道,那基本离不开pcl(point cloud library),点云pcd文件是我们最常接触到的文件,它的数据组织形式,可以分为有序(HEIGHT字段不为1)和无序两种(HEIGHT字段为1),对于有序点云,我们可以通过按照行列 cloud.at(column, row) 的方式来访问(注意对于pcd中的有序点云at方式的访问,列也就是宽度在前面,和常用的image访问相反),下面用代码进行验证。pcd文件的数据头示例如下所示:pcd 数据头# .PCD v0.7 -
2021-08-08 19:37:43
3708
原创 论文翻译—ICP算法论文(节选1~4章)
标题:A Method for Registration of 3-D Shapes作者: J. Besl, Neil D. McKay目录:Ⅰ IntroductionⅡ Literature ReviewⅢ Mathematical PreliminariesA. Point to Parametric Entity DistanceB. Point to Implicit Entity DistanceC. Corresponding Point Set Registration
2021-07-18 23:53:20
2385
5
原创 论文翻译—3D NDT算法论文(节选6.1-6.2)
文章目录第6章 正态分布变换6.1 用于表面表达的NDT6.2 NDT 扫描配准6.2.1 2D NDT6.2.2 3D NDT第6章 正态分布变换本章详细描述了正态分布变换以及它是如何被应用到扫描配准中的。6.1 用于表面表达的NDT在第3章讨论的距离传感器都是输出的点云:来自表面的空间采样点的集合。而且,在第5章的工作中提到的许多相关的算法都与点云打交道。但是,使用点云来表达表面有一系列的限制。例如,点云没有包含如方向、平滑度或者洞(holes)等表面属性的明确信息。根据传感器的配置,点云也可能
2021-07-03 00:33:12
1523
1
原创 算法公式推导——PCA
主成分分析(Principle Component Analysis,PCA)算法公式推导:1,算法定义算法输入:一堆点集 X=[x1,x2,...,xm],其中xi∈Rn, i=1,2,...,m\mathbf{X} = [x_1, x_2, ...,x_m],其中x_i \in \mathbb{R}^n, ~~i = 1,2,...,mX=[x1,x2,...,xm],其中xi∈Rn, i=1,2,...,m算法输出: 一堆主向量 z1,z2,.
2021-06-13 00:16:45
1188
8
原创 算法公式推导——ICP
前言:点云配准中的迭代最近点(Iterative Closest Points,ICP)算法的推导,网上很多资料都有提到,但是对我来说,看完这些资料还是有写些太明白的地方,前段时间学习的相关课程中讲到了ICP的算法推导,感觉很详细,因此这里详细总结一下,确保任何一个有线性代数基础的小伙伴都能看懂。1,算法输入两堆点集:X={x1,x2,...,xM}\mathbf{X} = \{x_1, x_2, ..., x_M\}X={x1,x2,...,xM} 和 Y={y1,y2,...,yN}\math
2021-05-16 14:26:34
1648
原创 关于ROS订阅和发布中的问题笔记
前言:在学习知乎大佬的定位文章 从零开始做自动驾驶定位(三): 软件框架 。其中提到:gnss_callback {gnss 数据解析,赋给变量 gnss_data}lidar_callback {雷达数据解析,得到lidar_data融合(lidar_data, gnss_data)}问题在于当融合算法处理时间比较长,超出了传感器信息的发送周期的时候,未被接收的数据会被放在每个subscriber对应的缓冲区中,等当前融合步骤处理完之后,下次ros从缓冲区中读取数据的时候,会先把gn
2020-10-14 00:05:54
1189
4
原创 代码分析——基于误差状态卡尔曼滤波器(ESKF)实例分析
imu_gps_localization代码分析最近在学习ESKF相关知识,偶然发现知乎大佬 Dongsheng Yang基于《Quaterniond kinematics for the error-state Kalman filter》实现了IMU+GPS的融合定位。刚刚学完理论知识,正好学习下基于ESKF的代码实战。看完大佬写的代码,更加深入地了解了数据融合的机制,笔记如下,一图胜千言。...
2020-10-08 19:24:37
5369
1
原创 文章翻译—基于误差状态卡尔曼滤波器的四元数运动学—第7章
文章目录基于误差状态卡尔曼滤波器的四元数运动学7 使用全局角度误差的ESKF7.1 持续时间的系统运动学7.1.1 真实和标称状态运动学7.1.2 误差状态运动学7.2 离散时间的系统运动学7.2.1 标称状态7.2.2 误差状态7.2.3 误差状态雅可比和扰动矩阵7.3 与互补的传感数据融合7.3.1 误差状态观测7.3.2 将观测到的误差注入标称状态7.3.3 ESKF重置基于误差状态卡尔曼滤波器的四元数运动学7 使用全局角度误差的ESKF7.1 持续时间的系统运动学7.1.1 真实和标称状态运
2020-10-06 00:22:58
1986
5
原创 文章翻译—基于误差状态卡尔曼滤波器的四元数运动学—第6章
文章目录基于误差状态卡尔曼滤波器的四元数运动学6. 用将IMU与互补的感知数据融合6.1 通过滤波校准的误差状态观测6.1.1 用于滤波器校正的雅可比计算6.2 将观察到的误差注入标称状态6.3 ESKF 重置6.3.1 关于定位误差的复位操作的雅可比基于误差状态卡尔曼滤波器的四元数运动学6. 用将IMU与互补的感知数据融合在除了IMU之外的其他信息(例如GPS或视觉)到达时,我们将进行ESKF校正。在设计良好的系统中,这应使IMU偏差可观察到,并允许ESKF正确估计它们。有无数种可能性,最受欢迎的是
2020-10-06 00:22:10
2213
1
原创 文章翻译—基于误差状态卡尔曼滤波器的四元数运动学—第5章
基于误差状态卡尔曼滤波器的四元数运动学5. 基于IMU驱动系统的误差状态运动学5.1 运动我们希望使用汉密尔顿(Hamilton)四元数表示空间或姿态的方向,编写将加速度计和陀螺仪读数与偏置和噪声相结合的惯性系统运动学的误差方程。加速度计和陀螺仪的读数通常来自惯性测量单元(IMU)。整合IMU读数可以得到随着时间漂移的航位推算定位系统。避免漂移就是将这些信息与GPS或视觉等绝对位置读数融合在一起。误差状态卡尔曼滤波(ESKF)是我们基于这个目的可能使用的其中的一个工具。在卡尔曼滤波范例中,这些是E
2020-10-06 00:21:24
3303
9
原创 文章翻译—基于误差状态卡尔曼滤波器的四元数运动学—第4章
文章目录基于误差状态卡尔曼滤波器的四元数运动学4. 扰动,微分和积分4.1 SO(3)SO(3)中的加法和减法运算符4.2 四个可能的微分定义4.2.1 从向量空间到向量空间的函数4.2.2 从SO(3)到SO(3)的空间4.2.3 从向量空间到SO(3)的函数4.2.4 从SO(3)到向量空间的函数4.3 有用的,且非常有用的,旋转的雅可比4.3.1 关于向量的雅可比4.3.2 关于四元数的雅可比4.3.3 SO(3)的右雅可比4.3.4 关于旋转向量的雅可比4.4 扰动,不确定性,噪声4.4.1 局部扰
2020-10-06 00:20:52
2291
8
原创 文章翻译—基于误差状态卡尔曼滤波器的四元数运动学—第3章
文章目录3. 四元数约定,我的选择3.1 四元数flavors[风味?]3.1.1 四元数分量的顺序3.1.2 四元数代数的规范3.1.3 旋转操作的函数3.1.4 旋转操作的方向3. 四元数约定,我的选择3.1 四元数flavors[风味?]有几种确定四元数的方法。它们基本上与四种二元选择有关:元素的顺序——实部在前还是在后:q=[qwqv] vs. q=[qvqw] .(140)\math
2020-10-06 00:19:54
1762
4
原创 文章翻译—基于误差状态卡尔曼滤波器的四元数运动学—第2章
基于误差状态卡尔曼滤波(ESKF)的四元数运动学文章作者:Joan Sol`a发表时间:October 12, 2017(注:Quaternion kinematics for the error-state Kalman filter 貌似有好几个版本,我这里选择翻译的是2017年10月的版本)原文:Quaternion kinematics for the error-state Kalman filter目录:1 四元数的定义和性质1.1 四元数定义1.1.1 四元数的替代表示
2020-10-06 00:18:53
2827
3
原创 文章翻译—基于误差状态卡尔曼滤波器的四元数运动学—第1章
基于误差状态卡尔曼滤波(ESKF)的四元数运动学作者:Joan Sol`a时间:October 12, 2017(注:Quaternion kinematics for the error-state Kalman filter 貌似有好几个版本,我这里选择翻译的是2017年10月的版本)原文:Quaternion kinematics for the error-state Kalman filter目录:1 四元数的定义和性质1.1 四元数定义1.1.1 四元数的替代表示1.2
2020-10-06 00:17:35
5348
6
原创 文章翻译—基于误差状态卡尔曼滤波器的四元数运动学—前言
基于误差状态卡尔曼滤波(ESKF)的四元数运动学文章作者:Joan Sol`a发表时间:October 12, 2017(注:Quaternion kinematics for the error-state Kalman filter 貌似有好几个版本,我这里选择翻译的是2017年10月的版本)原文:Quaternion kinematics for the error-state Kalman filter目录:1 四元数的定义和性质1.1 四元数定义1.1.1 四元数的替代表示
2020-10-06 00:16:12
3349
1
原创 坐标变换学习笔记—代码篇Matlab
坐标变换学习笔记—代码篇Eigen四元数 →\to→ 旋转矩阵四元数 →\to→ 欧拉角旋转矩阵 →\to→ 四元数旋转矩阵 →\to→ 欧拉角在matlab中,下面两个目录下均有关于四元数,旋转矩阵,欧拉角间变换的函数文件(quat2dcm.m, dcm2quat.m, angle2dcm.m, dcm2angle.m等)。C:\Program Files\Polyspace\R2020a\toolbox\aero\aero\C:\Program Files\Polyspace\R2020a\mcr
2020-08-23 23:57:58
6013
3
原创 坐标变换学习笔记—代码篇Eigen
坐标变换学习笔记—代码篇Eigen旋转向量旋转向量与其它旋转量的转换旋转向量一般常用函数四元数欧拉角旋转矩阵旋转向量旋转向量与其它旋转量的转换Eigen/src/Geometry/AngleAxis.h四元数 →\to→ 旋转向量:Eigen中,通过重载=操作符,实现旋转矩阵,四元数对转旋转向量的直接赋值,但是从下面的函数实现看,它的旋转角θ\thetaθ是通过atan2atan2atan2的方式求出来的,与式(3.1)(3.1)(3.1)稍微有点差别。Eigen/src/Geometry/A
2020-08-23 01:43:55
2161
原创 坐标变换学习笔记—代码篇ROS
坐标变换代码笔记坐标变换-ROS坐标变换-Eigen坐标变换-Matlabtf::Quaternion q;tf::quaternionMsgToTF(imu_msg->orientation, q);tf::Matrix3x3(q).getRPY(roll, pitch, yaw);tf::createQuaternionMsgFromRollPitchYaw(double r, double p, double y)tf::Quaternion q = tf::createIden
2020-08-20 00:10:41
9059
原创 坐标变换学习笔记—理论篇
旋转矩阵(R\mathbf{R}R) <==> 旋转向量(旋转角θ\thetaθ, 旋转轴n\mathbf{n}n)R=cos(θ)I+(1−cos(θ))nnT+sin(θ)n∧\mathbf{R} = cos(\theta) \mathbf{I} + (1-cos(\theta))\mathbf{n}\mathbf{n}^T + sin(\theta) \mathbf{n}^{\wedge} R=cos(θ)I+(1−cos(θ))nnT+sin(θ)n∧tr(R)=cos(θ)tr(I
2020-08-16 22:17:44
1501
原创 hdl_graph_slam 源码阅读笔记
src/hdl_graph_slam/registration.cpp :初始化匹配对象,提供可供选择的点云匹配方法(ICP,GICP,NDT)。apps/prefiltering_nodelet.cpp :接收名为 “velodyne_points” 的点云消息,降采样之后再以 “filtered_points” 的消息发布出去。降采样方法包括: pcl::VoxelGrid,pcl::ApproximateVoxelGrid,NONE(不降采样)三种方式可选。apps/scan_matchin
2020-08-12 16:54:52
310
原创 关于ROS的OccupancyGrid数据对应的地图颜色
最近在搞基于ROS的2D占用栅格地图,这类地图可用于机器人定位,它在机器人导航和避障方面很常用。它的消息类型是nav_msgs/OccupancyGrid,通过命令:rosmsg show nav_msgs/OccupancyGrid 可以看到nav_msgs/OccupancyGrid消息包含如下信息:std_msgs/Header header uint32 seq time stamp string frame_idnav_msgs/MapMetaData info time ma
2020-06-11 00:31:31
4988
1
原创 apollo自动驾驶平台配置笔记
apollo自动驾驶平台配置欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使
2020-06-07 14:54:12
4140
4
原创 论文翻译—2D NDT算法论文
正态分布变换:一个新的方法来匹配激光扫描相关信息:题目:The Normal Distributions Transform: A New Approach to Laser Scan Matching来源:Proceedings 2003 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS 2003)作者:Biber, Peter, and Wolfgang Straßer摘要摘要—2D范围内的扫
2020-05-18 00:07:53
2648
原创 利用Bresenham算法画圆和直线
利用Bresenham算法,从零开始实现在矩阵中画圆和直线,效果如下:基于matlab的画图代码如下:close all; clear all; clc% create image reactangle:img = ones(100, 200);figure('Name', 'original image')imshow(img)% draw line:help bresen...
2020-04-25 22:07:55
2989
原创 kitti点云地图拼接
文章目录1. 关于kitti数据集以及坐标系2. 关于bin格式点云的存储方式3. 点云拼接前言:这段时间在学习坐标系变换相关的知识,同时尝试了利用kitti公开点云数据集以及对应的真实位姿,拼接出全局地图,如下图所示,我采用了kitti点云数据集的00序列来测试拼接地图。下面大致记录下点云拼接过程以及基于C++和Matlab的拼接代码,备忘。1. 关于kitti数据集以及坐标系kitti数...
2020-04-13 00:25:47
4361
12
原创 相机畸变校准
相机畸变模型前言,关于相机的畸变模型及其推导,很多文章都已经写得很详细了,我这里只总结结论,把重点放在理解以及使用上。这篇文章总结了径向切向畸变,鱼眼畸变,FOV畸变;同时,还根据径向切向畸变的模型,以Euroc数据集为例,提供了畸变矫正的代码示例。1. 针孔模型(pinhole model)针孔相机模型(即直线投影模型,是相机在理想情况下的投影模型)是消费类相机中最常见的相机模型。在此模型...
2020-03-15 22:53:10
3904
原创 C++算法程序整理——递归算法
递归算法递归,定义一个过程或函数时出现调用本过程或本函数的成分,称之为递归。一般来说,能够用递归解决的问题应该满足以下三个条件:1)需要解决的问题可以转化为一个或多个同构(或同样性质的)子问题来求解,而这些子问题的求解方法与原问题完全相同,只是在数量规模上不同。2)递归调用的次数必须是有限的。3)必须有结束递归的条件来终止递归。...
2020-02-08 13:34:52
2889
原创 C++学习笔记-STL中的算法
STL算法简介:100多种算法函数对象(function objects)函数适配器(function adapters)三个头文件:&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;algorithm&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;
2019-09-07 18:24:41
589
原创 利用深度图建立三维点云地图笔记
前言:这几天在独立地研究对RGBD图像序列,建立其三维点云地图。由于我并没有借鉴像RTAB-MAP等SLAM方法,所以本文仅仅能够帮助学习和理解是三维建图的过程,对于实际的三维建图应用,意义并不大。本文的方法非常的简单粗暴,思路是首先求取每一帧深度图像的位姿,其次,将每一帧深度图转换为点云,最后将点云转换到世界坐标系下。对于求取深度图的位姿,可以使用ORB-SLAM2算法得到;对于深度图转点云,...
2019-05-25 16:26:25
9552
4
原创 将轨迹对应到google earth(谷歌地球)上
下面为将机器人的轨迹对应到谷歌地球上的demo,只需要将 <coordinates> 与 </coordinates>之间的经纬度坐标换成自己的经纬度坐标数据,然后将下面的内容保存的到文件中,将扩展名改为.kml,再打开google earth,将该文件拖进去,即可在上面显示对应的坐标轨迹。<?xml version='1.0' encoding='UTF-8'...
2019-05-25 16:22:25
3449
4
原创 C++学习笔记-String对象的操作
String对象初始化string初始化方法解释sting s;创建空的字符串;string s = “value”;用值 value 来初始化字符串 s;string s(“value”);用值 value 来初始化字符串 s;string s(s2);用字符串 s2 来初始化字符串 s;string s(s2, pos);从s2的位置 p...
2018-12-16 13:07:12
571
原创 vector容器的自增长分析
vector是用数组做的,因此具备数组的优(具有下标,操作很快)缺(一旦数组大小定义好了就不允许再改变)点。当vector容器中加入新的元素时,若容器容量不够,则创建新的更大容量的数组,再将原数组中的元素copy进来;#include<iostream>#include<vector>int main(){ std::vector<int> v; ...
2018-12-15 02:19:45
276
imu_gps_localization代码注释版.zip
2020-10-08
llandxy.zip
2019-05-25
生成map_server可加载的pgm地图
2018-05-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人