分类: 3D & SLAM

使用 evo 工具评测 VI ORB SLAM2 在 EuRoC 上的结果

最近把 ORB SLAM2 作者融合 IMU 版本的算法 《Visual-Inertial Monocular SLAM with Map Reuse》 论文读了一遍,作者没有开放源代码,所以我是使用王京实现的一版开源代码(https://github.com/jingpang/LearnVIORB)进行了一些实验。LearnVIORB 代码有一些崩溃的 bug,在 Mac 上面编译有问题,不过实现了作者文中的基本思想,是非常好的一份实现。 由于只有 EuRoC 测试集有 VIO 的数据,我使用了 EuRoC 测试集进行测试,不过在实际运行中遇到了几个问题。 0、系统环境 macOS Sierra v10.12.6 1、evo...

[ROS] 多传感器卡尔曼融合框架 Ethzasl MSF Framework 编译与使用

多传感器融合是机器人导航上面一个非常基本的问题,通常在一个稳定可用的机器人系统中,会使用视觉(RGB或RGBD)、激光、IMU、马盘等一系列传感器的数据来最终输出一个稳定和不易丢失的姿态。Ethzasl MSF Framework 是一个机器人上面的多传感器融合框架,它使用了扩展卡尔曼的原理对多传感器进行融合。同时内部使用了很多工程上的 trick 解决多传感器的刷新率同步等问题,API 封装也相对简单,非常适合新手使用。 0、系统环境: Ubuntu 14.04.3 ROS indigo 1、新建 MSF 工作目录: 在命令行执行如下命令: Shell mkdir -p MSF/src cd ./MSF/src catkin_init_workspace 123 mkdir -p MSF/srccd ./MSF/srccatkin_init_workspace 退出 src 目录到 PATH_TO_MSF 根目录下,编译生成 ROS 工程文件: Shell cd .. catkin_make 12 cd...

[Ubuntu] ORB SLAM2 在 ROS 上编译&调试(含AR)

0、安装环境: Ubuntu 14.04.3 LTS ROS indigo USB Cam (请参照文章 [ROS] 安装 USB Camera 驱动并调用 中的方法安装 USBCam 库)。 本文中我们将 usb_cam 驱动安装在:ORB_SLAM2/Examples/ROS 目录中。 1、编译 ORB SLAM2 库: 请参照文章 [Ubuntu] ORB SLAM2 编译&调试 中的方法完成...

[Ubuntu] ORB SLAM2 编译&调试

ORB SLAM2 是 2015年比较受到关注的一篇文章,它的主要思想是借助 ORB 描述子改进了 Sparse SLAM 的性能,使得其在稳定性和速度上都达到了比较好的程度。从创新性上来讲,它的主要贡献是在跟踪、地图创建、重定位等方面统一采用了 ORB 描述子,同时在例如初始化等细节上考虑非常周全。 相对 LSD-SLAM 来说,它的理论上创新并不大,更没有 PTAM 横空出世的惊艳。但其工程实现更加完整,效果也更优益,适合学习。(另外,ORB-SLAM2 新增了支持双目和RGBD的算法,可以取得更好的效果。) 0、安装环境: Ubuntu 14.04 1、依赖安装: 1)安装 GLEW: Shell sudo apt-get install libglew-dev 1 sudo apt-get install libglew-dev2)安装 libuvc: Shell git...

[ROS] ROS 开发常见错误整理

以下是一些我在开发过程中遇到的错误和最后解决的方法,可能同样的错误我的解决方法也不一定对每个人都试用,仅供参考。欢迎反馈和提交更多信息。我也会在后面逐步更新。 1、错误:Couldn't find an AF_INET address 产生该错误有很多原因,我遇到的最简单的因素是向一个 node publish 消息,而该 node 实际没有启动。解决方法也很简单,就是把没有启动的 node 启动就好了。 在使用多个机器联合运行的时候,该错误可能是需要设置一个同样的主节点 IP 地址[1]。可以尝试如下解决方法: 在主节点的机器中查看 IP 地址: Shell hostname -I 1 hostname -I 在其他机器中设置刚才查看的 IP 地址,例如: 10.0.0.25. Shell export ROS_IP=10.0.0.25 1 export ROS_IP=10.0.0.25 参考文献 [1]...

