虚拟机器人(巡线竞速)

        前段时间搞了几天的虚拟机器人比赛,略有心得,分享一下(“不知道”什么原因,我没找到什么这方面的教程,所以抛砖引玉一下)。这是个什么东东呢?就是一个在赛道上有一些交通标识和突发事件,例如:红绿黄灯,靠边减速通行,靠边等待灯等,就是上路能遇到的一些简单情况。之前DIY过平衡车,然后还没做完就被拿走了,再也没回来……所以这个项目看起来并不难,而且使用的是“积木”“编程”,首先学了一下怎么积木编程,恕我愚昧,搞了好几个小时差点把软件给拆了才略懂一二。毕竟是第一次指导学生参加,而且时间紧迫,那就现学现卖(基于只有AI视觉模块,它提供了距离左侧马路牙子、右侧马路牙子、前两者之差、交通标志的识别结果)。先放个图好让大家决定是不是有看下去的必要:

一、要处理的内容

1、直行:这个东西也不是有手就行,保持路中央行走容易,但各种弯道、转弯之后怎么瞄准呢?总不能对路大喊一声:你别动!

2、转弯:这个东西有手就行,差速么,差多少,差多久呢……

3、交通标志、事件:这个挺烦人的,AI识别结果很远就能看见,但是减速、停止等不是看到马上就执行的,还需要往前走一块,有些情况需要按时间。

        既然是竞速么,那么从设计之初自然是按照100%的速度设计;看了一眼评分标准,完成任务更重要,好多时间才1分,但本着大家都是高手的假想,只能硬着头皮让速度更快一些。

二、模式定位

        这个巡线,说起来非常简单,包括官网的教程,就根据左右偏差调整速度就能行。我不想说low,但这鲁棒性有点差,虽然为了学生能快速记住模板,精简了非常多的处理,但鲁棒性也一定比直接处理好,代码也比直接处理少。

1、PID:说的挺吓人的,其实这个东西用不上PID,甚至D都给省了,只剩下P——和直接差速一样?不一样的,写成函数可以随便靠哪个边不是吗?

2、道路识别:总的来说就四种情况——无岔路、左岔路、右岔路、左右岔路。但是这需要读AI,然后判断,开始写了个低通滤波,哎我去,最后去了——还不如不滤。

3、具体转弯控制:最后发现这个还是必要的,前面已经说了,这玩意不是看见灯或者事件就马上执行的,而且有些减速它不是直道。

三、核心函数

        虽然这个软件的数组(这么叫可能不太合适,积木块是用python显示的代码结果——而且也是不能直接写代码出来积木的- -!!!)不能用,但函数还是没问题的。所以构建一些函数然后让学生记住就可以了:

1、PID:按给定的最高速度、偏差对小车进行PID控制以保障其沿着道路前进。

2、道路状态:如上所述,只需要设置一个全局变量(函数不允许返回值,差评!)记录判定结果:左=1、右=2、左右=3。

3、转弯控制:PIDByTime;按时间100%速度前进然后差速一定时间之类的。本来打算写一个函数计算一下它这个车到底走了多少,不过建模之后发现,呵呵吧,这玩意写完了根本不用打算学生能记住。

        说起来没多少,但实际上真的用了好几天才把这些积木和K值确定下来,给自己找的理由是拖拽积木太不顺手了^ ^。但是有了核心代码,上面这图也就用二三十块块积木就完成了。多数路口太单纯,一个PID过去走好远都不用管的,但是侧方等待就很烦,需要四五行积木才能完成。

就这,这篇就是这么水,希望下星期比赛学生们不要弄得太难看。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清晨曦月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值