我是靠谱客的博主 欢呼摩托,最近开发中收集的这篇文章主要介绍智能车入门——实现低速完赛<新手从零做车>,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

这仅能使车以极慢的速度完成全元素任务


前提条件:能够

舵机打角

电机任意转速转动

读取电感前瞻获取到的值

屏幕显示

数据存储与读取

按键菜单

会更好:

陀螺仪数值读取

激光测距

干簧管/霍尔检测

编码器数据读取

速度闭环


在初始化里放各器件及函数的初始化


在中断里

	
		Cnt++; 
        KeyScanInt();
		Beep_IntCnt();
		Car_Protect();	
  //--------------------------电磁处理和元素判断-------------------------------//
		TOFGetData();//获取激光测距的值
		Inductor_deal();//获取前瞻电感值及滤波归一化等
		Ele_judge();//元素识别与识别后的处理
  //----------------------------陀螺仪数值获取---------------------------------//
	if(Cnt% 5== 0 ) {
		ICM20602DataFilter();//陀螺仪获取数据
		ICM_I_Int();//陀螺仪积分
	}
	
	if(!StartCar){
  //-------------------------------方向控制------------------------------------//
	if(Cnt% 5== 0) {
		DirectionControl();//舵机打角
	}
  //-------------------------------速度控制------------------------------------//
		ExSpeedControl();//顺序不能错
		DiffSpeedControl();
		SpeedControl();//电机控制
	}

对于元素判断

在车速很低的情况下

可以用模板匹配:

在发车前,手动采集元素入口的电感值

(用eeprom配合按键菜单,存储各个电感的值,标记为该元素)

还可以加上激光测距等辅助条件

#define value 1234

if (sqr(LNow[0]-Lreserve[0])+sqr(LNow[1]-Lreserve[1])+sqr(LNow[2]-Lreserve[2])+sqr(LNow[3]-Lreserve[3])+sqr(LNow[4]-Lreserve[4])+sqr(LNow[5]-Lreserve[5])+sqr(LNow[6]-Lreserve[6])+sqr(LNow[7]-Lreserve[7])
<=value)
{
fork_flag=1;
fork_state=1;
}

元素处理

判到元素之后,设置舵机及电机的变化

最后

以上就是欢呼摩托为你收集整理的智能车入门——实现低速完赛<新手从零做车>的全部内容,希望文章能够帮你解决智能车入门——实现低速完赛<新手从零做车>所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部