使用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双系统教程 - 不妨不妨,来日方长 - 博客园

Ubuntu上安装一个sogou输入法,好使

搜狗输入法linux-安装指导搜狗输入法for linux—支持全拼、简拼、模糊音、云输入、皮肤、中英混输https://shurufa.sogou.com/linux/guide 

二、Ros melodic安装

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

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

 我是用上面的方法解决的rosdep update失败的问题,后来公司来了一个实习生,在遇到同样的问题时,他找到了下面这个解决方案,感觉要简单很多。

本文之后,世上再无rosdep更新失败问题!如果有....小鱼就...造福国内用户的rosdepc出来啦,再也不用担心rosdep初始化失败问题。\x0a大家好,我是小鱼,经过小鱼的不懈努力,rosdep国产替代品rosdepc终于完成,一行代码搞定初始化失败问题。https://mp.weixin.qq.com/s/VGs8oWdhHH6XsHcx21lN4Q

三、 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的数据也加上,再看一下效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252247.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JSP动作标识

jsp中include有两种形式: include指令&#xff1a;<% include file""%> include动作&#xff1a;<jsp:include page"" /> 他们的区别&#xff1a; <% include file""%>又称静态包含&#xff0c;使用时要注意以下几点&#xf…

面试必问之JVM原理

1&#xff1a;什么是JVM JVM是Java Virtual Machine&#xff08;Java虚拟机&#xff09;的缩写&#xff0c;JVM是一种用于计算设备的规范&#xff0c;它是一个虚构出来的计算机&#xff0c;是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令…

InfluxDB学习之InfluxDB的基本操作

InfluxDB提供类SQL语法&#xff0c;如果熟悉SQL的话会非常容易上手。本文就为大家介绍一下InfluxDB的基本操作。 InfluxDB提供类SQL语法&#xff0c;如果熟悉SQL的话会非常容易上手。 一、InfluxDB操作方式 InfluxDB提供三种操作方式&#xff1a; 1&#xff09;客户端命令行方式…

运行svo 2.0的 vio时遇到opencv冲突的问题

当我运行如下指令时&#xff0c;遇到了如下问题 指令 cd svo_ws source ./devel/setup.bash roslaunch svo_ros euroc_vio_mono.launch rosbag play MH_01_easy.bag -s 50 运行时遇到的问题 OpenCV Error: Bad argument (Unknown interpolation method) in resize, file /b…

DOS Network一月项目月报

欢迎大家阅读DOS Network第一期项目月报&#xff01;DOS为了跟大家更好的沟通和交流&#xff0c;将在每个月为大家跟进DOS Network项目进展月报。月报主要分为项目研发和社区及营销两个部分。 如果你是刚认识DOS Network预言机网络的新朋友&#xff0c;欢迎查阅往期文章&#x…

lsof详解

from:https://www.cnblogs.com/the-study-of-linux/p/5501593.html lsof (list open files)是一个列出当前系统打开文件的工具。在linux系统环境下&#xff0c;任何事物都可以以文件形式存在&#xff0c;通过文件不仅可以访问常规的数据&#xff0c;还可以访问网络连接和硬件。…

Ubuntu18.04上下载安装使用sogou输入法

下载地址&#xff1a;搜狗输入法Linux官网-首页 安装设置网址&#xff1a;搜狗输入法Linux官网-安装指导 这样Ubuntu下工作就更加方便了。

正则

&#xff08;一&#xff09;字符类 [...]  方括号内的任意字符 [^...]   不在方括号内的任意字符 .    除换行符和其它Unicode行终止符之外的任意字符 \w   任何ASCII字符组成的单词&#xff0c;等价于[a-zA-Z0-9] \W   任何非ASCII字符组成的单词&#xff0c;等价…

使用Cloud Studio写python

1、进入【腾讯云开发者平台】 2、点击【进入工作空间】 3、点击【新建工作空间】 4、点击【从模版创建】 选择你需要的空间环境&#xff0c;就可以开始啦&#xff01;转载于:https://juejin.im/post/5c75f79051882562962ef5d7

显卡、显卡驱动、显存、GPU、CUDA、cuDNN

