首页 > 其他分享 >2024年电赛H题--自动行驶小车思路分享

2024年电赛H题--自动行驶小车思路分享

时间:2024-08-04 15:59:45浏览次数:8  
标签:APwm 电赛 -- 小车 代码 2024 int BPwm void

题目
9187b07edca34322a2192830f28722c4.png

第一问:

按照题目要求,小车从A点走到B点,实际上就是走固定直线,可以衍生出以下几种方案,声光提示想必大家都会,这里不做赘述

方案一:速度环+位置环

原理:

利用速度环来控制两个轮子编码器数值(速度)一致,因此可以控制小车方向,利用位置环控制小车路程长短,使小车移动固定距离,但此方案属于开环方案

代码:

这里分享最简单的速度环+位置环代码

/*
	第一个参数为电机1目标编码器值
  第二个参数为电机2目标编码器值
	总编码器脉冲值
 */
void speed(int a,int b,int number)
{
	float Kp=0,Ki=1;	//设置参数根据现象调整,也可以设置两个KP,KI值+KD
	static int A,APwm,Last_A;
	static int B,BPwm,Last_B;
	
	while(abs(move)<number)//编码器脉冲绝对值
	{
		A=read1-a;    
		APwm+=Kp*(A-Last_A)+Ki*A;   
		Last_A=A;


		B=read2-b;
		BPwm+=Kp*(B-Last_B)+Ki*B;   
		Last_B=B;

//		OLED_Float(4,1,move,2);//显示

		limit(&APwm,&BPwm);//PWM限幅
		delay_ms(2);		//加延时,不然驱动会发烫
		load(APwm,BPwm);//加载PWM
	}
	load(0,0);//停止
	
	A=0;APwm=0;Last_A=0;
	B=0;BPwm=0;Last_B=0;
	
	move=0;//归0
	lenth=0;//归0
	
	stop();
	delay_ms(1000);
}

方案二:角度环+位置环

原理:

利用陀螺仪角度来设计角度环来控制控制小车方向,使小车方向稳定,利用位置环控制小车路程长短,使小车移动固定距离

代码:

这里分享最简单的角度环+位置环代码

//角度环
int erect(void)
{
	static float Kp=120,Ki=0.5;	
	int PWM_out;
	
	mpu_dmp_get_data(&Pitch,&Roll,&Yaw);			//获取数据
	
	PWM_out=Kp*(Roll-Med_Angle)+Ki*(gyroy-0);//根据实际的方位角计算
	return PWM_out;
}
void angle(int number)
{
	static int APwm,BPwm;
	int ect;
	while(abs(move)<number)//位置环
	{
		ect=erect();//角度环
		
		APwm=ect+1200;//加载前进速度,也可加载速度环
		BPwm=-ect+1200;
		
		limit(&APwm,&BPwm);
		delay_ms(5);
		load(APwm,BPwm);
	}
	load(0,0);
	APwm=0;BPwm=0;
	
	move=0;
	lenth=0;
	
	stop();
	delay_ms(1000);
}

方案三:角度环+标志位反馈

原理:

在车头放一个红外传感器,当开始行驶后检测到黑线即到达环形区域停止(或再向前走一小段距离,使车头投影盖过顶点),即可实现闭环

代码:

这里分享最简单的角度环+标志位反馈代码

void angle2()
{
	static int APwm,BPwm;
	int ect;
	while(irget3()!=0)
	{
		ect=erect();//角度环
		
		APwm=ect+1200;//加载前进速度,也可加载速度环
		BPwm=-ect+1200;
		
		limit(&APwm,&BPwm);
		delay_ms(5);
		load(APwm,BPwm);
	}
	load(0,0);
	APwm=0;BPwm=0;
	
	move=0;
	lenth=0;
	
	stop();
	delay_ms(1000);
}

第二问:

原理:

在我看来第二问只是在第一问的基础上加上了弧形处理,按照题目要求不能用摄像头,所以在车头处安装两个红外,实现循线,当车头处没有黑线时,即红外标志位改变时,完成弧线行驶

方案:循迹闭环+标志位反馈

这里分享最简单的循迹代码

void xunji(void)
{	
	while(irget3()!=0)
	{
		if(irget2()==1&&irget1()==1)
		{
			load(1500,1500);//按照实际设计速度
		}
		if(irget1()==0&&irget2()==1)
		{
			load(1000,2000);//按照实际设计速度
		}
		if(irget1()==1&&irget2()==0)
		{
			load(2000,1000);//按照实际设计速度,也可闭环
		}
	}
	load(0,0);
	
	move=0;
	lenth=0;
	
	stop();
}

