机器人导航报告半成品-60分模板-tianbot mini

一、项目概述

工作流程:

机器人发布nav_msgs/Odometry格式的里程计信息,相应的TF变换给导航功能包,然后导航功能包输出geometry_msgs/Twist格式的控制指令,最终通过这些指令控制机器人完成相应的运动。

在机器人导航过程中,有定位路径规划两大部分。

  1. Amcl:实现二维地图中机器人的定位。Amcl功能包是机器人对自己所处的位置精确定位,保障导航路径的准确性。
  2. Move_base :实现机器人导航中的最优路径规划。Move_base功能包提供导航的主要运行、交互接口。主要由全局路径规划和本地实时规划。
  3. 全局路径规划是根据给定的目标位置和全局地图进行总体路径的规划,使用Dijkstra或A*算法进行全局路径的规划,计算机器人到目标位置的最优路线。
  4. 本地实时规划,实际情况下为了避开障碍物等,需要针对地图信息和机器人随时可能出现的障碍物规划机器人每个周期内应该行驶的离线,使其尽量符合全局最优路径。
  5. 自主定位即机器人在任意位置都可以推算自己在地图中所处的位置。里程计定位和amcl定位都可以实现机器人的定位。

自主导航:

机器人能够自主进行定位和导航,不需要过多的人为干预,在地图中设置一个目标点的集合,然后从中随机产生当前目标点,是机器人自主导航到达目标,并在短暂停留后继续循环前往下一个目标点。

请依据具体项目撰写和补充。

二、机器人导航硬件模块

硬件清单如下:

机器人导航报告半成品-60分模板-tianbot mini_第1张图片

具体说明如下:

机器人导航报告半成品-60分模板-tianbot mini_第2张图片

使用注意:

  1. 系统状态指示灯
    1. 黄灯闪烁:热点模式启动30S内需要连接到TBMINI-XXX热点
    2. 绿色常亮:已有客户端正常连接到TBMINI-XXX热点
    3. 白灯常亮:进入遥控控制模式,可以在网页端进行遥控控制
  2. 雷达状态指示灯
    1. 红灯常亮,蓝灯常亮,已正常配对连接。
    2. 红灯闪烁,此时雷达未连接成功,需检查线路以及接收器是否连接正常。
  3. 电量指示灯
    1. 在一格时指示灯闪烁,电量过低,处于该状态时,请立即充电,系统在此电量时,将无法保证正常工作。

请依据具体硬件撰写和补充。

三、机器人导航软件模块

总体软件框图如下:

机器人导航报告半成品-60分模板-tianbot mini_第3张图片

导航软件框图如下:

机器人导航报告半成品-60分模板-tianbot mini_第4张图片

右部:节点map_server 将地图信息,节点sensor sources将雷达信息、点云信息传至已在ROS系统中集成好的工装包集中,生成全局代价地图和局部代价地图。

左部:提供定位和TF变换,将TF信息,和里程计信息,传至框内。amcl 是一个用于二维移动机器人的概率定位系统。它实现了自适应(或 KLD 采样)蒙特卡洛定位方法(如 Dieter Fox 所述),该方法使用粒子滤波器来跟踪机器人相对于已知地图的姿态。

上部:目标点信息 goal。

框内:全局代价地图进行全局路径规划;局部代价地图进行局部路径规划;先全局路径规划,后局部路径规划,最后控制机器人底盘信息,即控制机器人移动。

重要知识点如下:

全局路径规划:接受的信息包括全局的地图以及起点和目标点。ROS官方导航功能包有Dijkstra和A*算法,默认Dijkstra。Dijkstra广度优先,A深度优先,Dijkstra算法计算源点到其他所有点的最短路径长度,A关注点到点的最短路径(包括具体路径),Dijkstra算法的实质是广度优先搜索,是一种发散式的搜索,所以空间复杂度和时间复杂度都比较高。对路径上的当前点,A*算法不但记录其到源点的代价,还计算当前点到目标点的期望代价,是一种启发式算法。

局部路径规划:接收全局路径规划器生成的路径,以及里程计的信息,地图信息,输出的是底盘运动的速度信息。先有全局路径规划器规划一条大致的路径,局部路径规划器把它分割成很多小段,再进行局部路径规划。在全局规划时对地图保存过的障碍物进行避障,在局部路径规划的时候会对新增的障碍物信息,也可以对运动的物体进行避障。DWA都是状态采样,先假设小车在什么位置,再根据这个位置的一系列状态信息,包括与退点的距离,与起点的距离,终点的距离,周围障碍物的信息等。

AMCL:自适应蒙特卡洛定位,粒子滤波就是用了蒙特卡洛思想的方法,把粒子滤波用到定位上就叫做蒙特卡洛定位,粒子滤波包括初始化计算权重、重采样、状态转移。

请依据具体软件撰写和补充。

四 导航实际调试运行分析

实际导航支持算法较多,此处以默认算法演示为主。

1 打开终端输入以下命令:运行迷你机器人驱动

roslaunch tianbot_mini bringup.launch

2 打开新终端输入以下命令:运行雷达驱动

roslaunch tianbot_mini lidar.launch

3 打开新终端输入以下命令:运行SLAM

roslaunch tianbot_mini slam.launch

4 打开新终端输入以下命令:运行键盘遥控

roslaunch tianbot_mini teleop.launch

实际效果如下:

机器人导航报告半成品-60分模板-tianbot mini_第5张图片

请依据具体导航实践撰写和补充。

五、讨论

项目完成过程中遇到的问题和积累的解决问题的经验,项目改进的方向,即体会和收获。

六、参考文献

1. [EB/OL]:doc.tianbot.com/tianbot_mini/2565840

你可能感兴趣的