IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 使用realsense t265测试svo2.0视觉里程计 -> 正文阅读

[人工智能]使用realsense t265测试svo2.0视觉里程计

毕业三年了,现在是第二份工作,第一份工作已经结束一年半了,这意味着,我有一年半的时间没有搞视觉SLAM相关的东西了,虽然在第二份工作也是做视觉相关的,但是只是用到一些目标识别和跟踪的知识,并锻炼了一下工程实现能力,编程能力,一直是我的一块心病,哈哈,由此可见我不用适合做程序员,至少不会是出色的程序员,但是这毕竟是我一个比较靠谱的职业,他可以让我生活的更好一些,所以,我还是在不断坚持,我去面试视觉SLAM岗位,面试官都会问,你有没有做过什么改进,可笑的是,我只是对一些开源的视觉SLAM代码熟悉一些而已。但是不积跬步无以至千里,我还是把基础的工作做好,随缘吧,哈哈,佛系程序员是这样的吗。

今年年初我用了一年的时间完成了两个工作,单房间和多房间扫地机的覆盖率测试软件,从场地搭建到软件开发,都是我一个人,虽然很多时候感觉到孤寂,但是看到其他同事跟项目经理扯皮时,被项目经理追着不放时,我感觉我是幸运的。完成了上面的项目后,领导让我开始调研视觉SLAM,想在我们现有的扫地机算法上加上视觉算法,重操旧业,感觉不错,但是压力还是不小的,我没有信息能做好,最初的一段时间我忙着去医院保胎,还得赶紧把驾照考出来,所以调研的进度比较慢,后来胎儿稳定了,驾照也考出来了,我的心也安定下来,专心做起工作来。

虽说是调研,但是还得实践,不能说光看看论文,博客就可以了,那就不得不搭建环境,把算法跑起来。说到大环境,不得不让我想起来,我在研究生时刚开始研究视觉SLAM时,那那基本上两三天重装一次Ubuntu系统,我还有个电子文档专门记录我的一些成功的操作,哪个库怎么安装,但是压力确实很大,Linux系统知识,编程能力,视觉SLAM基础知识,数学基础,真的让我吃不消,不知道当初为啥非要选这个方向。大概是没有自知之明,真是惨不忍睹。

话说回来,正是有了之前的无数次失败的经验,以及五六年里的知识沉淀,所以这次重新搭建环境就感觉轻松很多,因为我坚信,我遇到的问题,在网上一定会找到答案的,当时你如果能跳墙那是很好的,你的视野大了不是一点半点。之前一直用的是Ubuntu16.04,现在用的是Ubuntu8.04,差别不是很大。之前搭建过orb-slam3的环境,这次也比较顺畅,下一个是svo,尤其是svo2.0,费了老鼻子劲了。很多问题是因为网络问题导致的,一个是Ubuntu上我不能跳墙,在着就是,公司网速不好,一个东西要重复下载好几次,才有可能成功。所以第二次下载是我就使用手机热点,确实要好很多。

一、在原有win10系统的基础上安装Ubuntu18.04系统

Windows10安装ubuntu18.04双系统教程 - 不妨不妨,来日方长 - 博客园

二、Ros melodic安装

我按照官网和一些博客文章安装最后在rosdep update出了问题一直解决不了,不过这篇文章有解决方法?

ubuntu18.04 ROS melodic完整版教程及错误处理(附带 catkin_ws工作空间搭建)_黄宏智的博客-CSDN博客_ubuntu18.04安装catkin

三、 orb-slam3环境搭建

ubuntu18.04配置ORB-SLAM3(包含ROS)完整版教程_黄宏智的博客-CSDN博客

?四、svo2.0

SVO2.0 安装编译_HR19的博客-程序员ITS203 - 程序员ITS203

在执行catkin build指令后,需要下载很多东西,好几个库会因为网速的问题,无法下载,可以尝试使用手机热点联网进行编译下载,再者出现“无法获取某个网址”错误时,那就重新编译,多执行几次编译命令,再次编译时不要删除掉上一次已经下载的build等文件夹中的东西。

