ygz_slam_ros测试_tabs are prohibited in yaml! in function icvymlski-程序员宅基地

技术标签: SLAM  

###将ygz_slam_ros单独拿出来编译

#按照安装依赖
https://gaas.gitbook.io/guide/software-realization-build-your-own-autonomous-drone/wu-ren-ji-zi-dong-jia-shi-xi-lie-part-3-zai-wu-gps-huan-jing-xia-tong-guo-slam-shi-xian-wei-zhi-gu-j

Mavros msgs: sudo apt install ros-kinetic-mavros-msgs
Pangolin (for visualization): https://github.com/stevenlovegrove/Pangolin
Eigen3: sudo apt-get install libeigen3-dev
g2o: sudo apt-get install libcxsparse-dev libqt4-dev libcholmod3.0.6 libsuitesparse-dev qt4-qmake
glog (for logging): sudo apt-get install libgoogle-glog-dev
ROS Octomap: sudo apt-get install ros-kinetic-octomap-*
#用以下命令,但不包括安装Pangolin
sudo apt-get install libeigen3-dev
sudo apt-get install ros-kinetic-mavros-msgs
sudo apt-get install libqglviewer-headers libqt4-dev libcholmod3 libsuitesparse-dev qt4-qmake
sudo apt-get install libgoogle-glog-dev
sudo apt-get install ros-kinetic-octomap-*
sudo apt-get install libglew-dev
sudo apt-get install libxkbcommon-x11-dev
#安装g2o依赖报错
chen@chen:~/MYNT-EYE-ORB_SLAM2/src/ygz_slam_ros$ sudo apt-get install libcxsparse-dev libqt4-dev libcholmod3.0.6 libsuitesparse-dev qt4-qmake
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package libcxsparse-dev
#解决:进入https://github.com/RainerKuemmerle/g2o进行安装
#按照教程https://www.cnblogs.com/ambition921009/p/10551959.html
1、首先在github上下载g2o图优化库
git clone https://github.com/RainerKuemmerle/g2o.git
2、运行安装以下依赖库
sudo apt-get install libcholmod3.0.6
sudo apt-get install libsuitesparse-dev
sudo apt-get install freeglut3 freeglut3-dev freeglut3-dbg
sudo apt-get install libqglviewer2 libqglviewer-dev libqglviewer-doc
sudo apt-get install libeigen3-dev libeigen3-doc
3、开始安装g2o,先进入g2o的目录内,然后开启终端,依次运行下列命令:
mkdir build
cd build/
cmake ..
make
sudo make install
至此,g2o图优化库安装完毕!


##安装PCL
https://github.com/PointCloudLibrary/pcl

git clone https://github.com/PointCloudLibrary/pcl pcl-trunk
cd pcl-trunk && mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
make -j2
sudo make -j2 install

##安装DBoW3
cd Thirdparty/DBow3/
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4

##安装fast
cd ../../fast
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4

##安装opencv
#在编译opencv的过程中,需要确保cmake生成的opencv编译配置中,包括了opencv_cvv组件。为此,你需要首先克隆opencv_contrib:
git clone https://github.com/opencv/opencv_contrib
#进入克隆下来的opencv目录,切换版本到一个较高版本——此处使用版本号3.4.5:
git checkout 3.4.5
#注意,对于opencv和opencv_contrib都需要切换版本,且必须保证两者版本一致。
#然后使用cmake进行配置——若对cmake不熟悉则可以使用cmake-gui:
sudo apt-get install cmake-qt-gui
cmake-gui


