- 博客(52)
- 收藏
- 关注
原创 pip install pycocotools==2.0.3 报错 gcc: error: ../common/maskApi.c: 没有那个文件或目录 error: command ‘
【代码】pip install pycocotools==2.0.3 报错 gcc: error: ../common/maskApi.c: 没有那个文件或目录 error: command ‘
2024-01-24 14:44:46 785 1
原创 动态SLAM 开源方案汇总及介绍(一)
比如人手上拿着的书、正在搬运的椅子等等。首先最经典的肯定是DS-SLAM和DynaSLAM了,这两篇文章也都来源于2018 IROS,虽然时间比较早,但是思想具有很高的借鉴意义。
2024-01-08 20:54:50 2190 1
原创 Ubunutu18.04 ROS melodic 无人机 XTDrone PX4 Vins-Fuison 运行配置
PX4默认使用的EKF配置为融合GPS的水平位置与气压计高度。如果我们想使用视觉定位,就需要把修改配置文件。让EKF融合来自mavros/vision_pose/pose的数据。
2024-01-06 16:46:29 1236
原创 ./build_ros.sh 解决报错 rospack found package “ORB_SLAM3“ at ““, but the current directory is....
将路径尽量添加在最下面(至少在 source 后),然后保存退出,之后在终端source一下。而且检查发现.bashrc文件中的路径也是正确添加了,但依然报错。然后再去编译就不会报错了。
2023-12-18 22:38:20 1230 1
原创 Ubunutu18.04 ROS melodic 无人机 XTDrone PX4 仿真平台配置
由于修改了PX4 sitl_gazebo中的gazebo_gimbal_controller_plugin.cpp(源代码不能控制多无人机的云台),要再编译一次。如果是false,一般是因为.bashrc里的路径写的不对,仔细检查。终端出现: iris_0: communication initialized ,则表示与0号iris成功建立通信,之后在另一个终端运行。Gazebo启动后,在另一个终端运行(注意要等Gazebo完全启动完成,或者可能脚本会报错)注意下面的usename 是自己的用户名。
2023-12-09 13:35:49 763
原创 Rosbag 制作 TUM数据集
2.使用官方脚本得到associate.txt文件。一、创建rgb和depth文件夹和txt文件。二、替换 bag 路径 和 topic。Rosbag 制作 TUM数据集。1.生成图片和txt。
2023-11-30 17:22:59 764 1
原创 解决 VS2022 关于 c++17 报错: C2131 表达式必须含有常量值
来定义数组大小,代码中[size_node] 是变量而不是一个常数,需要在代码运行时才能确定分配内存的大小。因此需要改为 “使用动态分配内存”。因为C++新标准中 数组的定义不推荐使用。再次编译就没有报错了。
2023-11-20 11:04:48 6504
原创 ORB SLAM3 使用二进制文件 ORBvoc.bin 加载Vocabulary
运行时,需要把原来加载词袋命令 ./Vocabulary/ORBvoc.txt 改成 ./Vocabulary/ORBvoc.bin。解压后,将ORBvoc.bin拷贝到Vocabulary文件夹下。修改加载词袋的类型为 :BinaryFile。
2023-11-16 16:13:16 432
原创 Ubuntu18.04 ROS Melodic的cv_bridge指向问题(四种方式,包括opencv4)(转载)
【精选】Ubuntu18.04 ROS Melodic的cv_bridge指向问题(四种方式,包括opencv4)_XiangrongZ的博客-CSDN博客
2023-10-27 19:25:59 492
原创 手撕 视觉slam14讲 ch13 代码(7)后端优化 Backend::Optimize()
在上一篇 手撕(6)中的InsertKeyframe()插入关键帧的函数里,有一个 Backend::UpdateMap() 函数 ,从这里通过条件变量 map_update_ 来激活后端优化。后端在构造时,就构建了一个启动优化线程Backend::BackendLoop,并上锁,等待前端唤醒然后在前端的InsertKeyframe()插入关键帧的函数里,通过 Backend::UpdateMap() 函数 ,触发地图更新,启动优化: 其中的条件变量 map_update_ 被激活,使得B
2023-10-22 12:38:51 375
原创 手撕 视觉slam14讲 ch13 代码(6)正常跟踪模式 Track()
至此EstimateCurrentPose() 函数完成,返回的当前帧追踪到的特征点内点数量(tracking_inliers_),然后判断当前的跟踪状态,为下次的添加帧做准备.如果内点数大于50 ,就是 tracking good ,内点数小于50大于20, 就是tracking bad,如果小于20,就 tracking lost .更新完跟踪状态后,进入 InsertKeyframe() 函数判断要不要插入关键帧。其中我们关注其中:自定义的顶点和边。中的g2o的实现流程,
2023-10-17 22:58:45 507 2
原创 手撕 视觉slam14讲 ch7 / pose_estimation_3d2d.cpp (2)
上一篇文章中:,我们调用了epnp的方法进行位姿估计,这里我们使用非线性优化的方法来求解位姿,使用g2o进行BA优化。
2023-10-17 22:24:45 772
原创 手撕 视觉slam14讲 ch13 代码(4)VisualOdometry类和工程主函数
num_features_是每帧最多提取的特征点数量,此外还保存一个参数num_features_init_,这个参数在后面的地图初始化中会用到。在后端初始化中,主要是新开一个线程backend_thread_,然后把这个线程中运行的函数设置为Backend::BackendLoopI()函数。因为需要实例化并初始化frontend_,backend_,map_,viewer_四个对象,因此我们需要再额外写出前端、后端、显示这三个类的构造函数。
2023-09-13 17:24:14 389
原创 手撕 视觉slam14讲 ch13 代码(3)相机类、数据集类、参数配置类
我们首先从数据集读取入手,包括读取数据集的参数文件来获得相机的内参和外参,以及读取图片,因此,我们还需要抽象出相机类、数据集类、参数配置类。相机类最简单,我们先来实现它。
2023-09-11 21:13:09 684
原创 手撕 视觉slam14讲 ch13 代码(2)基本类的抽象
虚线:表示依赖关系,A指向B,则代表A依赖于B,即A类中使用了B类的属性或方法,但是不改变B的内容。这里指的是工厂类制造具体产品,显然具体产品是作为返回类型。工厂模式:抽象工厂有子类具体工厂ABC,分别用于生产对应的具体产品ABC。简单工厂模式:一个工厂类分别生产每种具体产品,缺点是对修改不封闭,新增加产品要修改工厂。至此三个基本的类抽象完毕,但是还缺一个地图类(Map)来管理frame和mappoint。常见的SLAM系统中的帧(Frame)需要包含以下信息:id,位姿,图像,左右目特征点。
2023-09-02 22:38:43 574 1
原创 手撕 视觉slam14讲 ch13 代码(1)工程框架与代码结构
开始,我们按照自己写系统的思路进行,首先确定好SLAM整体系统的流程,见下图,输入为双目图像,之后进入前端位姿估计和后端优化,中间维护一个由关键帧和地图点组成的地图。3. MapPoint(地图点类):3D点,通过三角化等方式计算出2d特征点的深度,即获得其3D位置。2. Feature(特征点类):2D点,通过对帧提取特征点,实现后续光流追踪。在学习slam一年之后开始,开始自己理思路,全手敲完成ch13的整个代码。工程框架与代码结构确定好后,我们开始进一步抽象出一些基本的类。
2023-09-02 18:02:22 420
原创 手撕 视觉slam14讲 ch7 / pose_estimation_3d2d.cpp (1)
1. 读图,两张rgb(cv::imread)2. 找到两张rgb图中的特征点匹配对2.1定义所需要的参数:keypoints1, keypoints2,matches2.2 提取每张图像的检测 Oriented FAST 角点位置并匹配筛选(调用功能函数1)3. 建立3d点(像素坐标到相机坐标)3.1读出深度图(cv::imread)3.2取得每个匹配点对的深度3.2.1 得到第y行,第x个像素的深度值3.2.2 去除没有深度的点3.2.3 转到相机坐标系(调用功能函数2)
2023-08-31 16:02:03 1880
原创 踩坑 视觉SLAM 十四讲第二版 ch13 编译及运行问题
需要将 assert(vo->Init() == true这行注释,并改为vo->Init()重新编译运行,效果如图,可以看出轨迹和地图错位严重,并且01序列直接跟踪失败。注意不要在/bin 路径下执行,需要在/ch13下运行。(整体文件很大,约22G,可以先下载一个00序列)在所有 CmakeList文件中后面添加。
2023-08-08 22:41:38 971 12
原创 D455+VINS-Fusion+surfelmapping 稠密建图(三)
【代码】D455+VINS-Fusion+surfelmapping 稠密建图(三)
2023-08-07 21:39:01 1042 1
原创 踩坑 视觉SLAM 十四讲第二版 ch8 编译及运行问题
CMakeLists.txt中:在后面加上 fmt2.不存在用户定义的从 "std::_Bind" 到 "const cv::ParallelLoopBody" 的适当转换:error: invalid initialization of reference of type ‘const cv::Para
2023-07-25 21:07:54 953 1
原创 ORB-SLAM3 ROS 编译报错:Failed to invoke rospack to get compile flags for package ‘ORB_SLAM3‘. Look abov.
【代码】ORB-SLAM3 ROS 编译报错:Failed to invoke rospack to get compile flags for package ‘ORB_SLAM3‘. Look abov.
2023-07-19 14:41:54 1732 3
原创 D455+VINS-Fusion+surfelmapping 稠密建图(二)
【代码】D455+VINS-Fusion+surfelmapping 稠密建图(二)
2023-07-19 10:00:57 986 6
原创 D455+VINS-Fusion+surfelmapping 稠密建图(一)
【代码】D455+VINS-Fusion+surfelmapping 稠密建图(一)
2023-07-17 17:12:19 1502 11
原创 D455相机标定 双目+imu(三)
②双目标定结果:camchain-mult_cam_d455.yaml:③标定板文件checkerboard.yaml:3.2 打开相机录制话题 新建一个stereo-imu.launch文件,相关话题修改一下:然后打开相机:关闭结构光将emitter_enable设置为off改变话题hz开始录制:相机的移动如下:首先前后、左右、上下各两个来回,然后俯仰、滚转、偏航三个方向两个来回,注意移动不要太快、需要保证标定板始终
2023-07-11 13:19:57 863
原创 D455相机标定 双目+imu(一)
首先配置D455启动文件,将rs_camera.launch里改为如下内容,将将accel和gyro的数据合并得到imu话题。
2023-07-10 23:48:30 887
原创 D455 标定报错 [FATAL] [1612519163.722674]: No corners could be extracted for camera /left! ***
【代码】D455 标定报错 [FATAL] [1612519163.722674]: No corners could be extracted for camera /left!***
2023-07-02 13:25:45 405 1
原创 ubuntu18.04 ros melodic 安装evo
由于我的ubuntu18.04我的为ros自带的2.7.17和ubuntu自带的3.6.9,所以在后面安装的时候,注意一下就行,不用去切换python版本。
2023-05-10 09:54:46 323
原创 服务器上运行ORB-SLAM3错误Pagolin : what(): Pangolin X11: Failed to create an OpenGL context
重新启动服务器服务器。
2023-05-06 10:49:23 1026
原创 解决报错sudo apt --fix-broken install
【代码】解决报错sudo apt --fix-broken install。
2023-05-01 15:21:25 4096
原创 视觉slam14讲 ch7 / pose_estimation_3d2d.cpp 实现过程
【代码】视觉slam14讲 ch7 / pose_estimation_3d2d.cpp 实现过程。
2023-04-28 09:00:00 456
转载 视觉slam14讲 ch7 / pose_estimation_3d2d.cpp BA优化实现思路
顶点要设置两个东西,一个是Id,一般设为0,一个是Estimate,这里是由R,t组成的SE3Quat形式。只要把R,t放进去就可以了。里面还用到了相机参数camera.类型为g2o::CameraParmetersI,值为K.at(0,0),和cx,cy组成的2维向量,0组成的。它有两个参数,第一个参数为优化变量的维度,这里为6,第二个参数为误差值的维度,这里为3。由之前的PnP,可以求出一个R,t,K又是已知的。Id设为index++,估计值设为p.x,p.y,p.z的组成的向量形式。
2023-04-24 11:54:02 486
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人