&#xfeff;&#xfeff;显卡Video card&#xff0c;Graphics card&#xff0c;又叫显示接口卡&#xff0c;是一个硬件概念&#xff08;相似的还有网卡&#xff09;&#xff0c;执行计算机到显示设备的数模信号转换任务&#xff0c;安装在计算机的主板上&#xff0c;将计算机的…

ros rviz显示rosbag中的图像和imu数据

一、rosbag相关的指令 1. rostopic list //列举出系统中正在发布的ros 话题 2. rosbag record -a //录制系统中所有正在发布的ros 话题 3. rosbag record topic1 topic2 .... -o bagname.bag 4. rosbag play bagname.bag //播放bag文件 5. rosbag info bagname.bag //查看…

PX4的workqueue

Workqueue相当于是中断子程序&#xff0c;然后在queue的cycle里面要注意&#xff0c;不能在cycle函数里面用printf打印&#xff0c;在cycle里面printf函数是打印不出来的。 也不能在cycle里面用while(1)&#xff0c;就是不能让程序一直在queue里面执行&#xff0c;要想让cycle执…

企业选择 多云管理平台 六大注意事项

企业选择 多云管理平台 六大注意事项 1、是否足够简单&#xff0c;学习曲线有多长 2、是否可实现自动化环境部署&#xff0c;日常运维作业等一系列操作&#xff1f; 3、是否可以管理全异构的云环境&#xff0c;支持主流公有云厂商的云资源&#xff1f; 4、是否能提供管理成本、…

面向接口编程

面向接口编程 一般在实现一个系统的时候,通常是将定义与实现合为一体,不加分离的&#xff0c;我认为最为理解的系统设计规范应该是所有的定义与实现分离&#xff0c;尽管这对于系统中某些复杂的情况有些繁烦。面向接口编程设计 使用面向接口编程思想将层与层之间通过接口依赖,下…

Java并发学习之一——线程的创建

与每个java语言中的元素一样&#xff0c;线程是对象。在Java中&#xff0c;我们有两种方式创建线程&#xff1a; 1、通过直接继承thread类&#xff0c;然后覆盖run方法。 2、构建一个实现Runnable接口的类&#xff0c;然后创建一个thread类对象并传递Runnable对象作为构造参数 …

day1||python

测试题&#xff1a; 0. Python 是什么类型的语言&#xff1f; Python是一种面向对象、解释型、动态类型计算机程序设计语言解释型&#xff1a;程序无需编译成二进制代码&#xff0c;而是在执行时对语句一条一条编译动态类型&#xff1a;在程序执行过程中&#xff0c;可以改变变…

2.7万字还原行业面貌,《2019 AI金融风控行业研究报告》正式上线!...

在金融科技领域&#xff0c;风险控制的重要性&#xff0c;从其关联的金融业务和结合的技术维度可见一斑&#xff1a;风控涉及信用借贷、保险、支付、供应链金融等场景&#xff0c;并运用了包括生物特征识别、机器学习、自然语言处理、大数据、云计算等多项技术。 区别于美国有…

【原创】QT简单计算器

代码 //main.cpp#include "calculator_111.h" #include <QtWidgets/QApplication>int main(int argc, char *argv[]) { QApplication a(argc, argv); Calculator_111 w; w.show(); return a.exec(); /* //QT creator Calculator_111 win; win.show(); return…

cs堡垒机使用说明

一、堡垒机介绍 为了保证机房的网络安全&#xff0c;IDC内所有服务器不被允许从办公网直接ssh登录&#xff0c;必须通过跳板机进行间接登录。用户通过跳板机执行的所有命令&#xff08;包括通过跳板机登录的其他机器后的命令&#xff09;都会被保存并审计。 cs是我们登录IDC服…

export和export default的区别

es6中export和export default的区别 export与export default均可用于导出常量、函数、文件、模块&#xff1b;你可以在其它文件或模块中通过import(常量 | 函数 | 文件 | 模块)名的方式&#xff0c;将其导入&#xff0c;以便能够对其进行使用&#xff1b;在一个文件或模块中&am…