当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]简而言之,这个机器人会在20-50厘米范围内跟踪任何靠近它的物体;如果未发现目标,它会先使用超声波模块在左右两侧寻找丢失的物品。若再次无果,则转向右方,尝试锁定附近的目标物体。我希望能进一步改进,比如让车辆学会绕过障碍物的驾驶方式,但目前只要能在某些情况下找到物体,我就已经感到满意了。

简而言之,这个机器人会在20-50厘米范围内跟踪任何靠近它的物体;如果未发现目标,它会先使用超声波模块在左右两侧寻找丢失的物品。若再次无果,则转向右方,尝试锁定附近的目标物体。我希望能进一步改进,比如让车辆学会绕过障碍物的驾驶方式,但目前只要能在某些情况下找到物体,我就已经感到满意了。

通过这些信息,我们可以指导机器人相应地转向,从而避免丢失目标物体。我不确定是否已有类似装置被制造出来,我只是想对智能汽车制造商提供的示例代码进行调整。我之前使用声呐传感器的方式导致了信号干扰问题(我确信是时序问题),幸运的是我已经解决了这个问题。

你需要什么

对于这个项目,我们只需要一个四轮机器人、合适的电机驱动器、一块Arduino Uno板、一个微型舵机以及一个HC-SR04超声波传感器。

使用现成的底盘可以快速搭建出一个可运行的模型。如果你购买了包含底盘、车轮、电机及其他机械部件的“Robot Smart Car Kit”套件,那么在组装机器人时,我们只需添加少量额外的电子元件来控制电机并检测障碍物即可。整个电子设计均基于Arduino Uno完成。

最后,我们再连接电池和充电器,为机器人供电,所有设备就准备就绪,可以开始使用了。

制作底盘

超声波传感器SRF05的工作原理是什么?

这是一个非常简单且实用的超声波传感器,其测距范围为2-450厘米,测量精度高达0.2厘米。该传感器有四个引脚用于与之接口连接:VCC(电源正极)、Trig(触发信号输出引脚)、Echo(回波信号输入引脚)和GND(地线)。

在光滑平整的表面上进行反射时,可以获得最佳的测量效果。在最远1米的距离内,表面材质对测量结果影响较小。在短距离范围内,传感器与物体之间的角度可小于1米,约为45°。即使非常细小的物体也能可靠检测到。在最大距离3米时,需精确对准目标,且在15°的发射锥内不应有其他物体处于相近距离。

为实现传感器旋转,可使用微型伺服电机,从而能够监控整个房间前方区域。图中展示了传感器以直角(90°)和65°、115°(粉红和灰色区域)安装时覆盖的房间情况。

我们的机器人会尽量保持在目标物体后方20厘米的位置,并根据目标位置前后移动。若一侧比另一侧远出三厘米,机器人将朝该方向转向,以遵循预测路径。

如果物体检测范围限制在0.5米以内,且考虑到近距离(小于1米)时物体的角度约为45°,那么机器人车前的空间便能被良好监控。如图所示,当超声波传感器以55°(左侧)角度定位时,监控范围从32.5°至77.5°;而115°(右侧)时,监控范围也类似,整个房间的监控角度超过120°。

在物体搜索过程中,超声波传感器可分别向左旋转10°、向右旋转170°,此时覆盖的范围接近210°。若要进行更广的物体搜索,需将机器人车转向以使目标物体进入视野。一旦物体进入视线,机器人车必须保持与物体一定距离,我将其设定为一个固定值。通常距离设为30厘米(NOMDISTANCE = 30),最小距离设定为20厘米(MINDISTANCE = 20),危险距离则定为约10厘米(CRITDISTANCE = 10)。同时,半径50厘米内的空间被监控(MAXDISTANCE = 50)。

以上仅能满足物体跟踪的需求,但尚不足以实现物体识别。此外,机器人车对周围环境缺乏感知,因此无法避开障碍物。当然,也可以先通过环境程序学习并显示房间图像,但随后朝向物体方向的定位仍不够精确,因为这取决于地面面积。

使用摄像头可以解决这一问题,但这属于我们下一期教程的主题内容。

代码

我们的机器人可以执行四种动作:

• 前进

• 向左

• 向右

• 停止

流程图和程序

根据这些功能,我编写了以下子程序:

保持距离:使机器人与物体之间的距离保持在20至30厘米之间。如果物体太远,机器人向前移动;如果过近,则向后移动。

跟随物体:检测前方房间内的物体。

搜索物体:当视线中没有物体时,开始搜索。仅在前厅边缘(传感器位置10°和170°)进行搜索,若未找到则继续绕行搜索。

我已为你准备了Arduino程序示例(所有代码均可在GitHub上获取)。该程序使机器人能够自主地跟随物体移动。

“跟随我”程序包含“保持距离”部分,其他子程序将在此基础上调用,如图所示。

const int nomDistance=30, minDistance=20, maxDistance=50, kritDistance=10;

int distance;

如果你想搜索最近的物体,需对“物体搜索”程序做出相应修改,但在实际应用中这可能会导致程序运行变慢。

物体搜索程序中的对应修改已在图中展示。你也可以从距离最远的点开始,而不是探索所有物体,直到最接近的距离。一个简单的程序更容易集成到更复杂、更大的程序中。

最后

附带的程序可用于测试带有传感器和执行器的“跟随我”程序。但如果您希望自行控制机器人,可使用现成的程序,进行相应修改后直接上传到您的机器人上。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