当前位置:首页 » 编程软件 » slam编译器使用教程

slam编译器使用教程

发布时间: 2022-09-19 16:39:28

❶ 如何使用Google 的Cartographer SLAM算法

0.安装所依赖项
sudo apt-get install -y google-mock libboost-all-dev libeigen3-dev libgflags-dev libgoogle-glog-dev liblua5.2-dev libprotobuf-dev libsuitesparse-dev libwebp-dev ninja-build protobuf-compiler Python-sphinx ros-indigo-tf2-eigen libatlas-base-dev libsuitesparse-dev liblapack-dev
1.首先安装ceres solver选择版本1.11,路径随意
Git clone
cd ceres-solver-1.11.0/build
cmake ..
make –j
sudo make install

2.安装 cartographer,路径随意
git clone
cd cartographer/build
cmake .. -G Ninja
ninja
ninja test
sudo ninja install

3.安装cartographer_ros
谷歌官提供安装比较繁琐我原文件进行少许修改核代码变修改编译文件
载catkin_ws面src文件夹
git clone
catkin_ws面运行catkin_make即

4.数据载测试
2d数据概500M用迅雷载

3d数据8G左右同用迅雷载

运行launch文件即
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag
roslaunch cartographer_ros demo_backpack_3d.launch bag_filename:=${HOME}/Downloads/cartographer_3d_deutsches_museum.bag
图左侧2d,右侧3d

❷ 适合win10系统的c语言编译器

桌面操作系统

对于当前主流桌面操作系统而言,可使用 VisualC++、GCC以及 LLVM Clang 这三大编译器。

Visual C++(简称 MSVC)只能用于 Windows 操作系统;GCC 和 LLVM Clang除了可用于Windows操作系统之外,主要用于 Unix/linux操作系统。

像现在很多版本的 Linux 都默认使用 GCC 作为C语言编译器,而像 FreeBSD、macOS 等系统默认使用 LLVM Clang 编译器。由于当前 LLVM 项目主要在 Apple 的主推下发展的,所以在 macOS中,Clang 编译器又被称为 Apple LLVM 编译器。

MSVC 编译器主要用于 Windows 操作系统平台下的应用程序开发,它不开源。用户可以使用 Visual Studio Community 版本来免费使用它,但是如果要把通过 Visual Studio Community 工具生成出来的应用进行商用,那么就得好好阅读一下微软的许可证和说明书了。

而使用 GCC 与 Clang 编译器构建出来的应用一般没有任何限制,程序员可以将应用程序随意发布和进行商用。

MSVC 编译器对 C99 标准的支持就十分有限,加之它压根不支持任何 C11 标准,所以本教程中设计 C11 的代码例子不会针对 MSVC 进行描述。所幸的是,Visual Studio Community 2017 加入了对 Clang 编译器的支持,官方称之为——Clang with Microsoft CodeGen,当前版本基于的是 Clang 3.8。

也就是说,应用于 Visual Studio 集成开发环境中的 Clang 编译器前端可支持 Clang 编译器的所有语法特性,而后端生成的代码则与 MSVC 效果一样,包括像 long 整数类型在 64 位编译模式下长度仍然为 4 个字节,所以各位使用的时候也需要注意。

为了方便描述,本教程后面涉及 Visual Studio 集成开发环境下的 Clang 编译器简称为 VS-Clang 编译器。

嵌入式系统

而在嵌入式系统方面,可用的C语言编译器就非常丰富了,比如:

  • 用于 Keil 公司 51 系列单片机的 Keil C51 编译器;

  • 当前大红大紫的 Arino 板搭载的开发套件,可用针对 AVR 微控制器的 AVRGCC 编译器;

  • ARM 自己出的 ADS(ARM Development Suite)、RVDS(RealView Development Suite)和当前最新的 DS-5 Studio;

  • DSP 设计商 TI(Texas Instruments)的 CCS(Code Composer Studio);

  • DSP 设计商 ADI(Analog Devices,Inc.)的 Visual DSP++ 编译器,等等。


  • 通常,用于嵌入式系统开发的编译工具链都没有免费版本,而且一般需要通过国内代理进行购买。所以,这对于个人开发者或者嵌入式系统爱好者而言是一道不低的门槛。


  • 不过 Arino 的开发套件是可免费下载使用的,并且用它做开发板连接调试也十分简单。Arino 所采用的C编译器是基于 GCC 的。


  • 还有像树莓派(Raspberry Pi)这种迷你电脑可以直接使用 GCC 和 Clang 编译器。此外,还有像 nVidia 公司推出的 Jetson TK 系列开发板也可直接使用 GCC 和 Clang 编译器。树莓派与 Jetson TK 都默认安装了 Linux 操作系统。


  • 在嵌入式领域,一般比较低端的单片机,比如 8 位的 MCU 所对应的C编译器可能只支持 C90 标准,有些甚至连 C90 标准的很多特性都不支持。因为它们一方面内存小,ROM 的容量也小;另一方面,本身处理器机能就十分有限,有些甚至无法支持函数指针,因为处理器本身不包含通过寄存器做间接过程调用的指令。


  • 而像 32 位处理器或 DSP,一般都至少能支持 C99 标准,它们本身的性能也十分强大。而像 ARM 出的 RVDS 编译器甚至可用 GNU 语法扩展。


  • 下图展示了上述C语言编译器的分类。


