Python版msckf算法使用测试

最近在看滤波slam算法相关的东西,从KF到EKF到EKF slam都有相应的python程序可以学习演示,没想到到了msckf这一步仍然有人写了python版本,还是双目的:stereo_msckf

顺便安利一下作者uoip,这位hub主写了好几个python版的视觉slam相关算法,包括Stereo-PTAM、rgbd-PTAM等。

uoip的stereo_msckf直接翻译自Kumar版的msckf,且剥离了ros,所以单独用Pangolin做了显示界面,README中写的是基于python 3.6+,以下是我在ubuntu 16.04,ros kinetic(意味着我系统里有一大堆python 2.7),python 3.5.2环境下的使用测试。

安装pangolin

为了做结果显示,需要安装作者自己改装的python版pangolin

安装前需要确保安装了numpy和PyOpenGL。

按照pangolin/README进行操作,直到最后一步(我系统里python 2\3并行,所以得用python3命令):

sudo python3 setup.py install

报出错误:

File “setup.py”, line 22, in run
assert len(lib_file) == 1 and len(install_dirs) >= 1
NameError: global name ‘install_dirs’ is not defined

去网上一搜就发现了issue:就是作者有笔误了。把/pangolin/setup.py里第19和第25行的“install_dir”都改成“install_dirs”就行了。

错误不再报出,安装执行完毕。

安装cv2

pip安装一下opencv-python:由于opencv-python包的体积比较大,网速不行的话会比较慢,可以换国内的库比如清华的:

sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python

安装stereo_msckf

其实stereo_msckf不需要安装,直接执行算法就行。但是刚开始运行:

python3 vio.py --view --path path/to/your/EuRoC_MAV_dataset/MH_01_easy

的时候会提示错误:

ImportError: /opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so: undefined symbol: PyCObject_Type

显然是py路径上python 2.7的opencv挡路了,所以在程序里import cv2会报错。

找到整个程序脚本里第一次import cv2,在前面把python 2.7的路径去掉就行了。比如在这里就是,打开/stereo_msckf/config.py,在最前面加入:

import sys
sys.path.remove('/opt/ros/kinetic/lib/python2.7/dist-packages')

另外,因为我是python 3.5,有一个

print(f’*******’)

的3.6+版本的特性我用不了,为了不报错,把文件image.py msckf.py dataset.py中的print函数的输出都改掉不要f就行了。

最后需要注意的,一个是:

path/to/your/EuRoC_MAV_dataset/MH_01_easy

指向的是文件夹式的数据集,而不是rosbag,毕竟作者剥离了ros。

另外就是这只是一个演示性质的python包,你会发现/stereo_msckf/config.py里边把参数都固定了,只针对/stereo_msckf/README里提到的数据集。

最终演示效果:

效果

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒墨阁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值