首页> 科技> 【泡泡机器人原创专栏】ORB_SLAM开发攻略(三):卡片地图预先创建

【泡泡机器人原创专栏】ORB_SLAM开发攻略(三):卡片地图预先创建

2017-03-21 06:58     科技     来自:牛人趣事

在上一篇提到,结合markerlessAR(预先放置一张目标图像到场景中),可以优化几个体验:


  • 在地图初始化之前,可以基于markerlessAR显示虚拟人物。但是初始化帧率非常低。

  • 地图初始化之后,orbslam坐标系中虚拟人物仍然显示在目标图像位置。帧率提升到10左右。


考虑上面情景,目前体验最不好的地方还是在于地图初始化。


1 慢      2  需要一定的技巧才容易初始化成功


那么看来,提升体验的办法,在于去掉初始化这个步骤,最好直接打开镜头的同时就已经初始化完毕了。


最好的办法就是预先将orbslam的地图保存下来,下一次打开的时候,加载地图。可惜目前作者还没有做这个功能,个人目前对代码也不熟悉,也不知道如何入手导出、导入地图。


所以采取了一个最笨的办法,首先选一张目标图片,然后保存下来目标成功初始化的图片序列。


以下图为例,首先将公交卡的图片序列准备好,这里准备了150多张,其实有40张左右就可以成功初始化。对于特征点特别强的目标图不到20张就可以初始化完毕。



然后程序启动的时候,就直接加载这些图片进行地图初始化。这样等用户可以操作时,基于公交卡的地图已经初始化成功。只要把公交卡放到任意一个地方,手机摄像头拍摄公交卡的位置,地图就已经可以开始跟踪了。


在通过把不同的卡片,对应不同的虚拟人物或者虚拟场景。可以方便实现如下需求:


在任意位置,放下卡片A,打开应用对准卡片A,卡片A对应的虚拟场景出现,同时slam对周围的环境的特征不断增加到地图中去。这里卡片A起了以下几个作用:


  • 标记加载哪一个虚拟场景,以及虚拟场景的位置和姿态。

  • 基于卡片A的地图已经初始化完毕,对准卡片A直接进入slam跟踪,不需要再初始化。


当然缺点也是有的,程序打开时必须将摄像头靠近离A相对近的距离,才能跟踪地图成功,继续之后的动作。而且预先初始化导致程序加载时间更长。


最后放上视频:





如何提前阅读【泡泡机器人原创专栏】ORB_SLAM开发攻略(四)抢鲜版?

      长按下图,识别图中二维码,关注“泡泡机器人SLAM”(ID:paopaorobot_slam)公众号,回复 "攻略4" 获取【泡泡机器人原创专栏】ORB_SLAM开发攻略(四)抢鲜版


【版权声明】泡泡机器人SLAM的所有文章全部由泡泡机器人的成员花费大量心血制作而成的原创内容,希望大家珍惜我们的劳动成果,转载请务必注明出自【泡泡机器人SLAM】微信公众号,否则侵权必究!同时,我们也欢迎各位转载到自己的朋友圈,让更多的人能进入到SLAM这个领域中,让我们共同为推进中国的SLAM事业而努力!

【注】商业转载请联系刘富强([email protected])进行授权。普通个人转载,请保留版权声明,并且在文章下方放上“泡泡机器人SLAM”微信公

众账号的二维码即可。


【编辑】王琛