自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 基于 GTSAM 的 GINS(gtsam/example/ImuFactorsExample.cpp)

【代码】基于 GTSAM 的 GINS(gtsam/example/ImuFactorsExample.cpp)

2025-03-24 13:27:07 217

原创 自动驾驶中的多传感器时间同步

相机由于曝光是瞬时的,其所有像素点的采集时刻是一致的。ROS 提供了message_filters 包来进行时间软同步,message_filters 类似一个消息缓存,分别订阅不同传感器的 Topic,当消息到达消息过滤器时,并不会立即输出,而是在满足一定条件下输出,产生一个同步结果并给到回调函数,在回调函数里处理时间同步后的数据。软件同步通过智能的数据处理技术弥补了硬件同步的不足,提高了传感器数据的同步精度,当然,它也需要额外的计算和实时性要求,需要精心设计和优化算法来实现高效准确的同步。

2025-01-24 23:18:25 2880 2

原创 《自动驾驶与机器人中的SLAM技术》ch8:基于预积分和图优化的紧耦合 LIO 系统

和组合导航一样,也可以通过加上来实现。一些现代的 Lidar SLAM 系统也采用了这种方式。相比滤波器方法来说,预积分因子可以更方便地整合到现有的优化框架中,从开发到实现都更为便捷。

2025-01-18 23:04:27 1501

原创 《自动驾驶与机器人中的SLAM技术》ch4:基于预积分和图优化的 GINS

这里使用《自动驾驶与机器人中的SLAM技术》ch4:预积分学中提到的散装的形式来实现预积分的顶点部分,所以每个状态被分为位姿()、速度、陀螺零偏、加计零偏四种顶点(共 15 维)。后三者实际上都是的变量,可以直接使用继承来实现。g2o 部分可参考。1. 相比 ESKF,基于预积分的图优化方案可以累积 IMU 读数。累积多少时间,或者每次迭代优化取多少次,都可以人为选择。而 ESKF 默认只能迭代一次,预测也只依据单个时刻的IMU 数据。

2025-01-18 16:32:50 1331

原创 《自动驾驶与机器人中的SLAM技术》ch4:预积分学

在一个 IMU 系统里,我们考虑它的五个变量:旋转 R、平移 p、角速度 ω、线速度 v 与加速度 a。根据第 2 章介绍的运动学,这些变量的运动学关系可以写成如下运动学方程:在到时间内对运动学方程进行欧拉积分得:IMU 测量方程(其中为 IMU 测量的高斯噪声 )如下:IMU 测量方程带入积分后的运动学方程(其中为离散化后的 IMU 测量噪声 )如下:其中噪声项满足:以上过程与我们在 IMU 测量方程和噪声方程(第 3 章)中已有描述。

2025-01-16 22:27:19 1196

原创 《自动驾驶与机器人中的SLAM技术》ch10:自动驾驶车辆的实时定位系统

本章,我们来关注实时的激光雷达定位系统。在点云地图基础之上,我们可以把当前激光扫描数据与地图进行匹配,从而获得车辆自身的位置,再与 IMU 等传感器进行滤波器融合。然而,。因此,点云定位在实际使用时,会遇到一些特有逻辑问题。本章将使用第 9 章构建的点云地图,展示点云定位的使用方法,并演示一个基于 ESKF 的实时定位方案。

2025-01-14 23:06:07 1115

原创 《自动驾驶与机器人中的SLAM技术》ch9:自动驾驶车辆的离线地图构建

完整的点云建图可以看成是一个的综合优化问题。大部分 L4 级别的自动驾驶任务都需要一张来进行地图标注、高精定位等任务。

2025-01-14 15:30:52 864 2

原创 《自动驾驶与机器人中的SLAM技术》ch8:基于 IESKF 的紧耦合 LIO 系统

紧耦合系统,就是把点云的残差方程直接作为观测方程,写入观测模型中。这种做法相当于在滤波器或者优化算法内置了一个 ICP 或 NDT。因为 ICP 和 NDT 需要迭代来更新它们的最近邻,所以相应的滤波器也应该使用可以迭代的版本,ESKF 对应的可迭代版本的滤波器即为 IESKF。 基于 IESKF 的紧耦合 LIO 系统的流程图如下所示: IESKF 的状态变量及运动过程 和 前文介绍过的 ESKF 的状态变量及运动过程完全相同,包括:① 对名义状态变量的预测 ②对误差状态变量的

2025-01-13 20:19:18 1605

