- 博客(127)
- 资源 (1)
- 收藏
- 关注
原创 【AI学习笔记】初学机器学习西瓜书概要记录(二)常用的机器学习方法篇
初学机器学习西瓜书的概要记录(二)常用的机器学习方法篇 初学机器学习西瓜书的概要记录(三)进阶知识篇
2024-09-18 21:15:48
406
原创 【AI学习笔记】初学机器学习西瓜书概要记录(一)机器学习基础知识篇
初学机器学习西瓜书的概要记录(二)常用的机器学习方法篇 初学机器学习西瓜书的概要记录(三)进阶知识篇
2024-09-15 18:45:52
953
原创 关于OpenCV中 CV_Assert() 的使用引起程序中止/崩溃问题
CV_Assert() 会通过异常抛出,所以如果使用 CV_Assert(),可以通过捕获异常而不是程序崩溃,而 assert 会直接导致程序崩溃
2023-12-26 08:35:04
937
原创 编译工程需要Opencv3 与 ROS自带Opencv4冲突解决办法
1.头文件目录:修改为安装opencv3的路径。2.库目录:需要什么库链接什么库就够了。
2023-04-07 18:18:13
2044
2
原创 <论文阅读>FLIRT:二维激光数据的兴趣区域及其在机器人导航中的应用
我们展示了FLIRT与RANSAC的结合,如何通过特别简单的算法应用于闭环、全局定位、增量建图和基于位姿估计的SLAM。结果表明,FLIRT特征在精确召回性能、效率、通用性和简单性方面对机器人导航具有巨大潜力。
2022-12-08 21:06:05
1177
1
原创 EKF 扩展卡尔曼滤波适用于全向底盘的修改方法
EKF的预测中,使用的更新量默认为:**距离+角度**。因此默认是适用于差速地盘或者阿克曼地盘的,但是对于全向地盘,在不需要转向的前提下便可以完成倒退,就会使预测值发生问题。
2022-06-19 19:02:57
438
原创 关于打deb包出现的问题记录,以及ROS相关问题记录
首先是打包必备的 CmakeLists 编写:主要就是 install 安装到系统环境中,可以参考cmake使用教(二) install的使用本次打包需要安装的有三点:1.可执行文件 2.launch文件/config文件 3.动态库install(TARGETS ${PROJECT_NAME}_node ${PROJECT_NAME} ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} LIBRARY DESTINATION ${C
2022-05-14 02:22:04
588
1
原创 ROS 中 transform 变化关于 ros::Time::now() 和 ros::Time(0)的区别测试
首先贴上简单的验证代码,方便大家验证,欢迎提出问题一起交流讨论~目录一丶代码1. 工程一:transform 发布节点2. 工程二:transform 接收节点二丶测试结果分析1. ros::Time::now() 获取当前的时间2. ros::Time(0) 使用缓冲中最新的tf数据3. ros::Time::now() + ros::Time(0) 等待到最新时间,再取缓存数据一丶代码1. 工程一:transform 发布节点/***************** tf发布文件 *******
2022-05-12 13:43:11
1882
原创 在ROS param 的使用中有时无法正确传入参数的问题记录
困扰了我挺久的一个小问题,在使用 ROS param 传入参数时,有时候并不会生效,也就是参数并不能传进去!launch 大概是这样:<?xml version="1.0"?><launch> <node pkg="location_node" type="location_node" name="location_node" output="screen"> <param name="~frame_id" value="base_link" /&
2022-04-12 10:50:09
1172
7
原创 关于特征值特征向量和矩阵分解的理解总结
本文章是从其他地方总结一些对自己有用的理论,全文可在底部参考文章中查阅。 不断学习不断更新~ 我们知道,矩阵乘法对应了一个变换,是把任意一个向量变成另一个方向或长度都大多不同的新向量。在这个变换的过程中,原向量主要发生旋转、伸缩的变化。如果矩阵对某一个向量或某些向量只发生伸缩变换,不对这些向量产生旋转的效果,那么这些向量就称为这个矩阵的特征向量,伸缩的比例就是特征值。 实际上,上述的一段话既讲了矩阵变换特征值及特征向量的几何意义(图形变换)也讲了其物理含义。物理的含义就是运动的图景:特征
2022-04-05 15:27:04
2415
原创 <论文阅读> 基于对称距离流和多扫描对齐的稳健平面里程计(IEEE 2018)
目录摘要一、引言三、视觉里程计的距离流约束四、优化问题A. 预加权策略五、多扫描公式六、求解器七、keyscan 选择八、实施细节A. 梯度近似B. 运动过滤器C. 稳健优化的参数摘要 本文提出了一种使用激光扫描仪估计平面运动的密集方法。从扫描之间几何一致性的对称表示开始,我们推导出精确的距离流约束,并将扫描观测的运动表示为扫描仪刚性运动的函数。与将最新扫描与前一个或最后一个选择的 keyscan 对齐的现有技术相比,我们提出了一种组合且有效的公式,以在每次迭代时联合对齐所有这三个扫描。这种新的公式
2022-04-02 16:17:19
3228
2
原创 滤波融合(二)基于C++完成一个简单的 扩展卡尔曼滤波器的非线性系统模型
之前已经简单的实现过线性卡尔曼滤波:滤波融合(一)基于C++完成一个简单的 线性卡尔曼滤波器 进行传感器融合那么对于非线性的系统,区别就是多了线性化的过程,因为高斯映射到非线性函数,其结果不再是一个高斯分布。根据线性化方法的不同还可以区分为EKF、UKF,目前只介绍EKF,UKF以后有机会的话再说吧~基础的理论部分看见文章:通俗易懂理解扩展卡尔曼滤波EKF用于多源传感器融合对于线性和非线性的划分,直观的理解就是:只有加法和数乘的就是线性的,除了线性的就都是非线性的。具体可参考:线性和非线性的区别。那
2022-03-30 14:08:24
2636
原创 <论文阅读> 基于 Warping 理论的高精度光流估计 (计算机视觉 - ECCV 2004)
目录摘要1 简介2 变分模型3 最小化3.1 欧拉-拉格朗日方程3.2 数值逼近4 与 Warping 方法的关系摘要 我们研究了一种用于计算光流的能量函数,它结合了三个假设:亮度恒定假设、梯度恒定假设和不连续性保持时空平滑约束。为了允许大位移,严格避免两个数据项中的线性化。我们提出了一个基于两个嵌套的定点迭代的连续数值方案。通过证明该方案实现了从粗到细的 Warping 策略,迄今为止主要在实验上使用的 Warping 提供了理论基础。我们的评估表明,与以前的光流估计技术相比,新方法的角度误差要小
2022-03-24 20:31:24
3877
2
原创 <论文阅读> DI-FODO — 3D距离传感器的快速视觉里程计
目录摘要:一、引言二、相关工作三、从距离流方程导出的速度约束四、求解相机运动A. 最小二乘解B. 加权函数五、场景几何、协方差分析和速度过滤六、 DIFODO 框架和实施A. 高斯金字塔B. WarpingC. 深度图像梯度和权重D. 过滤速度和更新姿势不知多少同学是通过RF2O知道这篇论文的,很多公式RF2O中并没有介绍,读该论文可以很好的答疑。不过其中很重要的一部分Warping 因为也不是本文的贡献,所以没有给出它的数学公式,那么读完这篇就是下一篇:High Accuracy Optical F
2022-03-24 16:02:36
3827
原创 RF2O-2D激光里程计算法源码解析与相关公式的详细推导
目录1.CMakeLists 起飞2.main 函数3.计算激光里程计的主循环3.1 创建图像金字塔 createImagePyramid3.2 金字塔处理的八个步骤3.2.1 计算坐标3.2.2 找到数据为0的点3.2.3 计算梯度3.2.1 金字塔缩放后的数据裁剪 很早之前看过这篇论文,但是当时还是以多线激光雷达为主,最近又回到了2D激光里程计,所以有重新看了这部分代码,顺便记录一下!之前的原理部分可参考:RF2O激光里程计算法原理1.CMakeLists 起飞先从 CMakeLists 开
2022-03-19 17:08:14
6572
14
转载 机器人导航路径平滑算法:一条符合机器人运动限制的路径
介绍机器人通过栅格地图进行路径规划时,根据静态障碍物得到全局路径,本阶段暂不考虑动态障碍物。通过各种路径规划算法,如 Dijkstra’s,A*,D-star,RRT等,规划出的路径都存在直线之间有急剧拐弯(曲率变化大)的问题。尽管通过将八邻域改为更多邻域,如前文所述,能略微改善曲率变化急剧的问题,但是这样的路径仍然不适于机器人运动模型,尤其是非全向机器人,如阿克曼底盘,所以需要一条符合机器人运动限制的路径。路径连续性连续性包括两个部分:几何连续 ,参数连续 。几何连续指路径的多个片段的起始点相连,而且
2022-03-17 23:28:50
4202
原创 算法工程师的加分技能,使用GTest维护自己的代码
来自百度百科的介绍:gtest,测试框架,是在不同平台上(Linux,Mac OS X,Windows,Cygwin,Windows CE和Symbian)为编写C++测试而生成的。它是基于xUnit架构的测试框架,支持自动发现测试,丰富的断言集,用户定义的断言,death测试,致命与非致命的失败,类型参数化测试,各类运行测试的选项和XML的测试报告。现在对于工程师的要求,不仅仅是写代码,自己还要兼顾单元测试,猝!博主也是现学现卖,算是记录一下小白的学习过程吧~GTest可以对业务代码直接测试,而有
2022-03-17 22:49:54
1029
1
原创 滤波融合(一)基于C++完成一个简单的 卡尔曼滤波器 线性的系统和测量模型
在机器人定位中,KF或者EKF是常用的传感器融合算法,之前也总结过很多关于EKF的用法:如何理解卡尔曼滤波(Kalman Filter)实现数据融合通俗易懂理解扩展卡尔曼滤波EKF用于多源传感器融合简单的来说,EKF 分为两个过程,预测和更新,预测的部分一般使用的是数据频率比较高的传感器,例如IMU或者Odom数据,这里为了对比效果,使用了 bfl 例子中的仿真传感器数据,首先先对bfl中的例子,做一个简单的解析: for (time_step = 0; time_step < NUM_TI
2022-03-16 00:00:04
2763
4
原创 <论文阅读> 基于激光的人类跟随机器人的并排跟随 Laser-Based Side-by-Side Following for Human-Following Robots
在结构化环境中,跟随人的移动机器人面临着目标人在走廊交叉口处转身时,被墙壁完全遮挡的挑战。这可能会导致目标在跟随机器人的视野范围内短期甚至永久丢失。针对该问题,提出了一种新的并行跟踪方法。在本文中,人类跟随机器人首先使用车载激光扫描仪检测目标人的腿和不同类型的走廊交叉口。然后,我们提供了一种走廊检测方法对目标和走廊交叉点之间的几何结构约束进行聚类。最后,为了增加目标人在走廊交叉口处转弯时的可见时间,结合激光信息设计了一种并排跟随腿跟踪器(SFLT)。
2022-03-14 16:38:40
814
2
原创 室内移动机器人二维激光数据线特征提取算法的总结与开源算法分享
摘要: 本文介绍了应用于室内环境二维激光扫描的不同线提取算法的实验评估。选择并测试了移动机器人和计算机视觉中的六种流行算法。通过使用不同平台从两个办公环境中收集的 真实激光 数据用于实验中,以评估算法。提出并讨论了几种比较标准,以突出每种算法的优缺点,包括速度、复杂性、正确性和精度。使用标准统计方法将算法的结果与基本事实进行比较。进行了扩展的案例研究,以进一步评估 SLAM 应用程序中的算法1 介绍 对于移动机器人来说,能够在已知或未知的环境中自主导航和定位是很重要的。精确的位姿估计始终是任何导航
2022-03-14 11:11:03
8998
5
原创 <论文阅读> RF-LIO:高动态环境中首先移除动态点的紧耦合激光雷达惯性里程计
继续在家读文献~ 希望下周能继续打工,最近还是更多的关注激光里程计相关的方向。论文地址:Removal-First Tightly-coupled Lidar Inertial Odometry inHigh Dynamic Environments摘要:同步定位和建图(SLAM)被认为是智能车辆和移动机器人的基本能力。然而,当前大多数激光雷达 SLAM 方法都是基于静态环境的假设。因此,在具有多个移动对象的动态环境中定位实际上是不可靠的。论文提出了一种动态 SLAM 框架 RF-LIO,它建立在 L
2022-03-13 17:27:22
6856
9
原创 <论文阅读>用于 3D 点线和平面的视觉惯性里程计框架 A Visual Inertial Odometry Framework for 3D Points, Lines and Planes
被疫情包围了!在家多看看论文吧~论文地址:A Visual Inertial Odometry Framework for 3D Points, Lines and Planes【摘要】:恢复连续相机位姿之间的刚性配准是 3D 重建、SLAM 和视觉里程计的核心。配准依赖于计算连续相机图像中可区分的 2D 特征以确定特征对应的能力,这在特征较差的环境(即低纹理和/或低光环境)中非常具有挑战性。在本文中,我们旨在解决视觉惯性里程计(VIO)在特征较差的环境中恢复连续相机姿势之间的刚性配准的挑战。除了惯性传
2022-03-12 22:41:36
1684
原创 <论文阅读> CorAl – 点云是否正确对齐? CorAl – Are the point clouds Correctly Aligned?
【摘要】:在机器人感知中,许多任务依赖于点云配准。然而,然而,目前还没有一种方法可以在没有特定环境参数的情况下可靠地自动检测错位点云。我们提出"CorAl",一种用于点云对的对齐质量度量和对齐分类器,它有助于评估配准性能的能力。 CorAl 比较了两个点云的联合熵和分离熵。分离熵提供了可以认为是环境固有的熵的度量。因此,如果点云正确对齐,则联合熵应明显更低。计算期望熵使得该方法对小的对齐误差也很敏感,这些误差特别难以检测,并且适用于一系列不同的环境。我们发现 CorAl 能够以 95% 的准确率在以前看不见
2022-03-12 16:16:39
3358
1
转载 win10 git 命令行出现 no matching host key type found. Their offer: ssh-rsa 解决方案
一 现象:win10电脑,配置好公私钥之后,仍然无法直接用 git ssh的方式,下载代码。出现形如no matching host key type found. Their offer: ssh-rsa 的错误.二. 解决方案:C:\Users\walkerjiang.ssh\config增加以下二项,没有就新建HostKeyAlgorithms ssh-rsaPubkeyAcceptedKeyTypes ssh-rsa...
2022-03-07 16:31:06
3177
原创 Windows和Linux 20.04两台主机如何共用一套键鼠
Ubuntu设置:Ubuntu20.04安装synergy(Windows和linux共用一套键鼠)Windows设置:synergy比较详细的使用方法(多台电脑共享一套键盘和鼠标)链接: https://pan.baidu.com/s/1MNG5RM-GeHl4rKMzJvdcjg 提取码: hepi问题1:服务器运行出错WARNING: cannot listen for clients: cannot bind address: Address already in use杀死进程来解决,
2022-03-02 10:12:23
1562
2
原创 SLAM中的坐标系旋转变换以及旋转矩阵的左乘和右乘问题
参考文章:旋转的左乘与右乘对于一个变换矩阵 TTT,具体的定义因人而异,例如一个变换 TwcT_{wc}Twc,代表了从相机坐标系到世界坐标系的变换,但是其基准(base)坐标系有时候定义为 www,也可以定义为 ccc,基准坐标系的不同,直接导致变换相反。例如对于下图中的三个简单的坐标系,分别为相机坐标系 c1,c2c1,c2c1,c2,世界坐标系 www,其中点 PPP 在坐标系 c1c1c1 下。接下来定义变换矩阵,为了简化计算,其中三个坐标系没有旋转,只需要考虑平移。对于变换矩阵 TwcT
2022-02-28 13:59:22
1651
原创 正交最小二乘拟合直线方程公式详细推导
点到直线距离误差:d=∣ax+by+c∣a2+b2d = {|ax+by+c| \over \sqrt {a^2+b^2}}d=a2+b2∣ax+by+c∣误差函数:f(a,b,c)=∑i=1i=ndi2f(a,b,c) = \sum_{i=1}^{i=n}d^2_if(a,b,c)=i=1∑i=ndi2求误差函数极值点,即一阶偏导等于0,对于 di2d_i^2di2:di2=a2x2+2abxy+2acx+2bcy+b2y2+c2a2+b2d_i^2={a^2x^2+2abxy+2acx+
2022-02-25 23:44:12
1739
4
原创 Gazebo11 配置环境关于加载传感器和插件的问题记录
在URDF中加载传感器无效: <xacro:include filename="$(find racecar_description)/urdf/sensors/lidar.xacro" /> <joint name="lidar_joint" type="fixed"> <origin xyz="0 0 0.03" rpy="0 0 0" /> <parent link="base_link"/> <child li.
2022-02-07 11:17:47
773
原创 ROS机器人入门课程之Cmake工程的创建与使用
ROS是一个机器人平台,在ROS中包含了各种各样的功能算法,各个功能算法之间通过消息进行传递数据。如何在ROS中编写一个C++工程呢?编写一个hello world!首先新建一个文件夹catkin_ws,初始化工作区 catkin_init_workspace下面就可以在这个工程中编写代码了,此时新建一个src文件夹用于存放自己的功能包。在一个catkin_make工程中,一个功能包包含了include、src文件夹和CMakeLists.txt、package.xml文件。可以通过命令catk
2021-12-08 09:14:05
1627
原创 在 VSLAM 的后端优化中的重投影误差的雅可比计算详细推导
SLAM的后端优化学习笔记对于相机位姿的变换可以通过旋转矩阵或者四元数进行表示,对于旋转矩阵的定义满足:R{∣R∣=1RRT=I R \begin{cases} |R| = 1 \\ RR^T = I\\ \end{cases} R{∣R∣=1RRT=I即RRR 为正交矩阵,且行列式为1 。 旋转矩阵的行列式为什么等于1?除了旋转矩阵外,还需要仿射矩阵,仿射矩阵
2021-11-01 17:22:47
1838
转载 在vins初始化中的陀螺仪偏置标定原理与代码部分
对于窗口中连续两帧图像 bkb_{k}bk 和 bk+1b_{k+1}bk+1,之前已经通过视觉 sfm 得到了两帧相对于滑窗第一帧的旋转qc0bk和qc0bk+1\mathbf{q}_{c_{0} b_{k}}和\mathbf{q}_{c_{0} b_{k+1}}qc0bk和qc0bk+1,此时之前通过 IMU 预积分得到这两帧旋转的预积分γ^bkbk+1\hat{\gamma}_{b_k b_{k+1}}γ^bkbk+1(先前不带 bias 的预积分)。此时,我们可以建立约束方
2021-10-28 12:30:44
681
原创 在运行VINS时后端优化进程出现错误 pose_graph process has die “terminate called after throwing an instance“
在realsence上测试运行vins时,后端优化部分进程挂掉,如下图所示,看提示是string的问题,通过调试定位到描述子模板文件名出现问题。通过打印看出是工程目录出现问题,因此在导入时将描述子文件换成绝对路径,问题解决!/home/robot/vins/src/VINS-Mono/pose_graph/../support_files/brief_pattern.ymlBriefExtractor extractor(BRIEF_PATTERN_FILE.c_str());BriefExtr
2021-10-22 10:15:50
1327
7
翻译 【翻译】国际标准 IEC TR 63145-22-10 |AR类型的特定测量方法. 光学性能
1. 范围IEC 63145本部分规定了用于确定增强现实(AR)眼镜显示器的透明光学特性和成像质量的标准测量条件和测量方法。这包括眼镜显示器的传输特性和环境光学性能。隐形眼镜类型的显示器不在本文档的范围内。说明:范围与其他文件(IEC 63145-20-10、IEC 63145-22-10)的关系见附件A。2. 引用标准以下文件在文中的引用方式使其部分或全部内容构成本文件的要求。对于注明日期的参考文献,仅引用的版本适用。对于未注明日期的参考文献,应使用最新版本的参考文献(包括任何修订)。3.
2021-09-27 19:14:49
4613
1
原创 CMU团队开源算法点云地面分割 terrainAnalysis 代码解析
在CMU团队开源的全套导航系统中,点云的地面分割是在局部路径规划的前提。之前的文章已经对局部路径规划算法做了详细的介绍,包括Matlab用采样的离散点做前向模拟三次样条生成路径点,CMU团队最新开发的局部路径导航算法 localPlanner 代码详解以及如何适用于现实移动机器人。CMU所提供的点云地面分割算法在其提供的仿真环境下,效果比较明显,可以有效的识别地面与障碍物。首先还是对参数简单的介绍一下:double scanVoxelSize = 0.05; --- 点云下采样doubl
2021-09-24 00:09:03
5248
10
原创 CMU团队开源的局部路径导航算法 localPlanner 代码详解以及如何适用于现实移动机器人
开源了很久的局部规划器算法,实际使用效果也非常不错,不过一直没仔细去阅读,最近有时间对这部分代码仔细梳理一下。在阅读localPlanner局部路径规划代码之前,首先需要了解其局部路径的生成过程。详细解析可参考博客:Matlab用采样的离散点做前向模拟三次样条生成路径点GitHub地址:https://github.com/HongbiaoZ/autonomous_exploration_development_environment/tree/noetic/src/local_plannerAut
2021-09-21 22:59:37
13275
43
原创 如何理解卡尔曼滤波(Kalman Filter)实现数据融合
基础理论介绍:扩展卡尔曼滤波EKF用于多源传感器融合相关 robot pose ekf 代码解析:robot_pose_ekf源码解读 - zhxue_11Navigation源码阅读之robot_pose_ekf - 若愚和小巧robot_pose_ekf源码解读 - 首飞爱玩机器人本篇博客主要是记录自己 EKF 的学习过程,以理论逻辑为主线,代码实现为辅助理解如何从头开始实现一个基于扩展卡尔曼滤波的数据。待更…...
2021-09-21 00:47:09
10568
4
利用 Object C 和 Foundation 框架,利用栈实现数值表达式的 求值。
2019-12-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人