##上面比较抽象,以下是具体的操作
参考教程:https://blog.csdn.net/echoamor/article/details/83022352
1.先去github上下载opencv和opencv_contrib,并在分支中(左上角Tag那里选)选择相对应的版本,如都是3.4.5.
https://github.com/opencv/opencv/tree/3.4.5
https://github.com/opencv/opencv_contrib/tree/3.4.5
2.安装依赖
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
3.依赖安装完成后,把opencv_contrib文件夹放入opencv目录下,并且创建build文件夹
4.安装cmake-gui
sudo apt-get install cmake-gui
5.安装配置opencv
安装好之后,进入opencv文件夹里的build文件夹,在这里打开终端,输入:
cmake-gui ..
6.确定路径没问题之后点击configure选择Unix Makefiles,其余默认,点击finish。需要下载一些文件,要等待一段时间。然后CMake即载入默认配置.
7.这里需要对三个地方进行修改:
(1)在CMAKE_BUILD_TYPE 值处输入RELEASE,其他保持不变(如果已经存在就不必修改)。
下方的CMAKE_INSTALL_PREFIX显示了默认的安装目录,生成makefile文件最后执行 make install时就会安装到这个目录,这里可以根据个人需求更改。但是建议就按照默认路径来,不要乱改!
(2)在OPENCV_EXTRA_MODULES_PATH处,选择输入目录(单击这一行后方空白处即可选中)
接着选择opencv_contrib文件夹中的modules文件夹,注意,不是只选中opencv_contrib文件夹就好了,需要点进去选中里面的modules文件夹! 然后点Choose。
(3)在BUILD_opencv_world后面打√
(4)勾选WITH_QT和ENABLE_CXX11:
8.再点击一次Configure,即可看到BUILD_opencv_cvv选项,勾选之后点击Generate即可生成目标makefile,进行编译即可。这个过程需要一段时间,耐心等待一下。完成后显示generating done
9.完成之后,在build文件夹下重新打开一个终端,输入make,就会开始编译,过程较长,耐心等待。
10.配置环境变量
(1)安装成功后还需要设置opencv的环境变量。打开文件:
  sudo gedit /etc/ld.so.conf.d/opencv.conf
(2)将以下内容添加到最后:
  /usr/local/lib
(3)接下来配置库:
  sudo ldconfig
(4)更改环境变量:
  sudo gedit /etc/bash.bashrc
(5)在文件后添加:
  PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
  export PKG_CONFIG_PATH
保存退出,到这一步,opencv安装完成!
原文链接:https://blog.csdn.net/echoamor/article/details/83022352

注意:按照步骤7设置之后不能编译成功。后来采用以下步骤:
4.安装cmake-gui
sudo apt-get install cmake-gui
5.安装配置opencv
安装好之后,进入opencv文件夹里的build文件夹,在这里打开终端,输入:
cmake-gui ..
6.首先指定编译目录,source code选择opencv的目录,build the binaries选择opencv的build,点击Configure并选择Unix Makefiles,先进行第一次配置:
7.指定OPENCV_EXTRA_MODULES_PATH到opencv_contrib的modules,并勾选WITH_QT和ENABLE_CXX11:
再点击一次Configure,即可看到BUILD_opencv_cvv选项,勾选之后点击Generate即可生成目标makefile,进行编译即可。
即回到opencv/build目录下,make.
chen@chen:~/MYNT-EYE-ORB_SLAM2/src/ygz_slam_ros$ cd opencv
chen@chen:~/MYNT-EYE-ORB_SLAM2/src/ygz_slam_ros/opencv$ cd build/
chen@chen:~/MYNT-EYE-ORB_SLAM2/src/ygz_slam_ros/opencv/build$ cmake-gui ..
chen@chen:~/MYNT-EYE-ORB_SLAM2/src/ygz_slam_ros/opencv/build$ make
编译过程需要很长时间,编译opencv需要大量内存。
#安装
chen@chen:~/MYNT-EYE-ORB_SLAM2/src/ygz_slam_ros/opencv/build$ sudo make install
#配置按照以上步骤
10.配置环境变量
(1)安装成功后还需要设置opencv的环境变量。打开文件:
  sudo gedit /etc/ld.so.conf.d/opencv.conf
(2)将以下内容添加到最后:
  /usr/local/lib
(3)接下来配置库:
  sudo ldconfig
(4)更改环境变量:
  sudo gedit /etc/bash.bashrc
(5)在文件后添加:
  PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
  export PKG_CONFIG_PATH
保存退出,到这一步,opencv安装完成!

##编译SLAM
#由于ROS自带了低版本的opencv,为了防止cmake在生成SLAM的makefile的过程中无法找到正确的opencv版本,需要在SLAM的cmake配置文件中指定:
cd /MYNT-EYE-ORB_SLAM2/src/ygz_slam_ros
gedit CMakeLists.txt
配置文件的第53行:
find_package(OpenCV REQUIRED)
在OpenCV后面加上版本号(注意不要省略空格),若你安装了其他版本(必须不低于3.4.5),则将3.4.5改为你安装的版本号:
find_package(OpenCV 3.4.5 REQUIRED)
#完成后,通过如下命令编译SLAM:
cd (GAAS_PATH)/software/SLAM/ygz_slam_ros
cd ~/MYNT-EYE-ORB_SLAM2/src/ygz_slam_ros

# 编译过程较长,不建议在虚拟机里进行
sh generate.sh