原创 《自动驾驶与机器人中的SLAM技术》ch7:基于 ESKF 的松耦合 LIO 系统

处理同步之后的点云和 IMU。初始化完毕后,先使用 IMU 数据进行预测,再用预测数据对点云去畸变,最后对去畸变的点云做配准。前文已经得到了去畸变的点云,这里只需将其传递给增量 NDT 里程计,并使用滤波器预测得到的先验位姿作为增量 NDT 里程计的初始位姿,经过迭代计算后得到优化后的位姿后再返回给滤波器,滤波器进行观测过程。),其存储上一 IMU 时刻 ESKF 的名义状态变量和当前 MeasureGroup 中每一个 IMU 数据预测后的 ESKF 的名义状态变量,用来插值进行点云的去畸变。

2025-01-12 21:50:56 1290

原创 《自动驾驶与机器人中的SLAM技术》ch2:基础数学知识

在实际的处理中,由于测量传感器只能测量离散化的值,在精度不高的应用场景中,我们通常会选择忽略后面三项,只保留最简单的转换关系。注意:能被各种传感器(车速传感器,轮速计)测量到的速度是车体系速度,进行线性化得到的雅可比矩阵,即运动方程对状态。进行线性化得到的雅可比矩阵,即观测方程对状态。,后续噪声的符号会变化,但表示的意义不变。其中 t 为平移向量。为观测方程在当前时刻预测状态。为运动方程在上一时刻状态。或者没有括号,表示省略。

2025-01-09 20:17:58 670 1

原创 《自动驾驶与机器人中的SLAM技术》ch1:自动驾驶

高精地图本质上是结构化的矢量数据。常见的高精地图标准包括 OpenDrive,LaneLet2,Apollo OpenDrive 等。计算机上的高精地图通常由一些专用的绘制软件生成(例如 Arcgis,Autoware map tool等)。L2 在技术实现上会更倾向于实时感知,乃至可以使用感知结果直接构建。(bird eye view, BEV),而 L4 则依赖。

2025-01-08 22:19:58 447

原创 源码安装 CloudCompare

就可以将新版本的 cmake 的路径放在 PATH 的最前面,确保系统优先使用新版本的 cmake。如果想切换回旧版本的 cmake,重新打开一个未执行如下命令的新终端就可以了。中列出的顺序搜索目录,直到找到该命令的可执行文件。如果在某个目录中找到了匹配的文件,系统就会执行它,之后的目录将不会被查找。包含了一个由多个目录组成的路径列表,用于在 shell 中行执行命令时查找命令的可执行文件。环境变量搜索命令,查找系统路径中的命令,显示系统路径中第一次出现该命令的完整路径。:查找命令的可执行文件路径。

2024-11-29 13:16:44 679

原创 Ubuntu 硬盘分区并挂载

在 Ubuntu(或其他 Linux 系统)中,

2024-11-27 14:13:56 5099 2

原创 ROS时间同步----使用message_filters进行时间软同步

该类型同步器用于通过消息头 header 中的时间戳同步多个通道的消息,并将同步后的消息以单个回调的形式输出。C++ 实现最多可以同步 9 个通道的消息。当 topic_1 和 topic_2 的频率均为 1hz 时,同步结果如下。由于定时器回调函数中发布在 topic_1 和 topic_2 中的消息的时间戳存在微小的时间偏差,导致没有完全相同的时间戳,所以不会进入同步器的回调函数中。

2024-11-26 14:47:14 2019

原创 使用YOLOV5(v7.0)训练自己的目标检测模型

