雷竞技注册
项目

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

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

本系列文章的第4部分将介绍如何制造可以沿着直线或墙壁行走并避开障碍物的机器人!

本系列文章的第4部分将介绍如何制造可以沿着直线或墙壁行走并避开障碍物的机器人!

相关文章

如何制造机器人:

第1部分:设计和原理图

第2部分:PCB设计

第3部分:测试硬件

第5部分:避免障碍

第6部分:沿墙走机器人

概述

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

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

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

遵循一条线吗?

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

机器人在队列的左边吗?向右转机器人在这条线的右边吗?向左转机器人在线上吗?前进

找到合适的表面

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

编写的程序

下面的代码首先初始化机器人驱动程序,然后等待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,&lright,&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

跟着一条线!

结论

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

系列的下一篇文章:建造你自己的机器人-避免障碍物