用labview编程智能循迹小车的程序思路

用labview编程智能循迹小车的程序思路,第1张

胶带的宽度一定的话:

四个传感器一字排列的情况最简单:

按1234号传感器命名,照在胶带上状态位为A,否则为a.

直线正常行走时,23号持续为A,14号持续为a.

分析开始右转的逻辑:

2号变a,继续直线行走,直到4号变A,根据24号间的距离和小车在这段时间内行驶的距离计算出转动角度(这就是动态平面几何问题了,自己画图解一下,注意转弯时候前后中心点的轨迹,胶带宽度是关键,得到的角度不会也不必太精确。这里我只讨论逻辑),然后以比计算结果稍大(目的是确保能让2恢复滑茄状态A)的转动角度开始转弯,等到2和3都恢复状态A,小车变回直线行走,等到2号重新变a,小车再恢复到原先的转动角度……后面一直循环就行了

直线上如果车子前进方向倾斜,和转弯一样,下面以车子向右倾斜为例分析:

会出现3号变a的情况,继续保持直线行走,直到1号变A,计算出小车在这个过程中行进距离,结合胶带宽度,弯让厅1和3号间的距离,就可以算出偏离的角度然后决定转动角度。后面具体调整和过弯道一样。

然后我来吐槽为什么要用labview,你是想着拿着笔记本进行无线 *** 控么 - -,嵌入式的labview编程现在还不埋隐成熟好吧~

简单的蔽数写的话不会区别偏离黑线距离远近的,复杂点儿的话会分区编程,简单版如下:

void turn_left()

{

P1.0 = 0 //左宏培首前轮

P1.1 = 1 //右前轮

P1.2 = 0 //左后轮

P1.3 = 1 //右后轮

}

... ...

unsigned char judge()

{

switch(P2 &0x??)

case 0x??:

{

break

}

... ...

return 某变量(用于中链选择拐弯方向程序)

}

转弯比较简单,就是一个轮转,另一个不转达到转弯目的,你也可以用速度高低来控制,自己DIY就行。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12476595.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存