雷竞技注册
项目

如何制造机器人-避开障碍物

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

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

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

相关文章

如何制造机器人:

第1部分:设计和原理图

第2部分:PCB设计

第3部分:测试硬件

第4部分:行追随者

第6部分:沿墙走机器人

概述

我认为这将是灵巧的创造一个机器人,很容易与一个焊接烙铁组装,也负担得起。我对我的机器人的要求如下:

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

在本文中,我将讨论如何为机器人编程以避开障碍物。

避免障碍

我要采取的方法是,如果在机器人的路径上检测到障碍物,机器人会后退并尝试一个新的方向。这使得机器人在探索区域时不会卡住或损坏自己。在这个机器人中使用的传感器只给出二进制输出。换句话说,要么有什么阻碍,要么没有。该传感器也有一个相当大的接收角度,所以稍微偏离一边的物体也可能被检测到。这就限制了算法的复杂性。如果你有一个传感器可以可靠地测量到一个物体的距离,你就可以计算出你是否有足够的转弯半径来避开而不后退。

我所决定的算法将告诉机器人,如果检测到障碍物,后退1秒。然后它会随机向左或向右转弯,试图避开障碍物。当向左或向右转弯时,它会继续检查路上的障碍物。如果它检测到障碍物,它将停止转弯,并重复反向/转弯循环,直到摆脱障碍物。

编程

下面的草图执行了逻辑:

  1. 启动机器人驱动程序,等待5秒。这样你就有时间在机器人开始移动之前把它放到你想要的位置。
  2. 前进。
  3. 如果中间的传感器被激活,反转1秒。
  4. 随机选择左或右。
  5. 在中间传感器未被激活时,旋转1秒。
  6. 如果中间传感器被激活,请转步骤3。
  7. 如果传感器未激活,请转步骤2。
#include "robot.h" void setup() {Serial.begin(38400);以“引导”);rbt_init ();延迟(5000);rbt_move(前轮驱动,100);} uint16_t lleft、lmid lright;布尔wleft wmid,怀特;uint16_t avoid_count = 0;Void loop() {rbt_sns(&lleft,&lmid,&lright,&wleft,&wmid,&wright);/*如果有东西在路上,并尝试改变方向*/如果(wmid) {rbt_move(REV,100); delay(1000); /*choose a direction at random to avoid an obstacle*/ if(random(10)>5) { rbt_move(LEFT,100); avoid_count=1000; while(avoid_count){ delay(1); rbt_sns(&lleft,&lmid,&lright,&wleft,&wmid,&wright); if(wmid) break; } } else { rbt_move(RIGHT,100); avoid_count=1000; while(avoid_count){ avoid_count--; rbt_sns(&lleft,&lmid,&lright,&wleft,&wmid,&wright); if(wmid) break; } } rbt_move(FWD,100); } }

避免障碍!

结论

在本文中,我展示了如何使用传感器避开机器人的障碍物。在自动驾驶汽车中,避障是避免破坏环境或机器人本身的重要手段。这款机器人的一个重要补充是尾部的传感器,以便倒车时避开障碍物。在下一篇文章中,我将利用侧边传感器来制作“跟随墙”。

系列的下一篇文章:如何建立一个wall - follow - up机器人

Obstacle_Avoidance_Robot.zip

2的评论
  • N
    nmsr1196 2015年11月28日

    非常好的项目。你用的是哪种传感器?我在视频里看不清楚。我没有看到“Robot.h”库的链接。

    喜欢的。 回复
  • N
    nmsr1196 2015年12月01日

    你能提供一个“Robot.h”库的下载链接吗?

    喜欢的。 回复