所有关于电路
项目

如何建立一个机器人线跟随者

2015年11月10日,通过特拉维斯Fagerness

系列文章的第四部分,建造一个可以沿着线或墙壁和避开障碍的机器人!

系列文章的第四部分,建造一个可以沿着线或墙壁和避开障碍的机器人!

相关文章

如何建造一个机器人:

第1部分:设计和原理图

第2部分:PCB设计

第3部分:测试硬件

第5部分:避免障碍

第6部分:沿墙走机器人

概述

本文是关于我构建能做各种事情的机器人的经历的系列文章的第4部分。我认为这将是整洁的创造一个机器人,很容易组装与一个单一的烙铁,并负担得起。我对我的机器人做了如下要求:

  • 许多套件都很昂贵,所以它一定相对便宜。
  • 没有特殊设备,必须很容易地组装起来。
  • 它必须是不需要复杂的IDE或程序员就能轻松编程的。
  • 它必须具有足够的扩展性。
  • 它应该只需要一个简单的电源。
  • 它应该能够沿着一条线或一堵墙移动,并避开障碍物。

在这篇文章中,我将谈论如何编程机器人成为一个线跟随者。

遵循一条线吗?

路线跟踪器是让机器人沿着预先确定的路径行进的最简单的方法。你只需要一种移动方式和一个传感器来确定机器人是否在线上。目前已经开发出了一些算法来让机器人保持在线状态。涵盖这些算法的工程领域被称为控制理论。在本文中,我将制作一个非常简单的算法。在伪代码:

机器人在队伍的左边吗?右转机器人在直线的右边吗?机器人在线上吗?前进

寻找合适的曲面

许多人在地板上用黑色电工胶带做机器人。这是一个巨大的痛苦和制造混乱。白板是一个很好的表面,可以尝试不同的路线。我在家得宝(Home Depot)找到了这个10美元的2x4'板。你可以用黑色记号笔轻松地添加轨迹。白色的背景和黑色的标记有足够的对比度,因此传感器可以很容易地分辨出线条。我不会针对每个表面校准传感器,而是假设它们对于给定颜色的读数都大致相同。然后我可以比较它们彼此,以确定哪个传感器当前读取的是最暗的值。只要我画的线一次只覆盖一个传感器,这个算法将提供一种可靠的方法来确定机器人的位置。

编写的程序

下面的代码首先初始化机器人驱动程序,然后等待5秒。这让我有足够的时间在机器人开始移动之前把它放到轨道上。之后,机器人不断地检查传感器,并使用上面的算法来决定如何移动。前进速度可以使用ROBOT_SPEED定义来设置。这是255中的一个数字。如果机器人移动太快,算法可能没有足够的时间来纠正运动。我还增加了检查机器人是否被捡起或即将掉下赛道。如果所有传感器的读数都是1000,这意味着机器人很可能已经离开地面,因为没有光线反射回来。如果你想让机器人在你移动它的时候停下来,这是很有用的。

潜在的改进

该算法不使用平均或跟踪误差。你会在下面的视频中注意到,有时候机器人看起来像是在来回摇晃。这是由算法的振荡引起的,因为机器人超过了这条线。解决这个问题的一种方法是使用PID(比例-积分-导数)算法。在坚果壳中,这种类型的算法跟踪机器人的位置(积分),它可能要去的地方(导数),以及它目前的位置(比例)。我实现的算法只关心机器人当前的情况。如果你想要一个更快的机器人,你可能需要移除减慢机器人速度的振荡(过度校正)。

#include "robot.h" #define ROBOT_SPEED 100 void setup() {Serial.begin(38400);以“引导”);rbt_init ();延迟(5000);} uint16_t lleft、lmid lright;布尔wleft wmid,怀特;void loop() {rbt_sns(&lleft,&lmid,& light,&wleft,&wmid,&wright);系列。打印(“左:”);并同时lleft); Serial.print("Mid: "); Serial.print(lmid); Serial.print("Right: "); Serial.println(lright); //off the line if(lleft == 1000 && lmid == 1000 && lright == 1000){ rbt_move(BRAKE,0); } //follow track else{ if(lleft > lmid && lleft > lright){ rbt_move(LEFT,ROBOT_SPEED); } if(lmid > lleft && lmid > lright){ rbt_move(FWD,ROBOT_SPEED); } if(lright > lmid && lright > lleft){ rbt_move(RIGHT,ROBOT_SPEED); } } }

line_follower.zip

跟着一条线!

结论

在本文中,我展示了编写控制算法来遵循直线的过程。线跟随器是学习控制理论和观看机器人完全自主导航的一种整洁的方式!在下一篇文章中,我将让机器人绕着地板导航,避免撞到障碍物和墙壁。

下一篇文章:建造你自己的机器人——避开障碍