❸ ORB SLAM2运行步骤/怎样跑通orbslam2

tep1:下载ORB_SLAM2放进~/catkin_ws/src下面
Step2:安装各种依赖项,github官网都写了

Step3:编译ThirdParty下面的库,可以挨个进入cmake+make,也可以执行给的build.sh,具体怎么用这个文件readme.md里面给了:
cd ORB_SLAM2
chmod +x build.sh
./build.sh123

Step4:(如果执行过上面的build.sh文件这一步就不用了)进入Vocabulary解压里面的文件

Step5:启动我上一篇博文里面的cv_camera把摄像头数据发布到topic

Step6:进入/home/kylefan/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src下面打开ros_mono.cc把程序里面的topic改为/cv_camera/image_raw,具体还要查看自己的rviz,然后进入/home/kylefan/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/build下面cmake+make编译,然后:
cd~/catkin_ws
catkin_make ORB_LSAM212

对于这个程序没什么区别。

Step7:添加ROS_PACKAGE_PATH路径(要想永久添加参照我之前博文关于如何永久修改linux系统环境变量)
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/kylefan/catkin_ws/src/ORB_SLAM2/Examples/ROS

Step8:启动mono
rosrun ORB_SLAM2 Mono
/home/kylefan/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt
/home/kylefan/catkin_ws/src/ORB_SLAM2/Examples/Monocular/TUM1.yaml
有两个参数,第二个参数是相机参数文件,根据自己的相机参数修改。

❹ 学习SLAM需要哪些预备知识

开始做SLAM(机器人同时定位与建图)研究已经近一年了。从一年级开始对这个方向产生兴趣,到现在为止,也算是对这个领域有了大致的了解。然而越了解,越觉得这个方向难度很大。总体来讲有以下几个原因:
入门资料很少。虽然国内也有不少人在做,但这方面现在没有太好的入门教程。《SLAM for mmies》可以算是一篇。中文资料几乎没有。
SLAM研究已进行了三十多年,从上世纪的九十年代开始。其中又有若干历史分枝和争论,要把握它的走向就很费工夫。
难以实现。SLAM是一个完整的系统,由许多个分支模块组成。现在经典的方案是“图像前端,优化后端,闭环检测”的三部曲,很多文献看完了自己实现不出来。
自己动手编程需要学习大量的先决知识。首先你要会C和C++,网上很多代码还用了11标准的C++。第二要会用Linux。第三要会cmake,vim/emacs及一些编程工具。第四要会用openCV, PCL, Eigen等第三方库。只有学会了这些东西之后,你才能真正上手编一个SLAM系统。如果你要跑实际机器人,还要会ROS。
当然,困难多意味着收获也多,坎坷的道路才能锻炼人(比如说走着走着才发现Linux和C++才是我的真爱之类的。)鉴于目前网上关于视觉SLAM的资料极少,我于是想把自己这一年多的经验与大家分享一下。说的不对的地方请大家批评指正。
这篇文章关注视觉SLAM,专指用摄像机,Kinect等深度像机来做导航和探索,且主要关心室内部分。到目前为止,室内的视觉SLAM仍处于研究阶段,远未到实际应用的程度。一方面,编写和使用视觉SLAM需要大量的专业知识,算法的实时性未达到实用要求;另一方面,视觉SLAM生成的地图(多数是点云)还不能用来做机器人的路径规划,需要科研人员进一步的探索和研究。以下,我会介绍SLAM的历史、理论以及实现的方式,且主要介绍视觉(Kinect)的实现方式。

❺ rviz 怎么导入 slam数据

tep1:下载ORB_SLAM2放进~/catkin_ws/src下面 Step2:安装各种依赖项,github官网都写了 Step3:编译ThirdParty下面的库,可以挨个进入cmake+make,也可以执行给的build.sh,具体怎么用这个文件readme.md里面给了

❻ 如何使用ICC编译器,有没有相关教程

usage: icc [options] file1 [file2 ...]
icpc [options] file1 [file2 ...]

具体的options,可以使用命令icc -help得到

❼ 学习SLAM需要哪些预备知识

SLAM涵盖的东西比较多,分为前端和后端两大块。前端主要是研究相邻帧的拼接,又叫配准。根据传感器不一样,有激光点云、图像、RGB-D拼接几种,其中图像配准中又分基于稀疏特征(Sparse)的和稠密(Dense)的两种。后端主要是研究地图拼接(前端)中累积误差的校正,主流就两种,基于概率学理论的贝叶斯滤波器(EKF,PF)以及基于优化的方法。EKF已经用得很少了,PF也就在2D地图SLAM(Gmapping)中用得多,大多还是用优化的方法在做。

