- 博客(55)
- 收藏
- 关注
原创 经典的定位算法
通过迭代的方式,找到两个点云之间的最近点对应关系,并优化变换矩阵 (R,t),最小化点对之间的距离误差。已知一组 3D 点(世界坐标系)及其对应的 2D 投影(图像像素坐标),求相机的位姿。EKF 通过预测-更新两步迭代估计状态。直接线性变换DLT : 需要6个点。Epnp : 需要四个点。p3p : 需要三个点。使用SVD的方法来解决。
2025-04-24 08:03:18
145
原创 非线性优化总结
通过最小化误差的平方和,找到最优解,使得预测值与观测值之间的差异最小minFx12∣∣fx∣∣22minFx21∣∣fx∣∣22f简单时,线性最小二乘,令导数为0,求解最优值f 复杂的时候,用迭代法求解。给定初值x_0对于第k次迭代,寻找增量Δxk\Delta x_kΔxk使得∣∣fxkΔxk∣∣∣∣fxkΔxk∣∣最小足够小,就停止否则,xk1xkΔxkx。
2025-04-24 08:02:09
829
原创 三维点拟合平面ransac c++
平面的一般定义在三维空间中,一个平面可以由两个要素唯一确定:法向量 n=(a,b,c):垂直于平面的方向平面上一点p−p0∗n0即ax−x0by−y0cz−z0d0Step 1:从 3 点拟合平面设 3 个点为 p1, p2, p3v1p2−p1v2p3−p1nv1xv2平面点p0 = p1p−p0∗n0Step 2:点到平面的距离di∣∣n∣∣∣pi−。
2025-04-18 18:34:07
1121
原创 三维点拟合直线ransac c++
ltp0t∗d其中RANSAC 拟合步骤(3D)随机选两个不同点𝑝1,𝑝2计算方向向量dp2−p1di∣∣d∣∣∣∣pi−p1xd∣∣判断哪些点为内点(距离小于阈值)重复若干次,保存内点最多的模型。
2025-04-18 17:52:03
597
原创 SLAM | 两组时间戳不同但同时开始的imu如何对齐
手动在上面的那个表格上在A组x轴中找到 最接近B组 x轴 第一个时间戳的点,以此为开始,把B组所有的imu数据挪下来,跟A组同一行 此时 比如说都到了N行 上述的图表 x轴更改为从N行开始 AN - AN-1 作为开始 BN-BN-1 也是。画在一张表上,对比轨迹,看相似度,如果两个数据没有完全对上,手动找到A组 B组 相同轨迹突出的点,取出来对应点的 x轴数据 A点 B点 相减 得到 C。B(N-M) -(BN- AN) 作为跟A组imu对齐的时间戳。
2025-04-15 16:39:45
145
原创 数据处理 | 加速度数据和陀螺仪数据对齐时间戳
要将 加速度计数据(Accelerometer) 和 陀螺仪数据(Gyroscope) 对齐时间戳,有几种常用方法,取决于你需要的精度、数据频率是否一致、是否异步采样等。使用滤波器(如 Kalman/Savitzky-Golay)平滑后再对齐;可选择以加速度计或陀螺仪为主时间戳,使用最近的对方数据或线性插值对齐。多传感器系统(如 Kalibr)用 spline 模型对齐。📌 适合:两种数据频率接近,但时间戳不完全对齐。✅ 方法二:最近邻(粗略一点)✅ 方法一:线性插值(推荐)✅ 3. 高级方法(可选)
2025-04-09 17:30:23
175
原创 听课笔记-nlp
预训练pre-train (没有明确目标,没有明显指向任务,是为了今后的精调做准备的,用大量的语料做准备,上千亿种)+ Fine-Tuning 是AI训练方法的革命性创新。若干个CNN,平行的放置,首尾链接,ELMo,处理的是一个顺序对象,基本特征为顺序,人读东西是非线性的。词组与搭配关系,乃至于句法和语法,都和词汇之间的亲密度,密切相关,嵌入时,不能只考虑词汇本身的含义。要出深度只有两个途径,一个是一个角度拍一张,两张不同角度的图,三角化,另外一种,立体相机,双目。两大特点:非线性,大量的计算。
2025-04-03 11:23:15
246
原创 windows 下 libuvc库 c++ 实现调节USB摄像头参数并显示图片
参考博客:1> 下载源码libuvc 链接 :https://github.com/libuvc/libuvc2> 修改camkelists参考博客 : https://blog.youkuaiyun.com/Arom_Corge/article/details/1392410333 > 修改源码参考博客 : https://blog.youkuaiyun.com/zengyaowu1988/article/details/138862224修改 stream.c4> 下载依赖库使用CMake (cmake-gui)
2025-02-26 16:16:33
920
原创 编译G2O库记录
CMake配置,生成,然后打开build文件夹,找到SuiteSparseProject.sln INSTALL设为启动项并生成。打开g2o.sln , 如果生成之后报错,找不到xxx.lib 找到xxx工程,属性,修改生成为lib, 重新编译,就好了。在此处可以开启openMP加速,SSE加速,其他的加速操作都在cmakelists.txt里面,需要自己查找。参考博客:【SLAM】SLAM环境配置 Win10+VS2019+OpenCV+PCL+g2o+Vcpkg。
2025-02-13 15:38:20
262
原创 ExtendedKalmanFilter | 基础公式
xk=f(xk−1,uk,wk)x_{k} = f(x_{k-1},\quad u_{k},\quad w_{k})xk=f(xk−1,uk,wk)zk=h(xk,vk)z_{k} = h(x_{k},\quad v_{k})zk=h(xk,vk)x^k−=f(x^k−1,uk−1,0)\hat{x}^{-}_{k} = f(\hat{x}_{k-1},\quad u_{k-1},\quad 0)\\\\x^k−=f(x^k−1,uk−1,0)P^k−=Ak∗Pk−1∗AkT
2025-02-08 14:05:43
971
原创 图像处理基础 | 格式转换.nv12转高质量.jpg灰度图 python
例如,UV 平面存储的第一个字节是 U 分量,第二个字节是 V 分量,接着是下一个 U 和 V 分量,以此类推。色度子采样:在 YUV 4:2:0 中,色度分量 U 和 V 的分辨率是亮度分量 Y 的一半(水平和垂直方向各采样一半),因此 UV 平面的尺寸比 Y 平面小一半。:存储的字节数是 (W // 2) * (H // 2) * 2,每两个像素共享一个 U 和一个 V 分量,因此每个像素占用一个字节,U 和 V 分量交错存储。Y 平面包含图像的亮度信息,对于每个像素有一个对应的 Y 值。
2024-12-23 16:12:30
439
原创 图像处理基础 | 格式转换.rgb转.jpg 灰度图 python
通常 .rgb 文件会按 从上到下 的顺序存储图像的各行(即第 1 行存储在文件的前面,第 N 行存储在文件的后面)。不过在某些图像生成工具或设备中,可能会使用 从下到上 的顺序存储(即第 1 行存储在文件的最后)。在 OpenCV 和其他图像处理库中,图像的原点通常位于左上角,而在某些情况下,.rgb 文件可能是从左下角开始存储的 ,下述代码是从左下角开始存储的,所以需要翻转一下图片。每行的数据会按顺序存储,即第一个像素的 R、G、B 数据存储在前,第二个像素的 R、G、B 数据存储在后,以此类推。
2024-12-23 16:03:29
469
原创 图像处理基础 | 查看两张图像的亮度差异,Y通道相减
两张图像的Y通道相减通常用于图像差异分析或比较,尤其是在亮度方面。具体来说,这一操作是基于YCbCr颜色空间中的Y通道进行的,其中Y通道代表图像的亮度信息(亮度成分),而Cb和Cr通道分别代表色度成分(色彩信息)。Y通道相减:当我们对两张图像的Y通道进行相减时,实际上是在比较两张图像的亮度信息,目的是计算它们在亮度方面的差异。通过提取它们的Y通道并进行相减,你可以获得一张图像,其中显示的是两者亮度上的差异。如果结果值为正或负:表示两张图像的亮度存在差异,具体是某一张图像比另一张图像亮或暗。
2024-12-23 15:17:14
427
原创 android与PC端std::unordered_map运行结果不一致
android与PC端std::unordered_map运行结果不一致。
2024-12-19 16:17:16
88
原创 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK2001 无法解析的外部符号 “__declspec(dllimport) public: class std::basic_ostrea
错误 LNK2001 无法解析的外部符号 “__declspec(dllimport) public: __int64 __cdecl std::basic_streambuf::sputn(char const *,__int64)” (_严重性 代码 说明 项目 文件 行 禁止显示状态。
2024-11-23 15:11:28
655
原创 ros service不走是为什么
在上面的代码中,/my_service 的服务名称要和 rosservice list 中的名称保持完全一致,包括斜杠和大小写。确保你在客户端调用服务时使用的名称与 rosservice list 中显示的服务名称完全一致。使用 rosservice list 列出当前注册的服务,确认服务是否存在。通过以上方法,你可以检查服务名称是否一致并确保正确调用。这会告诉你提供该服务的节点以及该服务所使用的消息类型。目标:在这个列表中找到你希望调用的服务名称。服务名称是否一致 这个怎么看,请剧烈。
2024-10-15 22:56:37
593
原创 ros service client 通过launch读取json文件修改参数
你可以将此文件命名为 camera_settings.json 并放在一个合适的路径下,如 /home/user/config/camera_settings.json。在 ROS 中,使用 C++ 实现服务端与客户端通信,并通过 JSON 修改相机的自动曝光或亮度值,同时结合 launch 文件来启动,可以按照以下步骤进行。客户端调用服务:客户端会读取 JSON 文件中的配置,并通过服务将这些配置发送到服务端。json_file_path:这个变量指向包含相机设置的 JSON 文件的路径。
2024-10-13 22:32:48
491
原创 ros 添加usb-cam库
解压后不要在usb-cam里面cmake!否则在 ~/catkin_ws/路径下catkin_make 的时候会连接不上。下载好资源包usb-cam后。
2024-09-30 11:55:52
310
原创 Command ‘catkin_make‘ not found, but can be installed with: sudo apt install catkin
【代码】Command ‘catkin_make‘ not found, but can be installed with: sudo apt install catkin。
2024-09-29 15:25:45
320
原创 ros 添加usb-cam 库出现的问题
下载usb-cam放在catkin_ws /src下。在catkin_ws 下编译。进入usb-cam文件夹下。
2024-09-27 23:42:48
731
原创 ros c++ server/client
创建 srv目录mkdir -p ~/文档/catkin_ws/src/service_json_comm/srv创建ser_json.srv文件echo 命令 创建一个名为file.txt的文件,并将This is some text写入文件中。如果文件已经存在,则内容会被覆盖。
2024-09-26 19:47:37
449
原创 vs C++项目崩溃的一些复盘
在函数内部释放,必须得用二级指针,类写了析构,作为输入传入函数,如果没使用指针或者引用,这个形参出函数作用域就会被释放掉,以至于最后的值不对。vs崩溃,调用堆栈给出的位置有时候不准,可能是定位位置栈空间的前面越界导致的,这种情况查起来费劲巴拉的,刚开始写的时候一定得小心检查,假如越界了,但是用的是堆空间,测试验证数据的时候可能看不出来,也不会提示崩溃,但是呢开了windebug就能提示崩溃了。最近项目调试,代码很多崩溃,遇到的情况大概有以下几种。大部分只考虑了正常运行的情况,遗漏了不正常情况的分支。
2024-09-18 10:28:23
261
原创 git 笔记(更新中)
设置用户创建版本库git init查看版本库状态git status讲工作区的修改添加到暂存区将暂存区内容提交到版本库查看版本库中的历史版本如果对a.md 修改后,再查看状态git status查看到底修改了什么内容提交修改,提交文件重复上述操作查看历史记录git log精简查看查看log查看文档内容cat a.md查看版本号git reflog回到33版本Git撤销修改和删除文件操作撤销修改查看状态。
2024-09-10 17:47:25
316
1
原创 vs C++ 跳转定义位置不对,已解决
注:踩坑事件,删除.vs文件不可以,会导致项目的.vcxproj.filters文件错乱,进而导致解决项目的排布错乱,而且跳转不准确的事情依旧没有解决。将False改为True。
2024-08-27 17:58:28
420
原创 Command ‘roscore‘ not found, but can be installed with
python-roslaunch : 依赖: python-roslib 但是它将不会被安装。E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是。因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件。包尚未被创建或是它们已被从新到(Incoming)目录移出。正在读取软件包列表…正在分析软件包的依赖关系树。
2024-07-24 20:15:36
683
原创 有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是 因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件 包尚未被创建或是它们已被从新到(Incoming)目录
python3-rosdep2 : 依赖: python3-catkin-pkg 但是它将不会被安装。E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是。因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件。包尚未被创建或是它们已被从新到(Incoming)目录移出。依赖: python3-rospkg 但是它将不会被安装。
2024-07-24 19:47:15
496
原创 ubuntu18.04 gpg: 从公钥服务器接收失败:文件结尾
E: 仓库 “http://mirrors.ustc.edu.cn/ros/ubuntu bionic Release” 没有 Release 文件。N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。N: 无法安全地用该源进行更新,所以默认禁用该源。gpg: 从公钥服务器接收失败:文件结尾。
2024-07-24 19:37:18
503
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人