slam和ros之间的是什么关系?

SLAM是什么?

SLAM是同步定位与地图构建。主要用于解决移动机器人在未知环境中运行时定位导航与地图构建的问题,SLAM分为:激光SLAM和视觉SLAM,他们各有千秋,常见的应用有:扫地机器人,无人驾驶车,无人机,等等。

slam和ros之间的是什么关系?_第1张图片

ROS是什么?

ROS是机器人操作系统,Robot operating system,是斯坦福人工智能实验室开发的机器人操作系统,有着广泛的应用,是目前主流的机器人操作系统。

ROS中集成了发布-订阅的通信方式、可视化和配置等机器人开发中常用到的工具、操作控制和感知等库文件、“一站式”来自全球开发者数以千计的ROS程序包。ROS目前还在发布新的版本,对之前版本中的bug进行修复和添加新的功能包。 

slam和ros之间的是什么关系?_第2张图片

SLAM和ROS的关系

SLAM在开发过程中常常会涉及各个信息的交互,特别是多传感器融合的框架,会涉及到多传感器信息的同步、交互。不在ROS中开发的SLAM框架系统,需要一个完整的框架体系,鲁棒性比较好,当需要SLAM进行定位和导航的时候,可以把算法当成一个功能包进行移植。缺点在于这样的框架不利于开发,在在涉及多传感的时候,这样的框架不太适合。

现阶段视觉SLAM大多数框架都是同时有ROS的和非ROS的接口。开发人员在开发的时候,会做大量的重复工作,而系统支持ROS接口后,开发人员可以可以针对框架中的某个方面进行调优,省去了重复造轮子。

SLAM应用到IMU、视觉、轮速计、激光等传感器的时候,开发人员需要实现这些传感器信息的同步,在框架支持ROS后只要把传感器的topic做相应的修改,同时对这些topic的时间、tf关系、环境进行维护,把然后把这些信息在对应的launch进行调整,SLAM算法便可以跑起来。同时当需要对不同框架之间进行信息交互的时候,比如一个建图框架的算法需要里程计信息,可以通过ROS把SLAM框架中的里程计信息发布出来,建图框架订阅发布出来里程计信息,边完成了里程计信息的交互。

slam和ros之间的是什么关系?_第3张图片

过去激光SLAM都是在ROS上开发的,例如gmapping ,cartographer等。因为激光SLAM更需要频繁的读取雷达的数据集,依赖ROS中rviz进行定位和建图信息的可视化、在gazebo上进行机器人控制仿真以及rogbag存储数据。

而且激光SLAM中传感器的参数相对较多,在ROS上开发,通过修改配置文件也比较方便。同时ROS操作复杂,随着激光SLAM技术的成熟,研究者在熟悉数据读取后,尝试脱离ROS环境,在Opencv上进行可视化。这样的好处可以让其他人更加专注激光SLAM算法上的开发。 

slam和ros之间的是什么关系?_第4张图片

总之,现阶段为了方便SLAM算法的开发,大多是SLAM框架离不开ROS。学习ROS可以当成学习SLAM的一部分。

你可能感兴趣的:(人工智能,移动机器人,机器人,自动驾驶,人工智能)