本帖最后由 Kevin的小小罗 于 2017-10-30 19:21 编辑
Hi,大家好!我报名的RBF机器人比赛,也就是在图1的路径中让小车从起点跑到终点,途中要完成对物体的识别并搬运(未实现)。在设计过程中,我联想到了运动场的跑道,跑道线可以用来引导机器人行进,由此可以做一个简易的陪跑小车,陪跑小车可以让人们跑步时不再孤单,运动员可以在训练时有一个参考物,让训练更高效。陪跑小车需要实现的最主要两个功能便是巡线和避障,该小车的创新点便在于能够实现寻线和避障之间的灵活切换 。
小车用的是kittenbot的两轮小车,主控板是RosBot,它将arduino主控板和电机驱动板、传感器扩展板三合一结合起来,非常方便于各种功能小车的制作。
图1
图2
跑道看似简单,由于水平所限,在实际的调试过程中还是遇到了各种问题。赛道最明显的特点就是寻线(黑线)和避障(蓝色部分是墙体)交叉出现,所以小车必须能在巡线和避障之间从容切换。
我的思路是“有线寻线,无线避障”,流程图如图2所示。在实际调试中,判断是否检测到黑线需要设定一个阈值范围,因为小车在巡线过程中,同样会有短时间内检测不到黑线的情况,设定阈值范围可以减少误操作。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/203135llq12bzb21b61jfk.png
图3和图4是组装起来的小车模型,采用kittenbot的五路巡线模块进行巡线;kittenbot五路寻线模块与一般的寻线模块有所不同,它的检测值为模拟量,而不是数字量0/1,检测灵敏度更高,适于寻线。
采用超声波模块进行避障,但在调试中发现,只用超声波模块进行避障效果并不好,建议采用红外避障模块和超声波模块同时检测障碍物。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(1).png
图3
图4
小车采用PID算法控制,在一个闭环系统里,对输入量进行比例、积分、微分运算,然后相加,输出量就是小车速度。闭环系统的优点就是有反馈,可以知道输出的状态是怎样的,与开环控制相比控制更加准确。
编写程序过程中,在用servo库编写舵机运动程序时,发现舵机与电机发生冲突,使小车一侧电机不能动了,分析之后得出servo库与PWM调速有一些冲突,所以在同时使用舵机和电机时,不要使用servo库,需要自己编写一个舵机运动函数。
源代码:
[url=]xunxianbizhang.zip[/url]
视频网址:http://v.youku.com/v_show/id_XMz ... j.8428770.3416059.1
|