快捷搜索: 王者荣耀 脱发

巡线小车学习笔记(arduino 四路循迹)

巡线小车代码学习笔记

红外布局原理

中间两路巡线一直在黑线上,小车会直行,当任意一个出来,小车会自动纠正。如果最外面的检测到黑线。则小车以更大速度纠正到黑线上去。在算法上,优先处理锐角,直角等外围传感器检测到黑线的状况

目前进度:无PID算法之路况已得全套 具体见PPT且补充只有左边或者右边探得线之况

遗留问题:此套路况分析适用于含PID算法之程序否?

解决方式:进一步探究用和不用PID算法的得到的误差值对电机速度的控制的异同

所得结论:用PID算法者,误差的大小(偏差程度)正负(方向)皆有意义,经过PID系数的运算后直接加到PWM波的输出当中去 不用PID算法者,误差值没有物理意义,只起情况的标记作用,将不同的情况对应到不同的函数中去,且不同的函数中轮子的转速值也已经调成固定值。

目前PPT改动:1.只去对称部分 2.右直角和右斜向上锐角与极右偏情况分列出来,前者采取固定函数,后者使用偏差值更大的PID

小车初始参数值 初始电机速度:60 (阈值-250~250) 初始PID参数: kp=10 ki=0.5 kd=0

电路实测区域结果

实测结果记录

*红外:(原理:模块对白色可检测到的距离要大于黑色的距离。故将红外的检测距离调整到黑色无反射值但白色有的区间之内,有黑线处为1) *舵机:舵机函数可通过一一对应的数值来调整舵机转动的角度 *马达:只要正输入不为零,负电平为零,无论是正是负,都会正转。但同样的数值,负输入会比正输入转动的快很多,惑矣。同样输入不为零,正电平为零,都会反转。

红外避障模块

物理实测部分 VCC–5V GND–5V OUT–(A0~A5 or 0-13任选一个) 只要接通电源,电源指示灯会亮起 若其前有障碍物,另外一边的输出指示也会亮。 中间骑线两模块在无障碍物的情况下不会相互干扰,即无障碍物的情况下二者的输出皆不亮。

串口监视电平输出部分 (1.在Arduino IDE 中通过串口监视器来获取程序在板子上运行过程中的实时数,调用与串口相关的任意函数之前都需要在setup函数中初始化波特率,一般想要获取模块中某一部分输出电压或者其余数据只需要 begin 和 printfln两个函数足矣。 2.红外避障模块输出端输出的是数字电平

问题

①PS2手柄的接入

② 考虑将出发和停止的操作基于手柄来完成,以此避免和十字路口产生混淆,抑或十字路口和T型路口在检测到之后再进一步检测其后有无延申

③直角弯和锐角弯再进一步细化程序,目前想法检测到之后转一定的角度(采用延时)再进一步检测其后路况。

经验分享 程序员 微信小程序 职场和发展