除了网速问题,我还遇到了几个明显的问题,

(1)如果遇到“std::automic<int> a;不可以在定义式直接初始化”的错误时,

解决方案:那就在提示出错误的这个文件上添加头文件 #include<automic.h>

? (2) 如果遇到“next is not a member of boost : in /usr/include/yaml-cpp/node/detail/iterator.h”

在/usr/include/boost/next_prior.hpp中实现了boost::next的功能

解决方案:在iterator.h文件中添加 #include<boost/next_prior.hpp>

(3)如果遇到“/usr/local/include/sigslot/signal.hpp:1160:65 error: 'slots_reference ' was not declared in this space”

解决方案:将所有CMakeLists.txt中的所有的c++11替换为c++14

五、安装realsense t265相机驱动

按照官网“librealsense/installation.md at development · IntelRealSense/librealsense · GitHub”上说的步骤来安装,太过漫长,所以我就使用下面的方法来安装,还有安装ros Wrapper的步骤

(69条消息) ubuntu18.04 Intel Realsense T265与Realsense D435i 使用教程_xtdx_xty的博客-CSDN博客

六、使用realsense t265运行svo2.0

首先t265相机是omni-direction相机,对于这种相机使用的相机镜头比较特殊,构建镜头畸变模型时常用的模型有"Kannala Brandt", "MEI", "Scaramuzza",开源的框架中orb-slam3使用的是Kannala Brandt模型,vins使用的是MEI模型,svo2.0 使用的是scaramuzza模型,前两种模型都可以用kalibr进行标定,但是kalibr 不能标定scaramuzza模型,只能用ocam_clib库标定,所以你需要安装matlab,然后运行ocam_calib进行标定。标定出来还需要根据svo_ros/scripts/omni_matlab_to_rpy.py进行转换,得到一个24维的矩阵。

参考calib/blufox_25000826_fisheye.yaml文件,还需要一个mask,下面是参考vins的mask的生成方式,得到一个mask。

cv::Mat image = cv::Mat::zeros(800, 848, CV_8UC1);
cv::circle(image, cv::Point2f(424, 400), 424, cv::Scalar(255), -1, 8, 0);
cv::imwrite("mask.png", image);
cv::imshow("mask", image);
cv::waitKey(0);
return 0;

然后在launch/fronted/run_from_bag.launch文件中,将"cam0_topic” value修改为t265相机发布的话题,“camera/fisheye1/image_raw”, 然后是将pinhole.yaml改为fisheye.yaml.

然后首先将t265相机的话题发布出来

roslaunch realsense2_camera rs_t265.launch

然后运行svo2

roslaunch svo_ros realsense.launch cam_name:=realsense_t265_fisheye(这里的realsense.launch是从run_from_bag.launch文件修改过来的,我创建的t265相机的配置文件命名为 realsense_t265_fisheye.yaml)

上面的工作都做完后,我终于在周五下班前的一分钟,运行成功了,这周工作总算有个交代。但是这周一我跑了一下比较长的走廊,视觉里程计的跟踪效果不好,角度没有漂移,但是尺度在开始测试后不久漂移了很多,尺度一直在缩小,不知道是不是我的相机标定结果不精确有关系。

?总结:拿到最后的结果,上面五步是不可或缺的,也用了不少时间,最后是卡在了t265相机的畸变模型上面,其实在svo pro的GitHub上也是有介绍calibration这一块的,但是刚开始并没有放心上,不敏感,大概是刚开始对于上面提到的那三种相机模型不熟悉缘故,后来慢慢了解了这三种模型,自己的下一步工作才清晰。要不,刚开始,不知道自己到底该做些什么,怎么做。

上面测试结果,尺度漂移的厉害,肯定是有原因的,我先从我自己的工作上找问题,看看能不能解决这个问题。然后是把imu的数据也加上,再看一下效果。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-05-11 16:27:02  更:2022-05-11 16:27:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:31:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码