【KittenBot信息科技案例】利用激光测距模块,实现车辆自适应巡航(附源程序)

[复制链接]
43 |1
rmq 发表于 5 天前 | 显示全部楼层 |阅读模式
本帖最后由 rmq 于 2025-1-4 16:42 编辑

【导语】
在之前的倒车报警案例中,我们使用了喵家智能驾驶汽车的超声波模块实现了倒车报警装置。这次我们结合车头的激光测距模块来实现两辆小车的自适应巡航功能,一起来看看如何制作吧~
1.gif
【材料准备】
2.png
【功能概述】
结合小车自身的结构,两辆小车需要实现定速巡航,可以将功能分为两个部分来考虑:
一个是巡线行驶;
另一个是后方车辆根据激光测距模块的距离来调整车速,使其保持相对恒定的行驶速度。
004.png
【编程软件使用】
            Kittenblock1.89 点击进入在线编程
【前期准备】
小车接线&拼搭:
这次案例包含巡线+激光测距功能,所以图纸中出现的超声波模块可以忽略,可以看到小车的左轮接M2接口,右轮接M1接口,左侧灰度模块接port3接口,右侧灰度模块接port1接口。(具体的拼装过程可以参考套件说明书,这里不展示细节,两辆小车的接线皆是如此)
5.png
地图:
为了巡线方便我没有用巡线胶带贴一条巡线路径,而是直接从公司随便找了一份现成的地图,可以看到地图上的线是白色的,与常见的黑色不同,这个在实际编程中需要特别注意。
6.jpg
【程序编写】
由于有两辆小车一前一后行驶,我们将前面的小车称为领航小车,后面的小车称为尾随小车。先来看看领航小车程序。
【领航小车程序】
由于程序比较简单,这里会讲的快一些。使用未来板Lite巡线时不要用屏幕显示任何内容,因为会降低程序的运行速度从而导致巡线效果变差。在初始化程序中对屏幕清屏并有一个简短的提示音,按下A键后开始运行主程序。
主程序阶段我们先创建3个变量分别存储右侧、左侧的灰度值以及激光测距的距离。这里的距离我用限制积木把数值限制在了0-100以防止距离过大而产生异常问题。程序如下:
6.png
由于两辆小车均配有激光测距模块,如果领航小车的激光测距模块检测到障碍物,它会自动停下并发出警报,否则执行巡线程序。这里我把巡线程序先用【小车前进】函数封装起来 。
7.png
最后是小车的巡线程序,这部分内容和先前的流程图一样,转弯采用原地转弯的方式,到此领航程序已完成。
8.png
【尾随小车激光测距】
这里的程序在编写前需要测量激光测距的真实距离。可以看到,当完全挡住模块时,返回的数值不为0,而是15左右,这个数值需要提前测量出来。测试程序和效果如图:
blocksPng-1735803261749.png 测距测试做动图 00_00_00-00_00_30.gif

【尾随小车程序】
测出来之后开始编写程序,大部分内容和领航小车是相似的,而在主程序的【激光测距】变量的范围被限制在了20-60毫米,【行驶速度】被映射在了0-60。这里的意思是速度随距离的减小而减小,随距离的增大而增大。
注意这里尾随小车的最高的速度比领航小车要快,因为这样才能体现车辆的定速巡航。小车巡线相关程序封装在了【小车前进】函数中。

11.png

最后尾随小车的巡线程序,这里的【小车前进】函数的速度由【行驶速度】变量决定,其余部分基本和领航小车相同。到此所有程序结束。
13.png

【程序下载】
在本贴下方进行回复即可获取源程序
游客,如果您要查看本帖隐藏内容请回复



【功能演示】




微笑冒险12 发表于 5 天前 | 显示全部楼层
沙发
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门版块
快速回复 返回顶部 返回列表