竞速机器人

竞速机器人

概述

本项目旨在参加机器人竞速比赛。在比赛中,机器人需要尽可能快地完成赛道并击中终点目标,同时不能进入黑色区域。 机器人要求使用人形机器人,配备由三个麦克纳姆轮组成的全向底盘,以及背包上的网络摄像头。所有程序都在背包中的树莓派4B上运行。

在这个项目中,我负责仿真、视觉和控制算法。我在V-REP模拟器中建立了仿真环境,测试了基于边缘检测的赛道检测方法,并使用基于视觉的PD控制来控制底盘。此外,由于机器人在起点处被随机放置方向,我们使用Keras和TensorFlow来解决分类问题并使机器人朝向正确方向。

仿真

我们首先在V-REP中建立仿真环境来测试我们的算法,我们使用V-REP的远程Python API从虚拟相机获取仿真数据,并根据我们的算法控制机器人的电机。我们测试了真实网络摄像头的视场角,以确保虚拟相机具有与真实相机类似的参数。

真实机器人

网络摄像头的原始位置太高,无法获得机器人前方地面的足够信息。因此,我们使用3D打印机制作了一个可调角度的相机支架,使其能够向下倾斜以俯视地面。为了增加轮子的摩擦力,我们尝试了新材料来制作轮胎,并在真实机器人上进行了一些测试。

测试视频

这个视频展示了比赛的整个过程。正如我们所见,机器人以不同的方向开始,然后根据网络摄像头的图像将指令分类为左转、右转和前进三类。对于左转或右转指令,机器人以特定角度左转或右转。对于前进指令,机器人开始使用基于边缘检测的PD控制来控制底盘。即使面对伪装图案,视觉算法也能保持稳健。最后,机器人使用基于圆弧检测的方法来估计与目标的距离,并在调整方向的同时减速。