执行完上述操作后,在 yolov5 文件夹下打开终端,输入以下命令。多了 __pycache__ 、 runs 和 yolov5s.pt 三个文件。这些字节码文件使得后续运行相同脚本时,加载速度更快,因为 Python 不需要重新编译源代码。__pycache__ 文件夹:当 Python 脚本首次运行时,解释器会将。检测结果会保存在 /yolov5/runs/detect/exp/ 文件夹下。环境要求:Python>=3.8.0 , PyTorch>=1.8.源代码文件编译成字节码文件(

2024-11-19 19:26:11 1112

原创 安装 Anaconda 后 pip list 定位混乱解决方法

安装Anaconda后,在原环境、base环境和新创建的虚拟环境下使用 pip list 命令时发送混乱,比如在 yolov5_env 虚拟环境下使用 pip list ,会列很多未在该虚拟环境下安装的包。

2024-11-19 12:43:40 883

原创 ubutnu20.04配置深度学习环境

本机上 cuda 和 cudnn 的安装: Ubuntu20.04部署YOLOv5anaconda 安装: Ubuntu 20.04安装Anaconda3及简单使用 【Conda】常用命令合集PyTorch 安装(安装在虚拟环境中): GPU版本的pytorch安装(显卡为3060ti,如何选择对应的cuda版本) Ubuntu搭建深度学习开发环境(Pytorch Tensorflow GPU版本)【Conda】常用命令合集

2024-11-18 17:35:52 179

原创 YOLO v1目标检测

① 图像分类 ② 目标检测 ③ 语义分割 ④ 实例分割。

2024-11-18 12:46:25 1155

原创 move_base

move_base 支持自己编写自定义全局规划器,提供了一种 Plugin 插件接口,只要按照特定的格式,就能把自己的路径规划算法编写成新的规划器,加载到 move_base 节点中使用。

2024-11-07 22:19:31 966

原创 ROS中Twist和AckermannDriveStamped消息类型的相互转换

已知 geometry_msgs/Twist 消息中的。至此,四轮阿克曼模型的 四轮速度。根据上图,定义车辆绕旋转中心。带入得 四个轮的速度。四轮阿克曼模型如下,,可求得 虚拟的中间轮胎的。

2024-11-06 16:29:09 776

原创 《自动驾驶与机器人中的SLAM技术》ch3:惯性导航与组合导航

典型的六轴IMU由陀螺仪(gyroscope)和加速度计(accelerometer)组成。

2024-10-16 22:59:22 1889 2

原创 多传感器融合SLAM------松耦合与紧耦合

中,LIDAR 和 IMU 的观测量通常被独立处理。即分别处理来自 LiDAR 和 IMU 的观测数据,然后在高层次 Pose(Position + Orientation)上进行融合。松耦合通常的思路是首先处理 IMU 的观测数据得到高频的位姿(Pose)信息,将高频的位姿信息用于 LiDAR 观测数据的去畸变,然后有两种处理方式。松耦合相关的研究成果有 LOAM (with IMU),LeGO-LOAM等;

2024-10-15 20:27:01 1762

原创 SLAM中的加权最小二乘法

首先,协方差是衡量两个随机变量之间关系的统计量。对于两个变量和如果,意味着 X 和 Y 趋向于同时增大或减小(正相关)。如果,意味着 X 增大时 Y 倾向于减小(负相关)。如果,则 X 和 Y 之间没有线性相关性。的绝对值越大,表示两个变量的同向(正相关)或反向(负相关)关系越强。它通过对误差方差和相关性的分析,决定每个观测值对最终结果的影响力。协方差矩阵之逆越大的元素,对应的观测值权重越大,意味着该观测值更“可信”或重要。

2024-10-14 19:34:21 1096

原创 SLAM相关开源项目编译过程中遇到的问题(持续更新)

编译GitHub上的A-LOAM开源项目出现error: ‘CV_LOAD_IMAGE_GRAYSCALE’ was not declared in this scope。原因:opencv 版本的问题,A-LOAM 使用的 opencv 版本过低。如果安装的是高版本的 opencv,可通过以下方式解决。编译A-LOAM时出现 error: ‘LocalParameterization’ is not a member of ‘ceres。版本的问题,A-LOAM 使用的 ceres 版本过低。

2024-10-12 16:00:27 477

原创 ubuntu双系统分区划分

EFI系统分区:这是从Windows8开始,BIOS所采用的UEFI模式下所使用到的分区,简单来说就是用于储存已安装系统的EFI引导程序,这个分区在资源管理器中无法查看,因为它是没有驱动器号的,但这个分区必须存在,否则系统将无法启动!所以该分区不能删除(除非是老型电脑,采用的是Legacy的引导方式)!

2024-10-09 21:25:38 1821

原创 ubuntu下实时查看CPU,内存(Mem)和GPU的利用率

在启用 MIG 的情况下,一张 GPU 可以分割为多个逻辑 GPU,每个逻辑 GPU 分配固定的计算和显存资源。例如,只有支持 MIG 的 NVIDIA GPU(如 A100 或 H100)才会显示 MIG 相关的信息,而其他不支持的 GPU 显示。:这是 NVIDIA 提供的一个命令,用于显示 GPU 的实时信息,包括显卡的温度、功耗、显存使用率、GPU 负载等。:在这个模式下,只有一个进程能够使用 GPU 的计算资源,但该进程可以有多个线程。:默认计算模式,多个进程可以同时访问 GPU 的计算资源。

2024-10-09 15:28:42 10661 1

原创 G2O 通过工厂函数类 OptimizationAlgorithmFactory 来生成固定搭配的优化算法

[代码实践] G2O 学习记录(一):2D 位姿图优化 [代码实践] G2O 学习记录(二):3D 位姿图优化

2024-10-07 20:16:54 450

原创 g2o 中定义好的常用边的类型

【代码】g2o 中定义好的常用边的类型。

2024-09-29 19:51:27 316

原创 g2o 中定义好的常用顶点类型

一、VertexSE2 : public BaseVertex<3, SE2>二、VertexSE3 : public BaseVertex<6, Isometry3>三、VertexPointXY : public BaseVertex<2, Vector2>四、VertexPointXYZ : public BaseVertex<3, Vector3>五、VertexSBAPointXYZ : public BaseVerte

2024-09-28 10:25:45 447

原创 G2O (General Graph Optimization)

g2o/core/block_solver.h 中 BlockSolver 有两种定义方式。一种是。

2024-09-27 15:17:34 992

原创 Ubuntu 开机自启动 .py / .sh 脚本,可通过脚本启动 roslaunch/roscore等

项目中要求上电自启动定位程序,所以摸索了一种 Ubuntu 系统下开机自启动的方法,开机自启动 .sh 脚本,加载 ROS 环境的同时启动 .py 脚本。在 . py 脚本中启动一系列 ROS 节点。

2024-09-26 21:59:31 2307 2

原创 pcl和open3d中的fitness参数的区别

在和中,ICP(Iterative Closest Point)算法都有一个,但它们的定义和意义有所不同。

2024-09-24 21:27:22 487

原创 Livox_automatic_calibration 多Mid-360激光雷达标定

多激光雷达标定multi_LiDAR_calibration 多激光雷达外参自动标定算法开源 激光感知算法--多激光雷达的静态标定

2024-09-24 13:55:47 1209 2

原创 Livox-Mid-360激光雷达配置

Mid-360内部集成了IMU芯片(3轴加速度计和3轴陀螺仪),默认情况下,上电后即开始以200Hz频率推送IMU数据(可通过上位机开启或关闭)。数据内容包括3轴加速度以及3轴角速度,。

2024-09-24 13:43:26 11366 8

原创 SLAM常用的ROS消息类型

由 std_msgs/Header header 和 nav_msgs/PoseStamped[] poses数组 组成。由 std_msgs/Header header 和 geometry_msgs/Pose pose 组成。

2024-09-22 21:59:57 456

原创 使用Blender创建适用于Gazebo室外仿真的地形模型

4.选中衰减编辑模式;点击鼠标左键选中细分后的小平面,选中后小平面变为黄色;单击G键,然后上下移动鼠标,构造地形;7.同样,可以使用雕刻模式改变地形;点击(物体模式-雕刻模式);半径代表雕刻模式的作用范围;1.打开Blender,点击(添加--网格--平面)添加一个平面,按住(S+拖动鼠标放大平面)5.在4的情况下,可以点击X或者Y或者Z使地形只朝一个方向移动。3.选中平面,鼠标右击,点击(细分)对平面进行连续细分。2.点击(物体模式-编辑模式)切换到编辑模式。6.返回2中的(物体模式)

2024-08-25 18:11:04 871

转载 slam方向期刊和会议汇总

Science Robitics [19.4] Soft Robotics [6.7] IEEE Transactions on Pattern Analysis and Machine Intelligence [11.8] International Journal of Robotics Research (IJRR) [5.1] IEEE Transaction on Robotics (TRO) [4.9] Journ

2024-08-12 10:32:30 365

原创 RPY角和Euler角

RPY角和Euler角本质上是一样的,表达的是相同的旋转。

2024-08-10 14:36:47 404

原创 SLAM中常见包含坐标变换的函数

运行结果: 运行结果:方式①和方式②运行结果相同 运行结果:方式①和方式②运行结果不同方式①运行结果方式②运行结果 lookupTransform()函数介绍:该函数获取的 transform 是 T_target_source

2024-08-10 13:23:54 547

原创 KITTI数据集中sensor_msgs消息类型介绍

【代码】KITTI数据集中sensor_msgs消息类型介绍。

2024-08-09 20:56:55 484

空空如也

空空如也

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

TA关注的人

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