- 博客(56)
- 资源 (3)
- 收藏
- 关注
原创 SLAM与现实复杂场景不符的一些假设
SLAM环境感知迈向通用性场景,仍要解决鲁棒性问题。下面按照个人经验和理解给出了SLAM中与现实情况不符的一些假设。
2024-12-06 12:07:27 667
原创 多视图变换矩阵与SLAM位姿估计中的地图点投影的几何约束
Homography矩阵:适用于平面场景和特定的运动情况,可以用于图像配准和特征匹配,但不适用于一般的三维场景。Essential矩阵:精确的相机位姿估计和三维重建,需要相机内参。Fundamental矩阵:不需要相机内参,可用于特征点匹配的几何约束和初步的相机位姿估计,。在初始化阶段,计算Essential矩阵、Homography矩阵或Fundamental矩阵来初始化相机位姿和地图点。运动跟踪阶段:通过特征点匹配和PnP算法估计相机位姿,利用局部BA优化相机位姿和地图点位置。
2024-06-11 17:31:28 582
原创 在docker中运行SLAM十四讲程序
docker pull ddhogan/slambook:v0.1 使用XLaunch显示轨迹可视化,过程中的tips
2024-05-21 21:55:27 726 1
原创 C++的lambda函数、bind函数、类函数绑定参数,学习测试用例
如何使用Lambda表达式、std::function 和 std::bind 处理普通函数、多参数函数以及类成员函数的绑定和调用
2024-05-21 09:48:06 289
原创 ORB-SLAM2重要函数总结(1)——特征点、地图点、关键帧
IC_Angle通过遍历特征点周围的像素,利用灰度质心法来计算特征点的角度朝向。具体地,它根据像素值和像素坐标的加权和来计算方向角度,使特征点具有旋转不变性。函数通过遍历一组特征点的方向角度,并为每个特征点调用IC_Angle函数来计算其方向角度,以实现特征点的旋转不变性,从而提高特征匹配的鲁棒性和性能。keypoints中的每个特征点的angle属性被更新。用于计算ORB特征点的描述子。
2024-01-14 22:48:48 1234
原创 地图点(MapPoint)和关键帧(KeyFrame)——ORB-SLAM2
【代码】地图点(MapPoint)和关键帧(KeyFrame)——ORB-SLAM2。一些容易混淆的概念和函数
2024-01-13 18:02:49 559
原创 ORB-SLAM2局部建图LcalMapping函数说明
() 函数用于检查新增的地图点,根据地图点的观测情况剔除质量不好的新增地图点,确保地图的质量和一致性。() 函数检查并剔除不合格的新增地图点。通过遍历最近添加的地图点列表,根据观测比例和相机数量等因素进行筛选和标记,确保地图中的地图点质量和一致性。CreateNewMapPoints() 函数用于根据当前关键帧与相邻关键帧之间的特征点匹配,通过三角化产生新的地图点,以提高地图的稳定性和密度。在局部建图线程中,会在共识关键帧之间重新进行特征匹配、三角化,生成新的地图点。这对于稳定的跟踪非常重要。
2024-01-01 09:29:24 1168 1
原创 Ubuntu18.04配置ZED_SDK 4.0, 安装Nvidia显卡驱动、cuda12.1
ubuntu桌面->左下角九宫格->software & update->additional Drivers。选择合适的,比如我选择530驱动。出现这个的原因如下:ubuntu自己把GPU的驱动更新了,导致nvidia显卡 Kernel Module 与Driver Version 不一致。安装完cuda后,nvidia-smi右上角的cuda版本可能会变化,这不影响。需要注意:关闭更新、关闭不需要的源、选择适配的驱动版本。在软件更新中心里,手动安装显卡驱动。根据显卡驱动、下载cuda。
2023-08-05 09:44:53 815
原创 控制串口数据解析函数线程的频率,并且采用Ctrl+C终止
Python版程序,串口通信用`threading.Timer`控制执行某个函数的频率,并且采用`keyboardInterrupt`控制终止
2023-07-09 11:26:14 428
原创 USB串口通信,树莓派使用GPIO口,收发16进制数组的Python代码
上位机采用USB串口,树莓派使用GPIO口,两者串口通信收发16进制数组的Python代码
2023-07-08 23:27:23 2895
原创 上位机和树莓派采用USB转TTL模块连接,采用串口通信
树莓派的GPIO引脚UART接口标有TX(发送)和RX(接收)引脚。下面是一个python示例,展示了如何使用USB转TTL模块在Linux系统的工控机和树莓派之间进行双向串口通信的基本框架。
2023-07-08 18:38:38 1549
原创 C++版ROS节点函数中,通过launch文件配置bool型参数
launch文件中配置为,函数中调用nh.param("your_param_name", your_param, false);
2023-07-03 18:04:17 651
原创 python版的ROS节点以字符串为参数输入,并在launch文件中配置
配置参数采用,程序中调用采用input_string = rospy.get_param('~input_string')
2023-07-02 21:20:55 802
原创 《视觉SLAM十四讲》示例程序编译报错处理(上)
Ubuntu 22.04,所有库采用最新版。这本书中的代码有一些因为版本的问题会报错,本文总结一下我遇到的问题。
2022-12-07 10:15:04 2264 1
原创 最优控制理论 九、Bellman动态规划法用于最优控制
简单列举了确定性问题、决策过程的动态规划法和连续系统最优控制的Hamilton-Jacobi-Bellman方程,用于有限时域动态系统进行轨迹优化
2022-10-21 08:24:32 5913 1
原创 ubuntu22.04备份系统的完整操作过程
进入U盘启动盘,需要备份除了swap扇区以外的4个扇区。本文按照mksquashfs 命令备份。下面是备份系统整个过程的命令及其输出。
2022-09-25 20:35:39 5754 3
原创 3维空间目标跟踪的CV,CA,CT动力学模型
类似于二维平面上车辆转动的CV,CA,CT模型。3维空间的CV、CA、CT模型也存在。用于目标跟踪时,需要考虑的角速度、速度、加速度之间的耦合关系更为复杂,所以本博客列举了这些公式。
2022-07-13 08:48:49 7872 1
原创 α-β滤波器(一种1维稳态Kalman滤波器)详解
本文属于控制系统最优滤波,介绍了一种经典的1维数据滤波器。一.α-β滤波器推导、 二.作为稳态滤波器与Kalman滤波的比较、 三.α-β的参数设置及其最优性、 四.MATLAB/Simulink仿真演示、 五.总结
2022-05-18 17:50:19 8316 1
原创 Python获得程序的运行时间
import timetic= time.time()# ...toc=time.time()print('运行时间t= %f'%(toc-tic))
2021-10-16 23:37:34 526
原创 最优控制理论 五+、极大值原理Bang-Bang控制问题的求解
就一个一维Bang-Bang控制、最小能量+到达时间混合性能指标的问题,给出了MATLAB程序。
2021-10-09 18:20:48 7231 17
原创 Python创建行向量与列向量
Python创建行向量与列向量X0 = np.array([1,2,3,4,5,6])# 一维向量,不能与矩阵相乘X0 = X0[:,np.newaxis] # 二维列向量,6*1# X0 = X0.T # 二维行向量,1*6Phi_t0tf = np.array([[1,0,0,0,0,0], [0,1,0,0,0,0], [0,0,1,0,0,0], [0
2021-09-17 11:43:10 4787
原创 三体问题Mathematica数值解求解
本文参考百度经验如何用Mathematica计算三体问题?,进行了三体问题在三维空间的数值求解,给出了核心部分的计算代码。注意我下面这些初值设定来自一篇2013年的一篇论文(感兴趣的可以私信我),在这种设定下能构成闭合的三体周期轨道。以下这个部分是求解动力学方程的数值计算部分:{{r1xo,r1yo,r1zo,v1xo,v1yo,v1zo,r2xo,r2yo,r2zo,v2xo,v2yo,v2zo,r3xo,r3yo,r3zo,v3xo,v3yo,v3zo}}=NDSolve[{(*第一组*
2021-08-08 13:16:25 2047 1
原创 微分代数是什么?(学习中)
微分代数(Differential Algebra)简单来说是一种利用计算机代数近似实际函数的手段,也就是说函数是以代数变量加减乘除的形式在计算机中保存的,而不是实际数值。因此,它可以作为主流符号运算软件的底层表达方式。它的核心方法是把函数进行Taylor展开,然后用nnn次多项式的系数表达出来,这其中会用到函数的微分,可能这是它称为“微分”代数的原因。在实际运算的时候,用这个“多项式近似”的结果来代替原来的函数关系,就可以有很多方便。典型例子比如,我们手头有一个函数f(x)=sinh(arctan
2021-08-06 17:56:34 950
原创 最优控制理论 八、CasADi求解路径约束轨迹优化的多重打靶法
分析了受限轨迹优化问题数值求解的思路,按照直接转化法处理约束,给出了最优控制问题转化为非线性规划问题多重打靶法的描述,用MATLAB版本CasADi求解。然后又给出了一个直接配点法的计算程序。...
2021-08-02 11:45:03 10754 12
转载 PPT自动添加进度条与页码
最终效果如下:下面是操作步骤:打开 PPT,按 Alt+F11,打开VBE编辑器,插入——模块,并复制下面的代码,最后单击工具栏的“运行”按钮。( 转载自 :alpha - PPT 添加页码进度条)可自动添加进度条。代码中的颜色、大小请手动定义。Sub AddProgressBar() On Error Resume Next With ActivePresentation For X = 2 To .Slides.Count '第一页和最后一
2021-07-28 09:24:48 3679 2
原创 MATLAB/C Mex函数中矩阵的是按列向量形式存储的
对于这样一个6*3的矩阵,它是这样分配内存的:plhs[2] = mxCreateDoubleMatrix((mwSize)6, (mwSize)3, mxREAL);如果测试它的具体是怎么分配的:yout = mxGetPr(plhs[2]);会发现yout是一个一维double指针double *,也就是一维数组。很显然,矩阵在mexFunction内部是按照列向量的形式存储的。对于这样一个矩阵,A=[111213212223313233414243515253616263]A=\begin
2021-06-27 09:11:01 788
原创 Visual Studio建立MATLAB MEX项目用于C语言编译
利用VS提供的项目模板MEX Function Templates建立C源文件,并编译生成.mex64动态库
2021-06-26 17:19:01 1836 4
原创 利用MATLAB Coder自动生成RK45数值积分C程序和MEX动态库
给出了MATLAB转C语言的转化过程以及注意步骤,最后生成的变步长RK45 RKF87数值积分.m语言和C语言版本,可以直接调用函数。
2021-06-18 21:33:56 1258 1
原创 CMake编译.dll并使用开源库SDE
CMake编译并使用SDE Library目录CMake编译并使用SDE Library环境项目修改编译.dll文件并确保它能正常使用测试使用.dll文件文件下载链接环境本篇博客所要做的是:Win10环境使用CMake编译一个开源C++库,这个库所有.h头文件和.cpp源文件都有了,将这个库编译为动态链接库.dll文件。然后在不用重新编译库的情况下,使用CMake包含这个.dll库并测试.exe可执行文件。下载安装以下工具:MinGW x86位,用于C++编译器cmake cmake-3.20
2021-06-02 01:12:00 2072
原创 C语言利用函数指针进行非线性方程求根
下面给出了两种方法求解非线性方程零点的程序,即求解:f(x)=0 f(x)=0f(x)=0形式的方程的根x∗x^*x∗。黄金分割法计算原理为在区间范围[a,b][a,b][a,b]内试探,每次并非去中点而是取黄金分割点。也是一种区间优化方法,只需要提供真实解x∗x^*x∗区间范围。迭代公式为mk=ak+0.618(bk−ak)m_{k}=a_{k}+0.618\left(b_{k}-a_{k}\right)mk=ak+0.618(bk−ak)若f(ak)f(a_k)f(ak)与f(mk)f
2021-05-20 22:01:07 1007 6
RK45 and RKF87.MATLAB-to-C-MEX.rar
2021-06-21
Interior Point Constrained example Based On GPOPS.rar
2021-02-23
An Introduction to Mathematical Optimal Control Theory-Notes v2.0.pdf
2020-07-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人