- 博客(131)
- 资源 (10)
- 收藏
- 关注
翻译 Radar4Motion: IMU-Free 4D雷达里程计与鲁棒动态滤波及RCS加权匹配
精准定位对于自动驾驶车辆的导航至关重要。特别是,用于估计车辆随时间变化的位姿变换的里程计研究备受关注。为实现这一目标,多种环境感知传感器被应用,其中雷达传感器因其成本效益及在恶劣天气条件下的鲁棒性,相较于LiDAR传感器更具优势。然而,传统雷达传感器仅提供二维空间信息(xy, 多普勒)。近期技术进步引入了4D成像雷达,可提供三维空间信息(xyz, 多普勒)。尽管如此,与LiDAR数据相比,雷达数据仍存在稀疏性和噪声问题,使得传统的基于LiDAR的里程计算法难以直接应用。
2025-03-08 21:19:57
52
翻译 基于高斯建模与多假设扫描匹配的4D雷达-惯性里程计
4D毫米波雷达(mmWave)是一种在恶劣天气条件(如雨、雪、雾等)下表现出色的传感器,因此在里程计(odometry)和同步定位与地图构建(SLAM)应用中得到了越来越广泛的使用。然而,回波数据的噪声和稀疏特性对现有基于点云匹配的解决方案构成了巨大挑战,尤其是那些最初为更精确的传感器(如激光雷达LiDAR)设计的解决方案。
2025-02-27 16:30:27
33
原创 BMI085 和 BMI088 的数据同步
BMI08x 系列是一款系统级封装惯性测量单元 (IMU),可提供精确的加速度和角速度测量。由于采用系统级封装技术(单封装中包含两个传感器),陀螺仪和加速度计数据的采集是非同步的。然而,可以轻松实现加速度计与陀螺仪之间的同步。本文件描述了如何在增强现实(AR)或虚拟现实(VR)等典型应用中实现加速度计与陀螺仪的同步。要实现 BMI08x 的数据同步,需要将陀螺仪的 “数据准备好” 中断信号连接到 BMI08x 加速度计的一个中断引脚(可配置为输入引脚)。
2025-01-17 15:39:50
607
原创 解决海康相机SDK导致 `libusb_set_option` 问题的经验总结
安装海康SDK后,路径冲突问题可能影响到其他依赖libusb的程序。通过调整优先使用系统默认库路径,可以有效解决问题。希望本文对遇到类似问题的朋友有所帮助!如果你有更好的解决方法,欢迎交流!😊。
2024-12-30 11:12:18
1103
1
原创 使用 Python 从 ROS Bag 中提取图像:详解与实现
读取指定的 ROS Bag 文件。从指定的话题(Topic)中提取图像数据。使用 OpenCV 将图像保存为 PNG 格式文件。提供灵活的命令行参数,支持不同的输入文件、输出目录和话题。
2024-12-17 17:32:35
1305
1
原创 NX系列-使用 `nmcli` 命令创建 Wi-Fi 热点并设置固定 IP 地址
在一些场景下,我们需要将计算机或嵌入式设备(例如 NVIDIA Orin NX)转换为 Wi-Fi 热点,以便其他设备(如手机、笔记本等)能够连接并使用该设备提供的网络连接。通过nmcli命令,我们可以在 Linux 系统中非常方便地创建一个无线 AP(Access Point)热点。本文将介绍如何使用nmcli创建 Wi-Fi 热点,并进一步讲解如何设置固定 IP 地址,让连接到热点的设备始终获得指定的 IP 地址。通过nmcli命令,我们可以轻松创建一个 Wi-Fi 热点,并为其配置静态 IP 地址。
2024-12-16 16:28:05
1663
原创 B-Spline(B样条)插值 代码实现
B-Spline(B样条)是一种常用于计算机图形学和数据拟合的数学方法。它由一系列控制点和节点(Knots)以及一组基函数(Basis Functions)组成。B-Spline 能够通过控制点生成平滑曲线或曲面,广泛应用于图形建模、路径规划、数据插值等领域。
2024-11-10 17:00:54
2078
1
原创 连续时间与离散时间的基于视觉的SLAM:对比研究
机器人从业者通常通过离散时间公式来处理基于视觉的SLAM问题。这种方法的优势在于理论已得到巩固,并且对成功和失败的情况有很好的理解。然而,在离散时间SLAM中,当估计过程中存在来自不同传感器的高频率和/或异步测量时,往往需要定制算法和简化假设。相比之下,连续时间SLAM通常被从业者忽视,但却不受这些限制。实际上,它允许异步整合新的传感器数据,而不需要为每个新测量添加新的优化变量。这样一来,异步或高频连
2024-11-09 14:40:29
815
原创 undefined reference to `pthread_create‘
usr/bin/ld: …这个错误通常是由于链接时没有正确链接线程库(pthread)引起的。为了解决这个问题,我需要在CMake中指定链接pthread库。在编译3D Forest项目时,我遇到了一个与线程库相关的错误,导致链接阶段失败。我通过在CMake命令中添加共享链接器标志来解决了这个问题。
2024-10-22 10:32:12
310
原创 Eigen Is All You Need: 高效的具有内部关联的连续时间激光惯性里程计
Thien-Minh Nguyen, IEEE 会员,Xinhang Xu,Tongxing Jin,Yizhuo Yang,Jianping Li,Shenghai Yuan,Lihua Xie,IEEE 会士本文提出了一种名为 SLICT2 的连续时间激光惯性里程计 (CT-LIO) 系统,主要有两个创新点。首先,与传统认知相反,CT-LIO 算法可以通过线性求解器在仅几次迭代内完成优化,比常用的非线性求解器更加高效。其次,CT-LIO 更依赖于正确的关联过程,而非迭代次数。基于这些理念,我们实现了一种
2024-10-11 10:48:17
806
2
原创 (DLIO): 具有连续时间运动修正的轻量级LIO算法
在高速飞行或穿越不规则地形的过程中,激光雷达扫描容易因运动引起失真,从而影响状态估计和地图构建。为了解决这一问题,本文提出了一种轻量级的激光雷达-惯性里程计算法(DLIO),该算法采用一种由粗到精的方法来构建连续时间轨迹进行精确的运动修正。我们的方法的关键在于构建一组仅由时间参数化的解析方程,从而实现快速并行的逐点去畸变。这种方法之所以可行,是因为我们的非线性几何观察器具有强大的收敛性,它为初始化敏感的IMU积分步骤提供了精确的状态估计。
2024-10-09 09:43:00
647
原创 使用雷达速度因子进行越野导航的鲁棒高速状态估计
在复杂环境中实现机器人自主性以用于关键任务应用需要鲁棒的状态估计。特别是在导航所依赖的外感传感器可能因环境挑战而退化,从而导致任务失败的情况下。这种情况下,调频连续波(FMCW)雷达传感器的潜力得以凸显:作为一种具有直接速度测量能力的补充外感传感方式。在这项工作中,我们整合了FMCW雷达传感器的径向速度测量,使用径向速度因子提供线速度更新,并将其融合到滑动窗口状态估计器中,以与LiDAR姿态和IMU测量相结合。
2024-09-19 09:29:29
1154
原创 hku-mars雷达相机时间同步方案-软件驱动(MID360与海康MV-CB060-10UMUC-S)
hku的方案在硬件和软件方面都做了工作,所以才会实现相机帧和雷达帧的完全对齐。硬件方面的设置请参考上一期。下面开始驱动层面的设置。
2024-09-16 17:50:11
1153
原创 hku-mars雷达相机时间同步方案-硬件(MID360与海康MV-CB060-10UMUC-S)
组合导航模块只将GPRMC-Tx输出引脚接入雷达,而PPS秒脉冲由单片机提供,相机的触发脉冲也由单片机分频提供。相机和雷达的秒以上绝对时间由组合导航提供(雷达的帧已经有了GNSS绝对时间-秒以上),秒以下时间对齐到单片机秒脉冲。
2024-09-14 15:47:50
2383
15
翻译 IMU预积分- 5. LIO-SAM中的IMU预积分
在这个过程中,当累积的 key pose 超过 100 个时,会将所有这些位姿和 IMU 因子压缩为一个先验,并用来进行优化。回调函数是在 LIO-SAM 运行时,通过 ImageProjection→FeatureExtraction→MapOptimization 等一系列过程后,接收到基于 world 坐标系的 keyframe 位姿。回调接收到的第一个 keyframe 的位姿,其位置是 (0, 0, 0),旋转部分如果。然后,当接收到第一个位姿之后的其他位姿时,将进行优化以修正 bias。
2024-09-10 19:23:52
264
1
翻译 IMU 预积分 - 3. IMU 模型推导与运动积分
当前的目标是从 IMU 测量中推断系统的运动。为此,我们引入以下运动学模型。(简要说明)在详细讨论预积分之前,我们首先了解如何在每个 IMU 之间进行运动积分。(以下是对第 V 节的详细解释)
2024-09-10 16:06:45
548
1
翻译 IMU 预积分 - 2. 预备知识 (2) 3D 旋转与不确定性
理解这一概念非常重要,因为论文的第 VI 节中介绍的流形上的预积分最终目标是将关键帧 i 和 j 之间的几十到数百个 IMU 测量值简化为一个 ϵ 项。在论文的第 III.B 节中,SO(3) 的不确定性描述是理解流形上的预积分的核心概念。要理解预积分,我们首先需要理解流形的概念。:使用 SO(3) 来表达旋转的不确定性,可以像在欧几里得几何中那样,通过加上高斯噪声来表示线性方程或非线性方程中的不确定性。例如,ϵ 较大时意味着旋转测量的不确定性较高,对应的误差也相对较大,从而在优化中信息的重要程度较低。
2024-09-10 14:44:04
181
翻译 IMU 预积分- 2. 预备知识 (1) 关键帧
在理解预积分之前,我们首先需要了解什么是关键帧。关键帧,顾名思义就是“重要的(key)帧”,在这里,“重要”意味着,在估计两帧之间的相对位姿时,能够利用周围环境的几何特性,通过丰富的、可靠且可重复的特征,进行足够准确的位姿估计。
2024-09-10 14:28:38
315
翻译 IMU 预积分 - 1. 介绍
简易解释:“基于流形的实时视觉惯性里程计的预积分”对于对 VINS(视觉惯性系统)或 LIO(激光雷达惯性里程计)感兴趣的人来说,可能已经听说过 IMU 预积分。IMU 预积分是一种为了有效地利用从相机或 LiDAR 传感器获取的数据进行因子图 SLAM 的方法,旨在处理高频 IMU 数据。
2024-09-10 14:10:13
289
原创 使用 Eigen 库中的 Kronecker 积运算
在数值计算和线性代数的众多应用中,Kronecker 积(Kronecker Product)是一种常用的矩阵运算。Eigen 是一个高性能的 C++ 数值计算库,广泛用于科学计算和工程应用中。在 Eigen 库中,Kronecker 积运算属于不常用的扩展功能,因此被放置在模块中。本文将介绍如何在 Eigen 中使用 Kronecker 积,并解释为什么这个功能位于模块中。Kronecker 积是两个矩阵之间的二元运算,其结果是一个更大的矩阵。
2024-09-01 20:21:34
671
原创 /usr/include/flann/util/serialization.h:34:14: error: ‘class std::unordered_map<unsigned int, std::v
make[2]: *** [CMakeFiles/lio_sam_mapOptmization.dir/build.make:76:CMakeFiles/lio_sam_mapOptmization.dir/src/mapOptmization.cpp.o] 错误 1。
2024-08-23 15:36:38
1384
8
原创 RANSAC 和最小二乘法实现雷达自我速度估计
函数利用 RANSAC 算法来处理含有噪声和异常值的数据,选择最佳的内点集合进行速度估计,从而提高估计的鲁棒性。函数使用最小二乘法直接从雷达数据中计算速度,并根据需要估计误差的标准差。通过结合这两个函数,可以有效地从雷达数据中估计目标的速度,并处理数据中的异常值和噪声问题。优快云下载。
2024-08-18 19:15:06
1229
1
原创 TI AWR1843 毫米波雷达实物展示
毫米波雷达是一种使用毫米波(通常为30至300 GHz频段)的雷达系统,能够通过发射与接收电磁波来探测物体的距离、速度和方向。相比于传统雷达,毫米波雷达具有更高的分辨率和精度,特别是在距离和速度测量方面表现出色。其应用领域广泛,包括汽车电子、无人机、工业自动化等。TI AWR1843 是一款高度集成的毫米波雷达传感器,专为汽车和工业应用设计。它基于77 GHz三个发射器(TX)四个接收器(RX)数字信号处理器(DSP)微控制器(MCU)加速器。
2024-08-14 20:58:43
1885
原创 Eigen::Isometry3d 的定义和用途
是Eigen库中的一个非常有用的类,用于处理三维空间中的刚体变换。它封装了旋转和平移的组合操作,可以方便地应用于三维点或向量的变换。通过提取Isometry3d中的旋转矩阵和平移向量,可以轻松地进行各种几何计算和操作。
2024-06-30 14:43:38
1114
原创 Eigen中关于四元数的常用操作
Eigen库中的四元数类提供了强大的工具来处理三维旋转和插值。通过Eigen库,我们可以轻松实现四元数的创建、操作和插值,从而简化复杂的三维旋转问题。
2024-06-28 16:20:27
1103
1
原创 在Linux下使用CMake加载自定义路径第三方库的指南
有时需要使用位于自定义路径的第三方库。这种情况下,我们可以使用CMake的命令和一些配置选项来指定库的位置。假设有一个名为MyLib的库,位于/opt/mylib路径下。在Linux下使用CMake加载第三方库的灵活性使得它成为管理项目依赖的强大工具。无论是指定自定义路径的库、加载共享库,还是处理仅包含头文件的库,CMake都提供了简便的方法。
2024-06-22 14:04:48
1717
原创 error: the type ‘const zjloc::<lambda(const Vec2i&, const Vec2i&)>’
根据你的项目需要和编译器支持情况,选择适合的解决方案来修复constexprlambda 表达式不是字面量类型的问题。通常推荐升级到支持 C++17 的编译器版本,以便能够更好地利用现代 C++ 的特性。
2024-06-21 20:15:15
730
原创 如何在MATLAB中创建各种常用的图形
本文将介绍如何在MATLAB中创建各种常用的图形。将涵盖以下内容:基本的二维图形三维图形特殊图形多图和子图数据动画将为每种图形提供详细的示例代码,并解释每个图形的常见用法和调整技巧。
2024-06-21 11:17:27
1040
原创 实现ROS中两个里程计数据的转换到同一坐标系下
在多传感器融合的场景中,不同传感器可能会提供不同的位置信息。这段代码的目标是将来自两个不同来源的里程计数据转换到同一个参考坐标系(在这里,选择odom0的坐标系作为参考)下进行对齐,以便于后续的融合和处理。
2024-06-18 21:13:58
442
原创 在 C++ 中使用不同平台的时间函数及比较
在 C++ 编程中,时间函数的选择对于性能测量、任务调度和时间戳记录至关重要。不同的操作系统提供了不同的时间函数,同时在同一个平台上,也可能有多种不同的时间函数可供选择。本文将介绍在 C++ 中常用的时间函数,并比较它们在不同平台上的应用和效果。
2024-06-16 15:46:19
669
原创 CPP多线程
多线程是一种允许程序同时运行多个线程的技术。每个线程可以执行不同的任务,这在处理需要并发执行的操作时(例如,处理多个客户端的网络服务器,或者图形用户界面应用程序)非常有用。多线程能够提高程序的性能和响应速度。
2024-06-16 15:17:41
1438
原创 基于SVD的点云配准(下)
通过以上步骤,我们完成了从读取点云数据到特征提取、初始对应关系估计以及最终的刚性变换估计。这是一个经典的点云配准流程,适用于许多实际的 3D 数据处理场景。配准结果展示。
2024-06-15 20:50:31
245
原创 指针在C/C++中的魔力:一级指针与二级指针
指针是一个变量,它的值是另一个变量的地址。在C/C++中,指针是一个强大的工具,可以让我们直接操作内存地址。指针的主要用途包括动态内存分配、数组和字符串处理、函数参数传递等。定义一个指针时,我们使用来表示它指向的变量类型。int a = 10;// p 是一个指向 int 类型变量的指针int *p声明了一个指向int类型变量的指针p。&a是操作符,用于获取变量a的地址,并将其赋给指针p。我们可以通过指针p访问和修改a// 输出: a = 10*p = 20;// 输出: a = 20。
2024-06-08 14:44:09
784
原创 理解线程锁:在多线程编程中保障数据一致性
线程锁是一种同步原语,它用于确保在任何给定时间内,只有一个线程可以访问共享资源。通过对共享资源加锁,我们可以防止多个线程同时修改资源,从而避免数据竞争和潜在的错误。
2024-06-07 09:53:25
1357
原创 基于SVD的点云配准(上)
为了更加深入透彻的理解点云配准,所以打算从头实现一次配准的过程,从关键点提取、特征提取、对应关系确定、SVD确定变换矩阵,一步一步完成。首先介绍一下配准过程中用到的一些函数后续的部分将在下节更新!!!展示对应点连线的图片。
2024-06-05 21:46:43
312
原创 基于曲率的关键点检测
曲率是描述点云中每个点局部几何形状的一种度量。高曲率的点通常位于边缘、角点等显著位置。因此,通过检测曲率较高的点,我们可以找到点云中的关键点。
2024-06-04 14:03:16
198
原创 使用 C++ 和 Eigen 库理解 IMU 数据处理与可视化
在本文中,我们将探讨如何使用 C++ 和 Eigen 库处理和可视化惯性测量单元(IMU)数据。IMU 数据在各种应用中至关重要,包括机器人技术、导航系统和虚拟现实。我们将探讨如何读取 IMU 数据,处理数据以估计姿态,并使用 Pangolin 可视化轨迹。我们首先从文件中读取 IMU 数据。数据包括时间戳、角速度和加速度。我们使用一个简单的函数解析数据,并将其存储在ImuFrame结构的向量中。接下来,我们实现一个 IMU 跟踪器类(IMUTracker)来估计随时间变化的姿态(位置和方向)。
2024-04-07 19:18:26
1119
原创 Error: TF_DENORMALIZED_QUATERNION: Ignoring transform forchild_frame_id
Error: TF_DENORMALIZED_QUATERNION: Ignoring transform forchild_frame_id “odom” from authority “unknown_publisher” because of aninvalid quaternion in the transform (0.0 0.0 0.983641 0.122190)
2024-04-02 16:55:31
1080
3
SerialPlot-Small and simple software for plotting data
2024-09-27
RANSAC 和最小二乘法实现雷达自我速度估计
2024-08-18
MATLAB中创建各种常用的图形
2024-06-20
2022中国智能巡检机器人行业发展研究白皮书
2023-08-16
视觉slam光流法资源
2023-07-06
利用opencv实现鼠标指针停留获取像素坐标和像素值,也可以实现仿射变换
2023-02-28
Kinect V2 + PCL 实现简单地方体目标的体积测量
2023-01-12
Coursera-Machine-Learning
2022-09-14
基于pytorch的分类网络
2022-06-22
基于 opencv 实现的相机内参标定程序(棋盘格)
2022-06-08
基于 opencv 实现的相机内参标定程序(棋盘格)
2022-06-08
win7+VS2017+PCL1.9.1配置资料.7z
2022-06-07
VS2017_PCL1.9.1&&VS2019_PCL1.11.1环境配置
2022-06-07
VS2017_PCL1.9.1&&VS2019_PCL1.11.1环境配置
2022-06-07
点云特征描述子求prc曲线,具体过程是什么呢?
2022-10-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人