你自己已经说了这块需要的知识,一个是数学,一个是编程。所以入门的话,也从这两块开始弄。
一、数学方面
数学的话,建议楼上说过的Thrun的《probabilistic robotics》,其实不需要全部看完,了解下概率学是如何解决机器人中的问题的,关键学习贝叶斯滤波,也是就是贝叶斯公式在各个问题(定位,SLAM)中的应用。另外,优化的话,建议先把最小二乘优化中给弄透彻,数学推导要会,因为很多问题,最后都是归结到最小二乘优化,然后就是梯度下降、求Jacobian之类的。
二、编程方面
理论的东西是比较无聊的,必须得实战。建议入门先写一发最小二乘优化,可以就做一个简单的直线拟合,不要用Matlab中的优化工具,了解数学推导最后是怎么写到代码里面的。然后,一定要玩好Matlab优化工具包,做实验最方便了。
有了一些基础之后,可以尝试玩一些现有的SLAM包,推荐两个地方,一个是www.openslam.org,里面有各种SLAM包,主流的SLAM算法,在这一般都有源码。另外一个就是ROS了,里面有很多现成的SLAM包,像Gmapping,RGB-D SLAM,上手非常快,甚至你没有任何设备,你也可以利用ROS中的仿真环境(如Gazebo)跑。建议先试试Gmapping,网络上有很多中文教程,一开始跑这些package还是很涨成就感的,可以提高你的兴趣。
如果你是做视觉或者RGB-D,那么OpenCV和PCL是必不可少的工具。早点上手肯定没得错。
三、进阶
大体入门之后,你就需要根据你实验室研究的项目来学习了,看是用激光、相机、还是Kinect来做了,不同传感器的前端算法还是有些差距的。激光的话一般是ICP,相对简单。视觉的东西还是比较多的,楼上推荐《Multiview Geometry in Computer Vision》确实很重要,不过,我觉得这同时你还应该了解特征提取、特征描述子、特征匹配这些东西。如果你们实验室做的Dense registration,那你还得学李代数那些东西(高大上啊,神马李群看好多天都看不懂啊!!!)。其实,很多算法都有开源包,你可以去ROS、一些大神博客、牛逼实验室主页中多逛逛。

❽ 如何评价高博的《视觉SLAM十四讲》

SLAM技术在上个世纪90年代的电脑游戏里就开始应用了,你在玩星际争霸游戏的时候,每个小兵拨开迷雾向前运动都和SLAM算法分不开。在几百块钱的扫地机器人里,用一个几十块钱的嵌入式单板+几块钱的红外传感器+1块钱的玩具电机就完成了对房间的遍历,完成房间的清扫。说实话,这些算法里都用不着状态估计,别说李代数了,就连线性代数都不用。机器人的位置估计,利用红外传感器更简单更准确更有效,是不需要非用摄像头来做的。而且大部分实际应用中机器人其实根本不需要估计自己的位置,机器人只需要找到目标,向目标移动,遇到障碍进行避障即可。如果视觉系统找不到目标,则对所在的房间进行遍历。
所以在孤陋寡闻的我看来,SLAM技术差不多到2000年左右,就根本用不着什么创新了。机器人工程应用中真正使用摄像头和视觉要解决的问题,是要让机器人理解哪里是客厅,哪里是厨房,哪里有电冰箱,当主人发出指令来冰箱这里,机器人能够自己移动到冰箱附近,能够打开冰箱门,能够拿东西。这是一个四岁或者五岁孩子到了一个陌生环境中,能够自己去观察环境之后,听到大人的指令就能完成的事情。这是今天真正创新要做的事情。你的状态估计不仅仅是三维空间内部的估计,更要在视觉语义空间中进行。视觉语义空间则是要让机器人建立和人类共同的对周围环境的理解。因为机器人进行的三维空间建模是无法和人直接沟通的。而只有对房间的视觉语义空间进行建模,才真正的能够和人沟通,解决实际应用问题。能做到这个,那就NB大了!

热点内容
oppo怎么分享无线密码 发布:2025-04-16 08:44:14 浏览:108
qsv格式转换不能访问 发布:2025-04-16 08:39:28 浏览:388
文件如何解压缩 发布:2025-04-16 08:38:12 浏览:420
aspnet插入数据库数据 发布:2025-04-16 08:28:20 浏览:518
区块链供应链应用开发智能存储 发布:2025-04-16 08:12:37 浏览:798
x86架构存储 发布:2025-04-16 08:12:27 浏览:902
将电脑的文件上传到服务器 发布:2025-04-16 08:10:05 浏览:334
sql中between 发布:2025-04-16 07:56:28 浏览:769
安卓手机多功能键在哪里 发布:2025-04-16 07:56:27 浏览:55
pythondict中文 发布:2025-04-16 07:55:42 浏览:466