- 博客(120)
- 资源 (10)
- 收藏
- 关注
原创 使用雷达速度因子进行越野导航的鲁棒高速状态估计
在复杂环境中实现机器人自主性以用于关键任务应用需要鲁棒的状态估计。特别是在导航所依赖的外感传感器可能因环境挑战而退化,从而导致任务失败的情况下。这种情况下,调频连续波(FMCW)雷达传感器的潜力得以凸显:作为一种具有直接速度测量能力的补充外感传感方式。在这项工作中,我们整合了FMCW雷达传感器的径向速度测量,使用径向速度因子提供线速度更新,并将其融合到滑动窗口状态估计器中,以与LiDAR姿态和IMU测量相结合。
2024-09-19 09:29:29 1046
原创 hku-mars雷达相机时间同步方案-软件驱动(MID360与海康MV-CB060-10UMUC-S)
hku的方案在硬件和软件方面都做了工作,所以才会实现相机帧和雷达帧的完全对齐。硬件方面的设置请参考上一期。下面开始驱动层面的设置。
2024-09-16 17:50:11 680
原创 hku-mars雷达相机时间同步方案-硬件(MID360与海康MV-CB060-10UMUC-S)
组合导航模块只将GPRMC-Tx输出引脚接入雷达,而PPS秒脉冲由单片机提供,相机的触发脉冲也由单片机分频提供。相机和雷达的秒以上绝对时间由组合导航提供(雷达的帧已经有了GNSS绝对时间-秒以上),秒以下时间对齐到单片机秒脉冲。
2024-09-14 15:47:50 1183
翻译 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 136
翻译 IMU 预积分 - 3. IMU 模型推导与运动积分
当前的目标是从 IMU 测量中推断系统的运动。为此,我们引入以下运动学模型。(简要说明)在详细讨论预积分之前,我们首先了解如何在每个 IMU 之间进行运动积分。(以下是对第 V 节的详细解释)
2024-09-10 16:06:45 280
翻译 IMU 预积分 - 2. 预备知识 (2) 3D 旋转与不确定性
理解这一概念非常重要,因为论文的第 VI 节中介绍的流形上的预积分最终目标是将关键帧 i 和 j 之间的几十到数百个 IMU 测量值简化为一个 ϵ 项。在论文的第 III.B 节中,SO(3) 的不确定性描述是理解流形上的预积分的核心概念。要理解预积分,我们首先需要理解流形的概念。:使用 SO(3) 来表达旋转的不确定性,可以像在欧几里得几何中那样,通过加上高斯噪声来表示线性方程或非线性方程中的不确定性。例如,ϵ 较大时意味着旋转测量的不确定性较高,对应的误差也相对较大,从而在优化中信息的重要程度较低。
2024-09-10 14:44:04 104
翻译 IMU 预积分- 2. 预备知识 (1) 关键帧
在理解预积分之前,我们首先需要了解什么是关键帧。关键帧,顾名思义就是“重要的(key)帧”,在这里,“重要”意味着,在估计两帧之间的相对位姿时,能够利用周围环境的几何特性,通过丰富的、可靠且可重复的特征,进行足够准确的位姿估计。
2024-09-10 14:28:38 186
翻译 IMU 预积分 - 1. 介绍
简易解释:“基于流形的实时视觉惯性里程计的预积分”对于对 VINS(视觉惯性系统)或 LIO(激光雷达惯性里程计)感兴趣的人来说,可能已经听说过 IMU 预积分。IMU 预积分是一种为了有效地利用从相机或 LiDAR 传感器获取的数据进行因子图 SLAM 的方法,旨在处理高频 IMU 数据。
2024-09-10 14:10:13 139
原创 使用 Eigen 库中的 Kronecker 积运算
在数值计算和线性代数的众多应用中,Kronecker 积(Kronecker Product)是一种常用的矩阵运算。Eigen 是一个高性能的 C++ 数值计算库,广泛用于科学计算和工程应用中。在 Eigen 库中,Kronecker 积运算属于不常用的扩展功能,因此被放置在模块中。本文将介绍如何在 Eigen 中使用 Kronecker 积,并解释为什么这个功能位于模块中。Kronecker 积是两个矩阵之间的二元运算,其结果是一个更大的矩阵。
2024-09-01 20:21:34 409
原创 /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 773 1
原创 RANSAC 和最小二乘法实现雷达自我速度估计
函数利用 RANSAC 算法来处理含有噪声和异常值的数据,选择最佳的内点集合进行速度估计,从而提高估计的鲁棒性。函数使用最小二乘法直接从雷达数据中计算速度,并根据需要估计误差的标准差。通过结合这两个函数,可以有效地从雷达数据中估计目标的速度,并处理数据中的异常值和噪声问题。CSDN下载。
2024-08-18 19:15:06 1008
原创 TI AWR1843 毫米波雷达实物展示
毫米波雷达是一种使用毫米波(通常为30至300 GHz频段)的雷达系统,能够通过发射与接收电磁波来探测物体的距离、速度和方向。相比于传统雷达,毫米波雷达具有更高的分辨率和精度,特别是在距离和速度测量方面表现出色。其应用领域广泛,包括汽车电子、无人机、工业自动化等。TI AWR1843 是一款高度集成的毫米波雷达传感器,专为汽车和工业应用设计。它基于77 GHz三个发射器(TX)四个接收器(RX)数字信号处理器(DSP)微控制器(MCU)加速器。
2024-08-14 20:58:43 1010
原创 Eigen::Isometry3d 的定义和用途
是Eigen库中的一个非常有用的类,用于处理三维空间中的刚体变换。它封装了旋转和平移的组合操作,可以方便地应用于三维点或向量的变换。通过提取Isometry3d中的旋转矩阵和平移向量,可以轻松地进行各种几何计算和操作。
2024-06-30 14:43:38 653
原创 Eigen中关于四元数的常用操作
Eigen库中的四元数类提供了强大的工具来处理三维旋转和插值。通过Eigen库,我们可以轻松实现四元数的创建、操作和插值,从而简化复杂的三维旋转问题。
2024-06-28 16:20:27 674
原创 在Linux下使用CMake加载自定义路径第三方库的指南
有时需要使用位于自定义路径的第三方库。这种情况下,我们可以使用CMake的命令和一些配置选项来指定库的位置。假设有一个名为MyLib的库,位于/opt/mylib路径下。在Linux下使用CMake加载第三方库的灵活性使得它成为管理项目依赖的强大工具。无论是指定自定义路径的库、加载共享库,还是处理仅包含头文件的库,CMake都提供了简便的方法。
2024-06-22 14:04:48 1232
原创 error: the type ‘const zjloc::<lambda(const Vec2i&, const Vec2i&)>’
根据你的项目需要和编译器支持情况,选择适合的解决方案来修复constexprlambda 表达式不是字面量类型的问题。通常推荐升级到支持 C++17 的编译器版本,以便能够更好地利用现代 C++ 的特性。
2024-06-21 20:15:15 616
原创 如何在MATLAB中创建各种常用的图形
本文将介绍如何在MATLAB中创建各种常用的图形。将涵盖以下内容:基本的二维图形三维图形特殊图形多图和子图数据动画将为每种图形提供详细的示例代码,并解释每个图形的常见用法和调整技巧。
2024-06-21 11:17:27 818
原创 实现ROS中两个里程计数据的转换到同一坐标系下
在多传感器融合的场景中,不同传感器可能会提供不同的位置信息。这段代码的目标是将来自两个不同来源的里程计数据转换到同一个参考坐标系(在这里,选择odom0的坐标系作为参考)下进行对齐,以便于后续的融合和处理。
2024-06-18 21:13:58 328
原创 在 C++ 中使用不同平台的时间函数及比较
在 C++ 编程中,时间函数的选择对于性能测量、任务调度和时间戳记录至关重要。不同的操作系统提供了不同的时间函数,同时在同一个平台上,也可能有多种不同的时间函数可供选择。本文将介绍在 C++ 中常用的时间函数,并比较它们在不同平台上的应用和效果。
2024-06-16 15:46:19 602
原创 CPP多线程
多线程是一种允许程序同时运行多个线程的技术。每个线程可以执行不同的任务,这在处理需要并发执行的操作时(例如,处理多个客户端的网络服务器,或者图形用户界面应用程序)非常有用。多线程能够提高程序的性能和响应速度。
2024-06-16 15:17:41 1186
原创 基于SVD的点云配准(下)
通过以上步骤,我们完成了从读取点云数据到特征提取、初始对应关系估计以及最终的刚性变换估计。这是一个经典的点云配准流程,适用于许多实际的 3D 数据处理场景。配准结果展示。
2024-06-15 20:50:31 138
原创 指针在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 720
原创 理解线程锁:在多线程编程中保障数据一致性
线程锁是一种同步原语,它用于确保在任何给定时间内,只有一个线程可以访问共享资源。通过对共享资源加锁,我们可以防止多个线程同时修改资源,从而避免数据竞争和潜在的错误。
2024-06-07 09:53:25 1132
原创 基于SVD的点云配准(上)
为了更加深入透彻的理解点云配准,所以打算从头实现一次配准的过程,从关键点提取、特征提取、对应关系确定、SVD确定变换矩阵,一步一步完成。首先介绍一下配准过程中用到的一些函数后续的部分将在下节更新!!!展示对应点连线的图片。
2024-06-05 21:46:43 133
原创 基于曲率的关键点检测
曲率是描述点云中每个点局部几何形状的一种度量。高曲率的点通常位于边缘、角点等显著位置。因此,通过检测曲率较高的点,我们可以找到点云中的关键点。
2024-06-04 14:03:16 101
原创 使用 C++ 和 Eigen 库理解 IMU 数据处理与可视化
在本文中,我们将探讨如何使用 C++ 和 Eigen 库处理和可视化惯性测量单元(IMU)数据。IMU 数据在各种应用中至关重要,包括机器人技术、导航系统和虚拟现实。我们将探讨如何读取 IMU 数据,处理数据以估计姿态,并使用 Pangolin 可视化轨迹。我们首先从文件中读取 IMU 数据。数据包括时间戳、角速度和加速度。我们使用一个简单的函数解析数据,并将其存储在ImuFrame结构的向量中。接下来,我们实现一个 IMU 跟踪器类(IMUTracker)来估计随时间变化的姿态(位置和方向)。
2024-04-07 19:18:26 690
原创 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 807
原创 IMU参数辨识及标定
方差分析,得到了器件的量化噪声、角度随机游走、角速率随机游走、零偏不稳定性噪声、速率斜坡,仔细看,这些都是对零偏质量的分析,也可以直观的理解为零偏的波动和漂移程度,这里面并没有分析零偏本身的大小,而这个才是我们标定里要去估计的那个常值误差。现在得到的结果的单位是rad/s和m/s^2,噪声是个能量概念或者说功率概念,我们还要把标定得到的参数归一化到每单位sqrt(hz)尺度下,即/aqrt(Hz)。数据包播放结束之后,在/imu_utils/data/这个文件夹下会出现一系列的参数文件,如上图所示。
2024-04-02 10:24:15 1963 1
原创 手写三维点云配准的迭代最近点(ICP)算法
ICP是计算机视觉和机器人领域广泛使用的技术,用于将两组三维点进行配准。其主要应用是将一组观测点与参考模型进行配准。这在3D重建、SLAM(同时定位与地图构建)和物体识别等场景中至关重要。以下代码是完成了基于P2P和P2Line的ICP方法。KDtree是采用PCL自带的方法,主要的ICP方法没有使用PCL库。
2024-03-30 21:37:37 201
原创 三维重建-单目相机标定
理论知识可以看北邮鲁鹏老师的课程,哔哩哔哩上有。一、代码讲解public:// 构造函数,初始化成员变量// 用像素坐标和世界坐标计算相机矩阵 P// 对相机矩阵 P 进行奇异值分解,计算相机内部矩阵 A 和外部矩阵 M// 计算相机的内部和外部参数// 对标定结果进行自检private:// 成员变量,存储世界坐标和像素坐标以及相关矩阵类实现了与相机标定和 3D 重建相关的功能。该类具有几个成员变量和函数:world_coor:一个。
2024-03-24 14:30:19 106
原创 三维重建-三角化
三角化算法是计算机视觉和三维重建领域中常用的技术,用于从多个视角的图像或视觉数据中推导出场景中的三维结构信息。三角化算法利用视觉几何原理,通过对多个视角下的特征点或对应点进行测量和分析,计算出这些点在三维空间中的位置。下面是一个简单的三角化算法的步骤:特征提取:对于每个视角的图像或视觉数据,首先从中提取出一些可以匹配的特征点,比如角点、边缘点或描述符。特征匹配:将不同视角中的特征点进行匹配,找出在多个视角下都有对应关系的特征点对。
2024-03-24 14:29:08 86
原创 C++中的std::for_each并行执行探索
在C++标准库中,是一个用于遍历容器或可迭代序列并对每个元素执行特定操作的强大工具。传统的是顺序执行的,即它会按照元素在序列中的顺序,逐个应用函数对象或lambda表达式。然而,随着多线程编程的普及和硬件性能的提升,越来越多的开发者开始寻求并发执行以提高程序性能。幸运的是,从C++17开始,标准库引入了执行策略(Execution Policies),使得一些算法,包括,可以在多个线程上并行执行。通过使用特定的执行策略,如,我们可以指示算法并行处理元素,从而利用多核处理器的优势。
2024-03-22 09:49:58 1575
原创 使用 GTSAM 进行曲线拟合的示例
GTSAM(通用因子图优化库)是一种用于状态估计和传感器数据融合的开源C++库。它提供了强大的工具,用于在机器人和自主系统领域进行感知、决策和控制。
2024-03-20 20:53:57 700
原创 Lord 3DMCV7-AHRS 时间同步硬件触发设置
通过FPGA发送脉冲触发IMU采集数据。FPGA发送脉冲时,IMU才有数据产生。FPGA与IMU的硬件接线就不讲了,这里主要说明的是IMU的设置以及ROS驱动的config文件更改。
2024-03-12 15:28:51 1123
原创 error while loading shared libraries: libpango_windowing.so: cannot open shared object file
运行可执行文件出现: 解决方法:编译时遇到:极有可能是安装了海康的SDK解决方法:删除海康的工作空间,以及上位机所在的文件夹/opt/MVS参考:/usr/bin/ld: ../../lib/libpcl_io.so.1.8.0: undefined reference to `libusb_set_option‘错误解决-海康摄像头SDK-CSDN博客
2024-02-29 10:52:18 978 1
原创 【论文学习】感知系统的监测 Monitoring of Perception Systems
本文调查了感知系统的运行时监控。感知是机器人和自主系统高完整性应用的关键组成部分,例如自动驾驶汽车。在这些应用中,感知系统的故障可能会危及人类生命,广泛采用这些技术需要开发方法来保证和监控安全运行。尽管感知的重要性至关重要,但目前还没有针对系统级感知监控的正式方法。在本文中,我们形式化了感知系统中运行时故障检测和识别的问题,并提出了一个框架,使用诊断图来建模诊断信息。然后,我们提供了一组确定性、概率性和基于学习的算法,利用诊断图进行故障检测和识别。
2024-02-23 15:06:52 967
原创 点云配准SIFT+SI+RANSAC+ICP
Spin Image(SI)是一种用于点云数据描述的特征描述子,广泛应用于三维点云配准、识别和重建等领域。它能够捕捉点云中的局部几何信息,具有旋转不变性和部分平移不变性等优点,是一种非常强大的特征描述子。Spin Image是一种强大的点云特征描述子,具有旋转不变性、局部几何信息捕捉等优点,适用于点云配准、目标识别和三维重建等多个领域。通过合理选择局部区域、建立参考框架和计算描述子,可以充分利用Spin Image描述点云的特征,从而实现各种三维场景分析和处理任务。
2024-02-20 19:47:25 257
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关注的人