一起玩儿物联网人工智能小车(ESP32)——33. 利用超声波传感器和舵机实现自动避障小车(一)

发布时间:2024年01月13日

摘要:本文介绍如何使用超声波传感器和舵机实现小车的自动避障功能

智能小车之所以冠以“智能”的标签,就是因为它不应该是一个只能朝前行走的小车,而是要能够自主“决策”该怎么走,可以按照事先既定的规则,自主的行走。而实现自主行走的前提是要能“感知”周边的世界,根据周边世界的变化,做出下一步的行走决策。

从今天开始,就来借助超声波传感器实现一个可以自动躲避障碍物的智能小车。在前面的文章中已经介绍了超声波传感器,这个传感器的作用是可以测量前边障碍物与传感器之间的距离,本节正式利用了这个功能。但是,仅有这个功能还是不够的,还需要利用之前学习的舵机来控制超声波传感器的方向,这样就可以判断出周边各个方向障碍物的距离了。

使用超声波传感器来识别障碍物的距离,只是实现避障小车的一种方法。这种方法也有着其自身的缺点,就是当小车的超声波传感器与障碍物的反射面的夹角小于45度的时候,测量距离的功能就不那么灵敏了,这就导致小车会出现判断错误的情况。同样的,如果障碍物的反射面过小,也会导致无法获得足够的反射声波而无法得到正确的障碍物距离。这两点在布置测量环境和调试小车的过程中要特别的注意。

针对以上的缺陷,除了在程序上进行一些响应的容错处理外,后边也会增加一些其他的传感器来辅助避障功能的实现,例如常用的红外传感器、激光测距传感器等。

下面就来总结一下智能避障小车的基本原理。首先,利用安装在车头的超声波传感器测量前方障碍物的距离,如果距离大于停止距离,那么就驱动小车向前行走,在行走的同时,不断的测量前方障碍物的距离,一旦与前方障碍物的距离小于停车距离,那么立刻停止小车的运动,然后再测量左右两侧障碍物的距离,然后转向距离远的一侧继续行走,并重复之前的测量前方障碍物的动作,直至距离前方障碍物的距离小于了停止距离……周而复始,小车就可以按照这个简单的原则实现自动避障行驶了。

下面先来看一下这个自动避障小车所需要的材料:

材料

说明

小车底盘

带TT电机的玩具小车。可以是之前所作的麦克纳姆轮的四轮小车,也可以是其他形式的小车,要求能够控制前后行驶及转向。

电池

为小车提供动力

电机驱动模块

可以使用前边介绍过的L298N或者其他类似功能的模块

ESP32开发板

还是采用开发板加扩展版的组合

舵机

180度小型舵机——MG90S

超声波模块及支架

带舵机支架的超声波模块

小车的基本组装方法和注意事项在前面都介绍过了,这里就不在赘述了。需要注意的就是舵机和超声波支架要装在小车的头部正中央,并在舵机的90度位置时,超声波传感器朝向正前方,这样在舵机的0度和180度的位置时,超声波传感器分别朝向左侧和右侧。

超声波舵机云台有很多,下图为常见的几种,根据自己的喜好选择就可以了。

接下来看一下各个功能模块的连接方法。下表为这次实现的小车各个模块的连接方法。如果使用不同的GPIO引脚,那么在后边开发程序的时候,要记得将程序做相应的修改。

模块

引脚

连接对象

L298N模块

IN1

ESP32的P18

IN2

ESP32的P23

IN3

ESP32的P32

IN4

ESP32的P33

OUT1、OUT2

右前轮TT电动机

OUT3、OUT4

左前轮TT电动机

+12V

电池的正极

GND

电池的负极和ESP32的GND(分别连接)

+5V

ESP32的+5V(开发时不需要连接,运行时连接)

舵机

PWM信号线

ESP32的P19

+5V

ESP32的+5V

GND

ESP32的GND

超声波模块

Vcc

ESP32的+5V

Trig

ESP32的P25

Echo

ESP32的P26

GND

ESP32的GND

需要说明一下,在这个实验中,本人并没有选用之前四轮驱动的麦克纳姆轮的小车,而是选用了一个2轮驱动的3轮小车,之所以选择这个小车是应为2轮相对于麦克纳姆轮小车来说驱动起来更容易些,调试起来也简单。在调试的时候,多些耐心,麦克纳姆轮小车一样可以实现自动避障的功能。

制作完成,并且接好导线的小车如下图所示:

好了,小车已经组装好了。接下来就该进行程序设计,实现功能了。

文章来源:https://blog.csdn.net/qq_16601363/article/details/135540855
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。