此代码只作为参考!参考!参考!!!!

不是说此代码在我的硬件上能跑,在你的硬件上就一定能跑,按照实际情况调试更改

本篇文章,是思路分享,不是帮你做一二问!!!

资料为STM32一二问代码和对应PCB板,需要资料私信我(可接指导(收费))

标签:APwm,电赛,--,小车,代码,2024,int,BPwm,void
From: https://blog.csdn.net/m0_63210745/article/details/140764261

相关文章

  • 超好玩洛谷小游戏大全,好玩到停不下来(用洛谷的人都必须要知道,程序猿、OIer必备)
    Game啊你颓废了快点这个<tuifei break>{\color{White}\colorbox{Pink}{<tuifeibreak>}}<tuifei b......
  • k8s RBAC权限控制
    前言在之前的文章中介绍了k8s如何生成一个完整的kubeconfig文件,单纯的生成kubeconfig文件,不对user或group进行权限绑定是无法访问k8s集群的,今天就介绍一下k8s中RBAC鉴权相关的内容RBAC介绍基于角色的权限控制,在k8s为了实现这种机制,RBACAPI声明了四种Kubernetes对象:R......
  • OpenAI Function Call大模型调用单个多个agent案例
    参考:https://platform.deepseek.com/api-docs/zh-cn/function_callinghttps://blog.csdn.net/qq_31095905/article/details/139143778https://blog.csdn.net/jacbo/article/details/136278619##官方案例https://cookbook.openai.com/examples/how_to_call_functions_wi......
  • lammps模拟——FCC晶体中的ISF,ESF,twin转变
    在FCC(面心立方)晶体中,ISF(本征堆垛层错,IntrinsicStackingFault)、ESF(外禀堆垛层错,ExtrinsicStackingFault)以及twin(孪晶)转变是材料科学中重要的概念,它们的形成通常与晶体生长过程中的原子扩散、堆垛错误或变形过程中的滑移和孪生有关。下面将分别介绍这三个概念及其在FCC晶体中......
  • 一个实用小技巧——微信无损传输视频、照片小技巧
     通过聊天界面发送视频:清晰度下降        作者君发现直接通过聊天界面发送视频或者照片的话,视频和照片会被压缩,清晰度大幅下降,很多时候就没法使用了,这一度让作者君有点小苦恼。如下图,作者君手机上原视频大小为28.98MB,直接通过聊天界面发送视频在电脑端下载后大小为13......
  • shell的变量——变量的运算
    1、写一个shell脚本,计算1+2+……+n共n个值的和,n值由用户输入#原理[root@se7enshell]#a=10[root@se7enshell]#seq-s'+'1$a1+2+3+4+5+6+7+8+9+10[root@se7enshell]#seq-s'+'1$a|bc55#配置文件[root@se7enshell]#vimnum.sh[root@se7enshell]#catn......
  • Isaacgym使用操作指南
    Isaacgym使用操作指南背景知识1.**高性能GPU加速**2.**多环境并行仿真**3.**深度学习框架集成**4.**物理引擎**5.**强化学习支持**6.**PythonAPI**7.**应用场景**8.**生态系统**总结常用apiisaacgym库主要常用的api设置仿真参数创建底面平面加载资产创建环境......
  • 【“八股文”面试现象的利弊】深化教育改革,培养未来IT精英
    深化教育改革,培养未来IT精英https://blog.csdn.net/weixin_42661676/article/details/140818713在探讨了“八股文”面试现象的利弊之后,我们不得不将目光放得更远,思考如何通过教育改革来培养更符合未来IT行业需求的精英人才。这不仅是对当前面试制度的一种反思,更是对整个教育......
  • ssm+vue服装网上商城系统【开题+程序+论文】-计算机毕业设计
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展和电子商务的普及,网络购物已成为人们日常生活中不可或缺的一部分。尤其是在时尚与个性化需求日益增长的今天,服装行业与互联......
  • Java小案例--根据LocalDate类实现出生天数、年数计算
    //使用LocalDate.of方法将某一天的日期赋给LocalDate类型的变量//因为测量的基准是出生日期,这里我们将出生年、月、日分别传入LocalDate.of方法//返回值为LocalDate类型,我们将其赋予变量birthdayLocalDatebirthday=LocalDate.of(2002,9,30);//设置显示的日期格式,默认为......