查看: 732|回复: 2

Nano智能小车之自动避障版

[复制链接]

6

主题

12

帖子

123

积分

注册会员

Rank: 2

积分
123
发表于 2020-3-12 22:33:07 | 显示全部楼层 |阅读模式
本帖最后由 ngxxczlwh 于 2020-3-12 22:36 编辑

先上一个小视频,Nano自动避障智能小车跑起来是这样的

B站小视频


0.功能简介:
<0>自动行驶
<1>自动避障

1.硬件组成:
<0>小车底盘
<1>Nano主板
<2>L298N电机驱动板
<3>超声波传感器
<4>舵机
<5>锂电池及电池盒
<6>面包板
<7>线材

传感器模块选用了HC-SR04超声波传感器。相对于红外传感器,超声波传感器的精度要高,受环境光线的影响也小。因此选择了超声波传感器作为小车的“眼睛”。
调试程序时,为了能读取超声波传感器的测量值,我另外还加了一块OLED显示屏(屏小了,但只有它了,将就用了),及时显示出距离值。

2.程序设计
有了上次制作遥控小车的经验,这次制作自动避障小车就驾轻就熟了。先编写基础的功能模块,需要被其他模块调用的函数先写,被调用的模块放在上方。
<0>基础模块
基础模块主要实现小车的基本控制,比如:前进、后退、停止、左转、右转。这里使用了PWM来控制车速,并定义了一个变量speed用于控制小车速度。
前进.png
【前进】
后退.png
【后退】
停止.png
【停止】
左转.png
【左转】
右转.png
【右转】

<1>主程序
    (0)初始化模块
             初始化.png
        初始化模块里定义了一些变量用于存放各种数值。
        speed:车速;turn_delaytime:小车转向时的马达工作时间;front_distance:超声波探测到的前方障碍物距离;
        left_distance:超声波探测到的左边障碍物距离;right_distance:超声波探测到的左边障碍物距离;
        collide_distance:设定的碰撞安全距离。小车与前方障碍物的距离小于这个距离时,小车要停下来。
        status_car:小车的状态。用于记录小车是不是在前进,布尔型,1表示为小车在前进。
        最后,初始化一下舵机。
    (1)主循环
             主循环.png
        主循环很简单。
        首先判断小车是不是在前进,如果不是则让小车前进并改变状态变量status_car的值(取反);
        读取超声波探测的障碍物距离,并赋值给front_distance;
        如果front_distance的值小于给定的安全距离(collide_distance)则改变状态变量status_car的值(取反),并调用avoidance模块,执行避障指令。
<2>避障模块(avoidance模块)
避障.png
进入避障模块,首先把小车停下;
然后左、右、前三个方向探测障碍物的距离,分别赋值给left_distance、right_distance、front_distance三个变量,并调用display_distance函数将距离的数值在OLED屏上显示出来,便于调试;
然后是个判断,如果左边障碍物的距离大于前面和右边的,则让小车左转;如果右边的障碍物的距离大于前面和左边的,则让小车右转;如果前方障碍物的距离大于左边和右边的,而且小于安全距离(小车可能进入了死胡同),则让小车倒车后再左转。
最后,附上OLED屏显示距离的模块
display.png
至此,完毕。

待改进的地方:
1.有时前面没有障碍物,小车会无缘无故的停下。可能原因:超声波精度不足,或是受到什么干扰。


显示.png
回复

使用道具 举报

6

主题

12

帖子

123

积分

注册会员

Rank: 2

积分
123
 楼主| 发表于 2020-3-12 22:35:11 | 显示全部楼层
开头插入了一个B站视频,怎么不行,不能播放。
等会直接插入一个链接吧。
回复

使用道具 举报

6

主题

12

帖子

123

积分

注册会员

Rank: 2

积分
123
 楼主| 发表于 2020-3-12 22:39:09 | 显示全部楼层
下一步,想整一个声控的小车。
不知道有什么声控的模块好用的,还请大家不吝赐教哈
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|好好搭搭在线 ( © 好好搭搭在线 浙ICP备19030393号-1 )

GMT+8, 2024-4-18 10:47 , Processed in 0.333211 second(s), 25 queries .

Powered by Discuz!

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表