#运行测试
#启动小觅SDK ROS节点
cd MYNT-EYE-ORB_SLAM2/src/MYNT-EYE-S-SDK/
source ./wrappers/ros/devel/setup.bash
roslaunch mynt_eye_ros_wrapper mynteye.launch

#查看节点话题
/mynteye/left/image_raw
/mynteye/right/image_raw

#在 ygz_slam_ros/examples文件夹内,你可以看到一个名为simulationCamera.yaml的配置文件,此文件是SLAM的配置文件,文件包含ROS的左右图像topic名,相机内参以及一些其它参数。其中一部分内容如下:
......
# camera and imu topics
Left: /gi/simulation/left/image_raw
Right: /gi/simulation/right/image_raw
......
如果想测试自己的相机,请更改相机topic,注意此时并没有使用IMU信息,并且此项目还未完成,会有不稳定情况出现。
将话题改成自己的双目话题:
Left: /mynteye/left/image_raw
Right: /mynteye/right/image_raw

#接下来,开启SLAM:
./bin/EurocStereoVIO_ros ./examples/simulationCamera.yaml

#报错
chen@chen:~/MYNT-EYE-ORB_SLAM2/src/ygz_slam_ros$ ./bin/EurocStereoVIO_ros ./examples/simulationCamera.yaml
OpenCV Error: Parsing error (./examples/simulationCamera.yaml(10): Tabs are prohibited in YAML!) in icvYMLSkipSpaces, file /tmp/binarydeb/ros-kinetic-opencv3-3.3.1/modules/core/src/persistence.cpp, line 1322
terminate called after throwing an instance of 'cv::Exception'
  what():  /tmp/binarydeb/ros-kinetic-opencv3-3.3.1/modules/core/src/persistence.cpp:1322: error: (-212) ./examples/simulationCamera.yaml(10): Tabs are prohibited in YAML! in function icvYMLSkipSpaces

Aborted (core dumped)

#待解决...

 

 

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_42041303/article/details/103452916

智能推荐

计算距离方法总结_两条线之间的欧式距离怎么算-程序员宅基地

文章浏览阅读2.5k次。欧氏距离(Euclidean Distance)欧式距离是最经典的一种距离算法,适用于求解两点之间直线的距离,适用于各个向量标准统一的情况,如各种药品的使用量、商品的售销量等。 欧氏距离也是最易于理解的一种距离计算方法,源自欧氏空间中两点间的距离公式。 二维空间上两点a(x1,y1)a(x_1,y_1)与b(x2,y2)b(x_2,y_2)之间的欧式距离: d12=(x1−x2)2+(y1−y_两条线之间的欧式距离怎么算

数学建模常用软件_什么软件可以分析数学建模的问题,以及给出合理的解释和分析-程序员宅基地

文章浏览阅读3.9w次,点赞78次,收藏436次。我参加过的数学建模比赛很多,除了本校的两次数学建模(二三等)外,全国数学建模(省二),亚太数学建模(s),ICM/MCM(M),五一建模联赛,电工杯(最近正在准备),之前错过mathorcup,有点遗憾。到2019年暑假前,总计自己一年左右参加7次建模比赛,说下自己建模常用的软件使用,本人在队里主要负责编程,但是写作和建模也同样会和队友交流。论文类LaTeX与WordWor..._什么软件可以分析数学建模的问题,以及给出合理的解释和分析

计算机网络原理知识_throught up速率-程序员宅基地

文章浏览阅读3k次。计算机网络原理╭第一章 计算机网络概述|第二章 网络应用|第三章 传输层|第四章 网络层内容大纲<|第五章 数据链路层与局域网|第六章 物理层|第七章 无线与移动网络╰第八章 网络安全基础第一章 计算机网络概述1.计算机网络基本概念(填空选择题)1>计算机网络定义*1.定义:1)计算机网络是 互连的、自治的 计算机的集合;互连: 是指利用通信链路链接相互独立的计算机系统;自治: 是指互连的计算机系统 彼此独立 ,不存在主从或控制与被控制的关系;2)一个计算机网络_throught up速率

html标签之视频各种标签_html 实现视频详情多tag标签-程序员宅基地

文章浏览阅读1.4k次。html标签之Object标签详解的定义和用法定义一个嵌入的对象。请使用此元素向您的 XHTML 页面添加多媒体。此元素允许您规定插入 HTML 文档中的对象的数据和参数,以及可用来显示和操作数据的代码。 标签用于包含对象,比如图像、音频、视频、Java applets、ActiveX、PDF 以及 Flash。object 的初衷是取代 img 和 applet 元素。不_html 实现视频详情多tag标签

