﻿ Turtlebot机器人自主导航及避障实验设计研究

Turtlebot机器人自主导航及避障实验设计研究Experimental Design of Autonomous Navigation and Obstacle Avoidance for Turtlebot Robot

Abstract: With the research of robotics advancing, it is important to design a home service robot that can move autonomously. The Turtlebot robot based on ROS platform is used to achieve the autonomous navigation and obstacle avoidance functions. In order to realize the autonomous navigation function, the Dijkstra algorithm is used for global path planning, and the dynamic window algorithm is used for local path planning. A comparison between the results of SLAM and autonomous navigation is carried out by using two sensors, the depth camera Astra and the lidar EAI F4. During the experi-ment, the Gmapping algorithm was used to implement SLAM mapping. In addition, by writing scripts, the SLAM mapping process, which originally required manual control, has also been im-proved to autonomous SLAM without manual control, making it more convenient in practical appli-cations. The results of simulation and experiments show that autonomous navigation and obstacle avoidance functions have been implemented.

1. 引言

SLAM指自主机器人在未知的环境中自主完成地图构建，并根据该地图进行自身定位的能力 [1]。其主要思想是将机器人单独放置在一个未知环境内，从某一起始点开始移动，通过机器人自身搭载的传感器和里程计等设备，让它在移动过程当中建立周围环境的地图，实现机器人定位 [3]。

2. SLAM与自主导航的设计

2.1. 设计思路

2.2. 用于SLAM建图的Gmapping算法

1) 采样：当前时刻 的粒子集合 $\left\{{x}_{t}^{\left(i\right)}\right\}$ 是从上一时刻 $t-1$ 粒子集合 $\left\{{x}_{t-1}^{\left(i\right)}\right\}$ 中采样得到的。

2) 计算粒子权重：每个粒子的权重为 $\left\{{w}_{t}^{\left(i\right)}\right\}$${w}_{t}^{\left(i\right)}=\frac{p\left({x}_{1:t}^{\left(i\right)}|{z}_{1:t},{u}_{1:t-1}\right)}{\text{π}\left({x}_{1:t}^{\left(i\right)}|{z}_{1:t},{u}_{1:t-1}\right)}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\left(i=1,2,\cdots ,N\right)$

3) 重采样：重采样是在粒子滤波时，对于粒子的退化现象提出的解决办法。当有效粒子的数量低于设定的阈值时，便进行重采样操作。经过重采样操作之后，所有的粒子拥有一样的权重。

4) 更新地图：根据机器人的轨迹和传感器的观测数据，计算地图概率更新地图。

2.3. 自主导航功能

1) 本文中全局路径规划采用一种典型的广度优先搜索算法——Dijkstra算法 [7]。已知一个带权重的有向图G，V是G中所有顶点的集合，S是顶点之一。E是顶点之间带权边的集合，(u,v)表示从顶点u到顶点v的路径，则该算法的主要步骤如下：

① 初始状态，集合S仅包含源点v，集合U包含除了v以外的其他所有顶点。如果v与集合U中的顶点u有边，则v到u的距离是边(v,u)的权值；如果没有边则边(u,v)的权值为∞。

② 从集合U中选取一个距离v最小的顶点k，把k加入到集合S中。

③ 以k为中间点，修改U中每个顶点的距离。如果从v到k再到u的距离小于从v到u的距离，则修改顶点u的距离。那么，修改后的距离就变为k的距离加上边(k,u)的权值。

④ 重复步骤②和③，直到S中包含所有的顶点。

2) 局部路径规划则采用了动态窗口法算法DWA (Dynamic Window Approaches)。其核心思想是创建一个由直线速度v和旋转速度ω组成的速度对(v,ω)的速度矢量空间，将路径规划问题转化成速度矢量空间上的约束优化问题。对于地面机器人，速度矢量空间Vr由速度矢量集合Vs、可允许速度矢量Va和速度动态窗口Vd的交集构成 [8]： ${V}_{r}={V}_{s}\cap {V}_{a}{\cap }^{\text{​}}{V}_{d}$。其中可允许速度矢量Va表示在当前位置下机器人的加速度不会导致碰撞 [8]：

${V}_{a}=\left\{\left(v,\omega \right)|v\le \sqrt{2dis\mathrm{tan}t\left(v,\omega \right)\cdot {a}_{v}}\wedge \omega \le \sqrt{2dis\mathrm{tan}t\left(v,\omega \right)\cdot {a}_{\omega }}\right\}$

$G\left(v,\omega \right)=\sigma \left(\alpha \cdot heading\left(v,\omega \right)+\beta \cdot dist\left(v,\omega \right)+\gamma \cdot velocity\left(v,\omega \right)\right)$

