作者: skylook

Semantic SLAM 文章收集

截至目前 Semantic SLAM (注意不是 Semantic Mapping)工作还比较初步,可能很多思路还没有打开,但可以预见未来几年工作会越来越多。语义 SLAM 的难点在于怎样设计误差函数,将 Deep Learning 的检测或者分割结果作为一个观测,融入 SLAM 的优化问题中一起联合优化,同时还要尽可能做到至少 GPU 实时。 这一篇博客我将尽力收集一些有代表性的文章,提供下载和简单思路的理解,但个人精力、能力有限也欢迎大家随时提供更多更好的文章。 1、《Probabilistic Data Association for Semantic SLAM》 ICRA 2017 语义 SLAM 中的概率数据融合,感觉应该算开山鼻祖的一篇了。这篇也获得了 ICRA...

阿里云 MySQL 频繁挂掉的解决方法

阿里云如果使用低配的服务器,随着访问量增大,上面的 MySQL 经常被系统停掉。除了升级内存硬盘等系统资源外,还可以使用如下方法尝试解决下: 1、降低数据库 InnoDB 引擎的缓冲区大小 找到 MySQL 的配置文件,一般在 /etc/mysql/my.cnf 或者 /etc/my.cnf 这种位置。编辑配置文件,修改或添加下列行: Shell innodb_buffer_pool_size = 64M 1 innodb_buffer_pool_size = 64M 2、添加 SWAP 分区 阿里云服务器默认不带 SWAP 分区,我们可以自己创建。请在 Shell 中依次执行以下命令: Shell dd if=/dev/zero of=/swapfile bs=1M...

欧拉积分、中点积分与龙格-库塔积分

在 SLAM 系统中经常用到各种不同的数值积分方法,工程上最常见的有三种:欧拉积分(Euler method)、中点积分(Midpoint method)和龙格-库塔法积分(Runge–Kutta methods)。他们的区别就是如何用数值方法模拟一个斜率。这里简单总结如下: 一、欧拉积分 设有如下微分方程: 并且 和 时刻的差为 ,则欧拉积分定义为: 也就是说用 t 时刻的斜率作为整个 时刻的导数。 二、中点积分 设有如下微分方程: 并且 和 时刻的差为 ,则显式中点积分定义为: 则隐式中点积分定义为: 也就是说用 时刻的斜率作为整个 时刻的导数。 欧拉积分与中点积分都是一阶近似并没有本质不同,二者只是一阶导数所取位置不同,他们的性能也有差别,如下图所示,作为一阶积分近似方法来讲,中点积分有时会稍好一些(带来更快的收敛速度)。 图示为方程 ...

[C++11] C++11 中的回调

之前写 Java 和 OC 非常羡慕其中的回调机制,之前的博客也介绍了一个使用 fast delegate 回调的 C++ 机制(参见:[C++] 简单高效的 delegate 方法)。现在 C++11 已经普及了,也同样支持了回调,虽然比高阶的语言 Java 和 OC 之类还稍显繁琐,但是基本功能已经都有了,这里简单说明如下。 1、回调基本函数 在 C++11 中使用 std::function 定义回调函数和参数类型,使用 std::bind 绑定回调函数。示例如下: C++ #include...

GLog & GFlags 的安装

0、系统环境 Ubuntu 16.04 GCC 5.4 1、安装步骤 1)安装 GFlags 运行如下指令: Shell git clone https://github.com/gflags/gflags.git cd gflags mkdir build && cd build cmake .. -DGFLAGS_NAMESPACE=google -DCMAKE_CXX_FLAGS=-fPIC .. make -j4 sudo make install 123456 git clone https://github.com/gflags/gflags.gitcd gflagsmkdir build && cd buildcmake...

VI ORB SLAM2 与 VINS 对比实验

一、实验说明 之前做了一些 VI ORB SLAM2 与 VINS Mono 性能的对比试验,由于 VI ORB SLAM2 并没有官方的版本,我们主要使用王京实现的一个版本(https://github.com/jingpang/LearnVIORB)来做测试(我们加入了双目 VIO 部分,但不论单目还是双目该版本实现与官方版本性能有较大差距)。VINS Mono (https://github.com/HKUST-Aerial-Robotics/VINS-Mono)是港科大开源的一个单目 VIO 算法,速度快而且性能不错,同样受到很大关注。本篇博客我们对二者进行了一些粗浅的实验对比。 说明如下: 1、实验主要指标为 RMSE: 其中: 代表真值, 代表估计值。 2、实验采用 EuRoC 测试集(https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets)。以下是一些初步的实验结果,做一记录。因为没有深入研究和调试,试验次数也比较有限,不一定具有代表性。如大家有任何改进建议或者疑问欢迎留言。 二、实验结果 1、ORB 与 VI...

Ubuntu 系统安装后的一些常用设置

每次重装 Ubuntu 系统后都有一些配置需要重新做,在这里简单记录下以备后续查阅。 1、开机自动挂载硬盘 一般对于双系统来说,Ubuntu 都是安装在一个独立的分区,然后数据仍然使用原来其他硬盘。设置开机自动挂载硬盘会比较省事。按照以下步骤操作即可: 1)查看 UUID: 运行命令: Shell sudo blkid 1 sudo blkid 结果如下: 找到想要挂载的硬盘 PARTUUID 记录下。 2)编辑配置文件: 运行命令: Shell sudo gedit /etc/fstab 1 sudo gedit /etc/fstab 最下边加一行: TeX UUID=aeaadea6-033d-44c7-a6eb-5a5c275e5e5b /media/skylook/Windows ...

Tmux 虚拟终端使用

在我们进行深度学习训练时,经常需要好几天,这时肯定是不能随便关闭窗口就让会话挂了的。我们可以采用很多方法来让会话后台运行,同样 Tumx 也是一个很方便的会话后台运行工具,我们可以在 Tmux 中更好地实现类似的效果。 1 什么是Tmux? Tmux 是一个工具,用于在一个终端窗口中运行多个终端会话。不仅如此,你还可以通过 Tmux 使终端会话运行于后台或是按需接入、断开会话。 2 安装 Tmux 在 Ubuntu 上安装使用如下命令: Shell sudo apt-get install tmux 1 sudo apt-get install tmux 在 CentOS 上安装使用如下命令: Shell sudo yum install tmux 1 sudo yum...

[ROS] 在 Ubuntu 16.04 系统上安装 ROS Kinetic

ROS 的发行版很多,之前的文章中我们介绍过在 Ubuntu 14.04 上安装 indigo。 时光荏苒,Ubuntu 和 ROS 的长期支持版本都已经更新了,对于最新的 Ubuntu 16.04 通常情况下我们更多地使用其稳定版本 Kinetic。这篇文章就讲下 Kinetic 版本在 Ubuntu 下的安装。 0、安装环境 Ubuntu 16.04 LTS 1、配置源 使用 ROS 官方源: Shell sudo sh -c 'echo "deb...

使用 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...