创建一个Roborace竞赛机器人

抢劫细节


图片

Roborace是一项竞赛,其中,机器人汽车在特殊的环形赛道上竞争。您可以在Roborace和一级方程式赛车之间进行类比,只有两点不同。
  • 首先,代替全面的赛车,涉及体积和重量受到限制(最大WxD = 25x50 cm,重量最大3 kg)的较小型汽车和原始设计。
  • 其次,代替飞行员,汽车由一台车载计算机控制,该计算机分析各种传感器的读数并确定汽车在赛道上的方向,选择运动速度,防止与障碍物和竞争对手的碰撞。实际上,汽车在赛道上的“行为”是由车载计算机控制程序确定的。

Roborace以锦标赛的形式举行,锦标赛由阶段组成,在白俄罗斯和其他国家的不同城市举办。入门级构造(例如,基于LEGO类型的构造函数)和复杂的机器人设备都参加了锦标赛。竞争法规以覆盖机器人结构的最大范围的特性和功能的方式形成。

图1-赛车机器人

图片

的轨道考虑图1中所示的轨道,机器人将沿着该轨道移动。强制性元素是黑线和墙壁。基于此,您可以制定一种使机器人沿着轨道移动的策略:例如,为机器人配备黑线传感器并使用轨道线进行导航,或者安装测距仪以检测障碍物并沿着墙壁移动。

本文介绍了我根据第二种策略为Roborace开发的机器人之一(根据测距仪的读数进行运动)。

创建机器人的阶段


为Roborace创建机器人时,首先要选择机箱。现在,商店提供了多种履带式和轮式平台。当后轮由电动机驱动而前轮由伺服驱动器驱动时,我建议您专注于经典设计。图2显示了根据类似方案构建的Roborace机器人。

图2-机械手:

图片

我很幸运地在当地的无线电建模人员俱乐部以很少的钱购买了一个模型(读者可以在他们所在的地区尝试这样做:他们通常有很多过时的模型)。由于购买的型号没有牵引电动机,因此在其上安装了购买的12伏电动机。您也可以使用常规玩具:它们通常非常坚韧,您只需要修改方向盘即可。

由于在我的情况下已经安装了伺服器,因此没有问题。

下一步是选择控制板。有很多选择。我选择Arduino作为最简单的选项。可以向读者推荐同样的方法,尤其是在缺乏经验的情况下。根据我相当丰富的经验,对于此类机器人,通常的8位微控制器就足够了。因此,如果您不打算使用摄像机来跟踪机器人的运动,请不要使用功能更强大的处理器来使其复杂化。

伺服驱动器可以直接连接到Arduino,例如,通过图3所示的传感器护罩。将传感器连接到它也很方便。

图3-传感器护罩v4:

图片

电机无法直接连接到Arduino。您需要使用特殊的电机驱动器。现在有很多可用的东西,并且有连接的说明。我使用了我们实验室开发的电机驱动器(图4)。

图4-电动机驱动器:

图片

在机器人竞赛中,您必须特别注意电池。我使用锂聚合物电池。他们证明自己很好。我在机器人中使用的一种技巧涉及电压转换器。 Arduino原生转换器不是很好,因此最好使用降压稳压​​器来节省电池电量。当然,您可以使用常规的线性转换器。

机器人最重要的部分是传感器-为传感器提供有关世界,障碍物和其他机器人的信息。在中等价格类别中,我们可以选择超声波和红外传感器。在我的机器人中,我使用红外传感器GP2Y0A02YK0F。我不喜欢超声波传感器,因为一个传感器可能会与另一个传感器产生噪音。例如,我遇到这样的情况:右传感器发送信号,左传感器接收信号。我仍在努力正确放置和管理超声波传感器。价格不断推动着他们推出产品的希望。

这里介绍的机器人模型具有三个红外传感器。传感器如图2所示。由于两个原因,它们被安装在外壳的深处:
  1. 减少传感器的死区,该死区在此模型中为20厘米;
  2. 在与其他机器人碰撞时,机器人本体可保护传感器免受机械损坏。

侧面传感器以45度角安装。好吧,如果机器人的设计可以调整其安装角度。

机器人

的总体方案如图5 所示。图5-机器人的总体方案:

图片

机器人编程


由于机器人使用的是Arduino,因此可以使用Arduino IDE进行编程。机器人程序是一个闭环,由以下块组成:
  1. 过滤传感器读数;
  2. 计算机器人的角度和速度;
  3. 将控制信号传输到机制。

在这种结构中,没有用于从传感器接收信息的模块。由于传感器返回模拟信号,因此Arduino IDE具有AnalogWrite()函数。如果测量速度不重要,则此功能非常有用。但是由于该机器人是为比赛而设计的,因此决定中断传感器的处理。

所有基于ATmega微控制器构建的Arduino板都可以在自动模式下执行ADC测量。您需要配置一次此模式,然后使用获得的值。结果,控制器不断检查传感器,而不会浪费CPU时间。传感器读数的过滤是通过具有三个元素窗口的中值过滤器进行的。

为了沿着高速公路行驶,开发了以下算法。机器人会比较到左右壁的距离,并据此将车轮朝所需方向旋转。如果机器人前方没有障碍物,则速度会增加,但车轮的最大可能旋转角度也会减小。这对于使机器人在笔直的部分上更笔直地行驶是必要的。当检测到障碍物时,车轮的旋转角度会增加,并且机器人会减速。

当然,还有未解决的问题。例如,机器人不知道转弯的曲率,因此它在每次转弯之前都会减速。

您可以在GitHub上查看项目代码

Source: https://habr.com/ru/post/zh-CN381775/


All Articles