导航

    蓝鲸ROS机器人论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 热门
    ROS交流群
    ROS Group
    产品服务
    Product Service
    开源代码库
    Github
    官网
    Official website
    技术交流
    Technological exchanges
    激光雷达
    LIDAR
    ROS教程
    ROS Tourials
    深度学习
    Deep Learning
    机器视觉
    Computer Vision

    小强ROS机器人教程(17)___利用ORB_SLAM2建立环境三维模型

    产品服务
    2
    3
    13579
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • weijiz
      weijiz 最后由 weijiz 编辑

      小强主页

      想要实现视觉导航,空间的三维模型是必须的。ORB_SLAM2就是一个非常有效的建立空间模型的算法。这个算法基于ORB特征点的识别,具有准确度高,运行效率高的特点。我们在原有算法的基础上进行了修改,增加了地图的保存和载入功能,使其更加适用于实际的应用场景。下面就介绍一下具体的使用方法。

      注意:以下方法目前程序版本已经不再支持,小强用户已经完全替换为Galileo导航系统。导航系统文档 https://doc.bwbot.org/en/books-online/galileo-servicebot-doc/

      注意:由于小强的ORB_SLAM2版本已经升级到伽利略版本,所以运行时会检测是否有有效的证书。默认发货时小强是配置好证书的。如果没有证书也可以联系客服免费获取。如果你不是小强用户,那么下面的教程无法执行。

      准备工作

      在启动ORB_SLAM2之前,请先确认小强的摄像头工作正常。
      ORB_SLAM2建图过程中需要移动小车,移动小车过程中ORB_SLAM2的运行状态不方便显示(ssh方式比较卡顿,也不可能拖着显示器),因此请先安装好小强图传遥控windows客户端。

      启动ORB_SLAM2

      ssh方式进入小强,执行以下指令

      roslaunch orb_slam2 map.launch
      

      0_1489829013495_5.png

      开始建立环境三维模型

      打开小强图传遥控windows客户端,点击“未连接“按钮连接小强。在图传窗口右键打开”原始图像“和”ORB_SLAM2的特征点图像“

      0_1489829229351_1.png
      0_1489829544143_0.png
      上图中,左侧图像是摄像头原始彩色图像,右侧是ORB_SLAM2处理后的黑白图像。当前ORB_SLAM2还没有初始化成功,所以黑白图像没有特征点。
      按住”w”键开始遥控小强往前缓慢移动,使ORB_SLAM2初始化成功,即黑白图像开始出现红绿色特征点
      0_1489829731061_2.png
      现在就可以开始遥控小强对周围环境建图,遥控过程中需要保证黑白图像一直存在红绿色特征点,不存在则说明视觉lost了,需要遥控小强退回到上次没lost的地方找回视觉位置。

      使用rviz查看建图效果

      在机器人上打开rviz

      rviz
      

      打开/home/xiaoqiang/Documents/ros/src/ORB_SLAM/Data/rivz.rviz配置文件

      有些系统可能无法如此打开,可以先把文件复制到本地,然后再在本地打开

      0_1489831624309_6.png
      如下图所示,红黑色点是建立的三维模型(稀疏特征点云),蓝色方框是keyframe可以表示小强轨迹
      0_1489831763020_7.png

      保存地图

      当地图建立的范围满足自己要求后,在虚拟机新开一个命令窗口,输入下列命令保存地图

      rosrun orb_slam2 save_map.py map1
      

      0_1489832316715_8.png

      地图文件会被保存进用户主目录的slamdb文件夹内。

      地图的载入

      保存地图之后可以再次载入ORB_SLAM2程序中。地图载入后程序可以非常迅速的定位出摄像头的具体位置。这样就可以开发出基于视觉定位的导航算法了。
      载入地图的方式也非常简单。

      运行

      rosparam set /galileo/galileo_map map1
      roslaunch orb_slam2 run.launch
      

      此处的run.launch实际上就是把LoadMap 设置成1.

      地图的后期处理

      在建立地图之后,想要使用这个地图进行导航,还需要对地图文件做进一步的操作。比如创建导航的线路,标记导航路径的行走方式等等。

      对于小强用户可以直接使用导航客户端进行地图处理。详情可参见 导航系统文档

      常见问题

      Q: 可不可以不使用IMU
      A: 小强的ORB_SLAM2是经过修改的版本,增加了IMU的融合。如果不想使用IMU可以在setting.yaml里面设置UseImu为0.

      Q: 小强的标定文件在什么地方
      A: 小强的标定文件,2018.6之后发货的,位于usb_cam包launch文件夹下ov2610.yaml。之前发货的位于ORB_SLAM2包内的setting.yaml,setting4.yaml 和setting5.yaml分别是map.launch和run.launch使用的。

      Q: 小强的摄像头很不清晰
      A: 可能是摄像头的镜头被碰到了导致没有聚焦。可以转动摄像头镜头,调整到图像清晰的位置。注意调整过之后摄像头参数需要重新标定。标定方法可以参见如何标定单目摄像头

      小强主页
      返回目录

      1 条回复 最后回复 回复 引用 0
      • frank
        frank 最后由 frank 编辑

        本教程中的点云显示部分已经迁移到rviz中,涉及点云与keyframe轨迹显示的topic名字和ORB_SLAM1代完全相同.这样处理的优势是ORB_SLAM2自带的GUI界面无法在ssh中启动,修改之后现在可以支持ssh启动,这在实际使用中很重要。
        启动orb_slam2 中的start.launch文件后, 打开rviz选择一代ORB_SLAM文件夹中的Data文件夹下的rviz.rviz配置文件即可,操作完全和一代一模一样,可以参考官方readme中的usage

        frank 1 条回复 最后回复 回复 引用 0
        • frank
          frank @frank 最后由 weijiz 编辑

          对于地图的保存功能,因为gui界面已经屏蔽了,是通过发布一个topic的形式触发的。topic名字为/map_save 这是一个std_msg下的Bool类型数据,打开命令行终端输入下述命令即可发布地图保存命令

          rostopic pub /map_save std_msgs/Bool '{data: true}'  -l
          
          1 条回复 最后回复 回复 引用 0
          • 1 / 1
          • First post
            Last post
          Copyright © 2015-2023 BlueWhale community