[ROS] ROS 开发常见问题整理

在 ROS 开发过程中经常遇到一些很简单的问题,由于 ROS 文档比较少,所以也是一遍搜索一边整理。现将部分遇到过的问题整理在这里,也可能解决方法并非正确,仅供参考。如有问题欢迎留言补充。 1、Build 相关: 1)如何只编译单个 package? 使用 --pkg 参数即可,比如单个: Shell catkin_make --pkg <package A> 1 catkin_make --pkg <package A>比如多个: Shell catkin_make --pkg <package A> <package B> 1 catkin_make --pkg <package A> <package B>...

ISMAR 2015 重点文章介绍&下载汇总

ISMAR 2015 上有不少很有趣的文章和 Demo 演示,Khronos Group (开发 OpenGL 的组织)给我们推荐了以下几篇值得关注的文章,有兴趣的研究人员可以阅读。 我也把这些文章列在这里,并把原文下载也提供,有空的时候开始研究下~~ 1、Very High Frame Rate Volumetric Integration of Depth Images on Mobile Devices 文章:kaehler15infinitam.pdf 网站:http://www.robots.ox.ac.uk/~victor/infinitam/ 源码:http://github.com/victorprad/InfiniTAMUniversity of Oxford - 320 × 240...

[ROS] 安装 sound_play 驱动及播放、合成声音

相关简介: audio_common 是一个第三方音频开发包,它实现了音频驱动以及相关的 ROS 消息机制。它包含如下几个库: 1)audio_capture: 从麦克风采集声音 2)audio_play: 从 audio_capture 收集声音并通过声卡播放 3)audio_common_msgs: 声音传输的消息定义 4)sound_play: 播放声音和语音合成 我们这里主要使用的是最后这个 sound_play,它的主要的功能包括: 1)声卡驱动; 2)播放声音(wav、ogg); 3)语音合成(仅限英文) 同时它支持 C++ 以及 python 接口,使得开发者可以不用关心底层的驱动和算法。 0、安装环境: Ubuntu 14.04 ROS indigo audio_common 0.2.8 1、下载源码: sound_play 源码地址如下,它是 audio_common 的一个组件,我们这里将整个 audio_common 库下载: https://github.com/ros-drivers/audio_common 我这里使用的是 0.2.8 版,您可以在以上地址下载更新版本,或者直接使用我这里的源码包: audio_common-master.zip 2、编译源码: 1)在你的...

[ROS] [笔记(3)] 第三个例子:Hello & Check Robot(launch文件)

本教程将把前面两个例子综合,同时包含基本的 launch 启动文件。 0、Hello & Check Robot 的场景: 我们想要完成这样一个场景: 1)有一系列 robot 排成一排(publisher)向管理员(subscriber)报道,每个人都发一个消息(robotID),包含 name 和 id 类似: name=robot id=0 name=robot id=1 name=robot id=2 2)有一个管理员订阅了这个消息(robotID),然后读取消息内容并且和每个机器人打招呼: Hello Robot 0 Hello Robot 1 Hello Robot 2 3)因为机器人有好有坏,因此有一个服务 checkRobotSrv ,这一服务就是你告诉它 Robot...

[ROS] [笔记(2)] 第二个例子:Check Robot(服务、服务器与客户端)

本例程包含如下内容: 1)自定义服务; 2)服务器与客户端; 3)launch 文件。 0、Check Robot 的场景: 我们想要完成这样一个场景: 1)因为机器人有好有坏,因此有一个服务 checkRobotSrv ,这一服务就是你告诉它 Robot 的 name 和 id 它会告诉你这个 robot 是好是坏。 2)该管理员调用 checkRobotSrv 服务来检查 Robot 是好(Good Robot)还是坏(Bad Robot)并且输出。 可以看到上面的1)和2)都是我们在 Hello Robot 教程 里面完成的工作。 要完成以上的功能,我们需要创建消息(robotID)、发送消息的发送者(publisher)、接收消息的订阅者(subscriber),这些工作我们在 Hello...