(3)组合数学--鸽巢原理之最简单形式_鸽巢原理的三个公式-程序员宅基地

文章浏览阅读220次。定理:把n+1个物体放进n个盒子中,至少有一个盒子中含有两个物体理解:ai为第i天下的总棋盘数,显然an为递增序列,对an做部分和序列:如上图所示,上面77项,下面77项,共154项,153个盒子,所有存在aj+21 = ai,所以21 = aj - ai = bi + bi+1 + … + bj相当于19个物体,18个盒子五个点,四个三角形反证:Li <..._鸽巢原理的三个公式

Qt开发笔记之QCustomPlot:QCustomPlot介绍、编译与使用_qcustomplot编译-程序员宅基地

文章浏览阅读6.6w次,点赞20次,收藏194次。欢迎技术交流和帮助,提供所有IT相关的服务,有需要请联系博主QQ: 21497936,若该文为原创文章,未经允许不得转载原博主博客地址:http://blog.csdn.net/qq21497936本文章博客地址:http://blog.csdn.net/qq21497936/article/details/77847820目录效果 ​Demo下载地址QCustom..._qcustomplot编译

随便推点

深度优先算法(DFS)的python实现及骑士周游问题解析_用python代码写深度优先遍历算法的时间复杂度-程序员宅基地

文章浏览阅读3.2k次,点赞3次,收藏21次。背景: 骑士周游问题在棋盘格里,马走日,遍历所有网格点,找到每个网格都走过,且只有一次的路径。算法实现:用于解决骑士周游问题的图搜索算法是深度优先搜索(DFS),该算法是逐层建立搜索树,沿着树的单支尽量深入的向下搜索。连接尽量多的顶点,必要时可以进行分支。深度优先搜索同样要用到顶点的“前驱”属性,来构建树或森林。另外需要设置“发现时间”和“结束时间”属性。发现时间是在第几步访问到了这个顶点(设置灰色);结束时间是在第几步完成了此顶点的探索(设置黑色)。通用的深度优先搜索算法代码:# BFS采_用python代码写深度优先遍历算法的时间复杂度

PHP4用户手册:函数->fwrite (转)-程序员宅基地

文章浏览阅读53次。PHP4用户手册:函数->fwrite (转)[@more@]fwrite(PHP 3, PHP 4 >= 4.0.0)fwrite--二进制文件写入 描述int fwrite (int fp, ..._php fwrite int 4

0 0/1 * * * ?-程序员宅基地

文章浏览阅读4.7w次,点赞6次,收藏27次。定时任务<property name="cronExpression"> <value>0 0/1 * * * ?</value><!-- [秒] [分] [时] [日] [月] [星期][年] -->年可有可不有,星期一般都写?,你可以指定第几周星期几 1#1,或者从周一到周日1/7或者本月最后一个星期一,1L,..._0 0/1 * * * ?

Python获取操作系统版本信息_python 获取当前os版本-程序员宅基地

文章浏览阅读1.3w次。 最近,想在我的YouMoney(http://code.google.com/p/youmoney/)里面增加提取用户操作系统版本信息。比如windows用户,可能要返回Windows XP ,或者Windows 2003, 苹果用户应该返回Mac OS X 10.5.8。用了很多办法,包括在mac系统里调用系统命令,取环境变量,等等。最后无意发现,原来python里里面有个platfor_python 获取当前os版本

【MaixPy快速上手】屏幕和摄像头的使用_maixpy reset failed-程序员宅基地

文章浏览阅读1.3k次。第一个程序: 使用屏幕和摄像头开发板有配套的摄像头和屏幕,请在上电前检查硬件连接是否正确然后上电,打开串口终端, 按键盘Ctrl+E,然后粘贴以下代码:import sensor, lcdsensor.reset()sensor.set_pixformat(sensor.RGB565)sensor.set_framesize(sensor.QVGA)sensor.run(1)sensor.skip_frames()lcd.init(freq=15000000)while(True)_maixpy reset failed

【系统性学习】Linux Shell易忘重点整理_shell赋值保留换行-程序员宅基地

文章浏览阅读1.1k次。本文主要基于《实用Linux Shell编程》总结,并加入一些网上查询资料和博主自己的推断。其中命令相关的,已抽取出来在另一篇中,可以一起使用。_shell赋值保留换行

推荐文章

热门文章

相关标签