二维NDT算法

《The-Normal-Distributions-Transform》 计算方法 首先把机器人周围的空间按照固定的大小分成一个个网格,对于点不少于3个的,进行以下计算: ...

C++布局new机制

看《C++ Functional Programming》的时候遇到一种新的new的用法 template<typename T, typename E> class expected { private: union { T m_value; E m_error; }; template <typename ...Args> static expected sucess(Args &&...params) { expected result; result.m_valid = true; new (&result.m_value) T(std::forward<Args>(params)...); return result; } }; 找文档学习了一下,以下是记录 ...

C++类成员指针

指向数据成员的指针 一个指向非静态成员对象m的指针,它是C类的成员,可以用表达式&C::m准确地初始化。表达式例如&(C::m)或者在成员函数里面使用&m都不是指向数据成员的指针。&(C::m)是取C类里面的静态成员m地址,而后面一种则是取具体对象里面的变量m的地址,两者都是普通指针。 ...

Kabsch算法

激光雷达标定外参时通过提取两个垂直平面的点云计算法向量可以标定到指定的坐标,其中用到了SVD分解的方法一直很困惑,查找资料后终于找到算法的出处 ...

LIO-SAM学习总结

节点话题图 <?xml version="1.0" encoding="UTF-8" standalone="no"?> Qt SVG Document Generated with Qt LIO-SAM图优化中角点优化中PCA 介绍 看LIO-SAM代码的时候,看到角点优化函数里面通过协方差特征值判断是否为角点,代码如下 ...

SACSegmentation点云分割

桌子模型 下载:https://raw.github.com/PointCloudLibrary/data/master/tutorials/table_scene_lms400.pcd ...

autoware源码大纲

代码目录 common amathutils_lib 卡尔曼滤波 巴特沃斯滤波 时延卡尔曼滤波 autoware_build_flags cmake配置,设置编译器和c++版本以及一些标志位 autoware_health_checker 健康信息聚合 健康信息分析 健康信息检查 系统状态订阅 emergency_handler 紧急错误处理,包括: ...

C++函数式编程

说明 《Functional Programming in C++》书中代码练习测试以及一些笔记,部分代码需要用到C++20可以使用在线编译器编译代码 地址:https://coliru.stacked-crooked.com/ 或者自己编译gcc-11.2及以上版本安装 ...

因子图和GTSAM--实践介绍

原文链接:gtsam.pdf 概述 因子图是很适合解决复杂估计问题的图形化模型,例如SLAM或者运动结构恢复(Structure from Motion,SFM)。你可能熟悉其他常用的图形模型,是有向无环图的贝叶斯网络。因子图,是一个由与变量相连的因子组成的二分图,这些变量代表估计问题中的未知随机变量,而因子则代表这些变量的概率约束,这些约束来自测量或先验知识。在下面的章节中,我将用机器人学和视觉学的例子来说明这一点。 ...

LIO-SAM论文阅读

LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping 介绍 状态估计、定位和建图对于成功的智能移动机器人来说是必备的,需要反馈控制、避障、规划路线和其他能力。使用视觉的和激光的传感器,为了实现高性能实时同时定位和建图(SLAM)使得移动机器人支持6自由度状态估计,投入了很大的精力。基于视觉的方案通常使用双目或立体相机,对连续的图像进行三角定位,以确定像机的运动。虽然基于视觉的方案对于位置识别更加合适,但是它们对初始化、光照和范围的敏感性使它们在单独用于支持自主导航系统时不可靠。另一方面,基于激光的方案大体上不受光照变化的影响。尤其是最近有远距离,高解析度的3D雷达可供选择,比如Velodyne VLS-128和Ouster OS1-128,雷达更适合在三维空间中直接获取环境信息。 ...

贝叶斯滤波

概率 假设测量数据用\(\boldsymbol{z}_t\)表示,控制数据用\(\boldsymbol{u}_t\)表示,状态数据用\(\boldsymbol{x}_t\)表示状态 ...

ROS工程单独模块使用vscode

插件安装 vscode安装clangd插件,使用language server的方式进行代码高亮补全 CMake配置 在小模块目录下创建build目录,然后用CMake进行编译,并添加如下参数 ...

里程计的知识

定义 里程计(Odometry) 使用运动传感器随着时间变化估计位置变化。对于有腿或者有轮子的机器人来说,估计当前相对于起始位置的位置。这种方式对于误差非常敏感,因为是根据速度测量得到的。在大多数情况下,为了有效地使用定位法,需要快速和准确的数据收集、仪器校准和处理。 ...

源码编译Aseprite

源码编译Aseprite Aseprite是一款开源的像素绘画工具,官网下载需要花费几十元购买正版,然而自己源码编译则不需要。我使用的系统版本是Ubuntu 18.04 LTS。 克隆代码 首先从github上克隆源码 ...

《理想国》笔记

正义 正义就是给每个人以恰如其分的报答 技艺本身的完美,就在于名副其实地提供本身最完美的利益 一个正义的人不想胜过别的正义者,但是他想胜过不正义者 既然不知道什么是正义,也就无法知道正义是不是一种德性,也就无法知道正义者是痛苦还是快乐 三种善 ...