$dist\left(v,\omega \right)$ 用来评价机器人当前的运动轨迹和障碍物的最近距离。 $velocity\left(v,\omega \right)$ 是速度评价函数，表示当前时刻机器人的速度大小。 $\alpha 、\beta 、\gamma$ 为三个评价函数的权重比，可根据场合的不同调整他们的大小，以此来调整机器人的动作。

3) 定位。机器人的定位则是机器人通过传感器获取当前自身周围的环境信息，从而推算出自己目前所处的位置。ROS中的amcl功能包为使用者提供了一种基于概率统计的自适应的蒙特卡洛定位方法，使机器人可以随时随地地计算出自己在地图中所处的位置。自适应蒙特卡洛定位是在对粒子进行重采样的过程中引入自适应机制，即设定重采样粒子数量的阈值，并判断当粒子数小于阈值时，执行重采样操作，否则，跳过重采样过程，直接输出定位结果，再循环执行预测过程与更新过程。

3. 实验过程及分析

3.1. 各部件的调试

1) Turtlebot机器人的调试：Turtlebot指底盘 + kinect + 托盘 + 支架的合体(如图1所示)。跟Turtlebot相连的电脑称为上网本，远程到上网本的称为工作站或工作机。调试时在上网本打开新的终端输入roscore，如果ROS安装则正确显示started core service [/rosout]。开启Turtlebot开关，连接上网本。输入检测命令ls/dev/kobuki，如果显示对应的设备/dev/kobuki，则说明设备已成功连接，否则就需要添加新的设备名称。在工作机打开新的终端，启动Turtlebot键盘控制。如果能通过键盘使Turtlebot正常运动，则证明Turtlebot功能完善。

2) 深度相机Orbbec Astra [9] 的调试：首先，安装依赖，再从网站下载对应版本的驱动并进行安装。然后安装astra_camera和astra_launch，最后更新环境变量配置。将Astra连接到电脑上，运行astra_launch文件，若没有发生错误则说明深度相机正常工作，使用rqt_image_view命令打开ImageView即可查看图像。在ImageView中选择对应话题，即可显示对应类型的图像。如图2所示，此时显示的就是和普通相机一样的彩色图像。如图3所示，此时显示的就是深度相机所独有的深度图像。

3) 激光雷达EAI F4的调试：激光雷达EAI F4的调试过程与深度相机类似，需要先下载相应的驱动并进行安装。安装完成后，将激光雷达连接到电脑，打开可视化工具rviz即可查看通过激光雷达得到的点云图(如图4所示)。

Figure 1. Turtlebot robot

Figure 2. RGB image of depth camera Astra

Figure 3. Depth image of depth camera Astra

Figure 4. Point cloud image of lidar

3.2. 搭载深度相机Astra的实验

Figure 5. Real picture of the laboratory

Figure 6. Map of the laboratory

Table 1. Experiment data analysis of depth camera Astra

Figure 8. Obstacle avoidance experiment

3.3. 搭载激光雷达EAI F4的实验

Figure 9. Map drawn by lidar

Table 2. Experiment data analysis of EAI F4 lidar

Figure 11. Obstacle avoidance experiment

4. 结束语

[1] 许玉龙. 基于ROS的移动机器人建图导航技术研究[D]: [硕士学位论文]. 哈尔滨: 哈尔滨工业大学, 2017.

[2] 陈卓, 苏卫华, 安慰宁, 秦晓丽. 移动机器人SLAM与路径规划在ROS框架下的实现[J]. 医疗卫生装备, 2017, 38(2): 109-113.

[3] 祝甜一. 基于ROS的自主式救援机器人SLAM和导航系统研究[D]: [硕士学位论文]. 南京: 东南大学, 2015.

[4] 应宏钟. 基于ROS的移动机器人系统SLAM技术研究[D]: [硕士学位论文]. 成都: 西南交通大学, 2018.

[5] 田亮亮. 基于ROS的移动机器人未知区域探索与环境建模[D]: [硕士学位论文]. 沈阳: 东北大学, 2015.

[6] 李红挪. 基于Turtlebot的AGV自主导航控制方法研究[D]: [硕士学位论文]. 大连: 大连理工大学, 2017.

[7] 田凯乔. 基于ROS及深度摄像机的智能避障机器人的研究与实现[D]: [硕士学位论文]. 长春: 长春工业大学, 2018.

[8] 韩轾. 基于ROS的室内移动服务机器人定位与导航系统的研究与开发[D]: [硕士学位论文]. 成都: 电子科技大学, 2017.

[9] Product Introduction of Astra, Astra S & Astra Pro.
https://orbbec3d.com/product-astra-pro/

[10] 蒋林, 方东君, 雷斌, 李维刚. 单目视觉移动机器人导航算法研究现状及趋势[J]. 计算机工程与应用, 2021, 57(5): 1-9.

Top