ROS——Navigation功能包等你来查收!

ROS(Robot Operating System,机器人操作系统)我相信大家或多或少都听过,在如今机器人领域突飞猛进的时代,ROS也得到飞速发展,下图展示了其各版本的发展历程。ROS的原型源自斯坦福大学人工智能实验室的项目,其首要设计目标是在机器人研发领域提高代码复用率,是用于编写机器人软件程序的一种具有高度灵活性的软件架构,该系统具有硬件抽象、设备驱动、库函数、可视化、消息传递和软件包管理等诸多功能。
ROS——Navigation功能包等你来查收!
ROS——Navigation功能包等你来查收!

ROS今年已经将近13个年头了,现已成为世界主流的机器人操作系统,其涵盖了导航定位、3D物体识别、运动规划、多关节机械臂运动控制、机器学习等,甚至可以让机器人协同完成打桌球、人机互动等高难度组合动作。今天我们主要带大家了解一下ROS中的导航功能包——Navigation,该功能包主要作用是实现机器人的定位、导航和避障功能,整个导航功能包的具体架构如图所示。ROS——Navigation功能包等你来查收!
map_server : 称为地图服务器,用于地图的保存与导入;
costmap_2D:主要用于产生二维代价地图,以及提供各种相关的函数;
robot_pose_ekf:扩展卡尔曼滤波器,输入里程计、IMU、VO中的任意两个或者三个信息后输出一个融合之后的pose;
voxel_grid:三维代价地图;
localization:里面包含两个定位用的功能包,fake_localization一般用于定位仿真,amcl根据机器人自身的里程数值以及地图特征,利用粒子滤波修正机器人在已知的地图内的位置;
nav_core:这里面只有三个文件,对应的是全局路径规划、局部路径规划、recovery的通用接口定义;
move_base:机器人移动导航框架,实现的是整个导航的流程,主要管理全局路径规划、局部路径规划和recovery。

实现导航的关键在于机器人得知道“我在哪”、“我要去哪”和“我要怎么去”,这也就对应着导航的重点:机器人定位、获取目标点和路径规划,具体实现流程见图所示。ROS——Navigation功能包等你来查收!
首先,导航功能包需要采集机器人的传感器信息,以达到实时避障的效果,其中信息包括二维激光信息(sensor_msgs/LaserScan)或者三维点云信息(sensor_msgs/PointCloud)。
其次,导航功能包需要机器人发布nav_msgs/Odometry格式的里程计信息,同时需要发布相应的TF变换。
最后,导航功能包输出的是geometry_msgs/Twist格式的控制指令,通过解析这些指令控制机器人完成相应的运动。
以上就是本人对于Navigation导航功能包的一些理解,希望对你有所帮助。

想了解更多关于我们金翅创客实验室的内容,请关注微信公众号:金翅创客。
ROS——Navigation功能包等你来查收!

原创声明:本文内容均为本人原创作品。请任何和个人、组织,在经过本人授权后,方可转载。