智能车浅谈——手把手让车跑起来(电磁篇)

2023-05-16

文章目录

  • 前言
  • 材料准备
    • 备赛组
      • 车模
      • 硬件
    • 练习组
      • 车模
      • 硬件方案
  • 整车原理
    • 赛道信息获取及转向原理
      • 工字电感
      • 运放模块
      • 转向原理
      • 元素判断
    • 电机及舵机控制原理
  • 代码实现
  • 效果欣赏
  • 总结
  • 17届完赛代码
  • 智能车系列文章汇总

前言

电磁寻迹小车

之前智能车系列已经做了一个比较详细的解析,但是美中不足是知识点被拆的太零散,可能对于新手来说不太友好,所以借着有空就再写一点能让车跑起来的方案。当然,也就仅仅限于可以跑起来,元素以及高级算法就需要车友们自己去整了,主要还是方便新手上道,当然也欢迎大佬们提出建议。本文以电磁四轮为例进行讲解。

材料准备

作为刚接触电磁车的同学,咱们要想跑起来需要四大件,车模、电磁及运放模块、主控及母板、电机驱动;这里笔者打算分成两种组别来推荐方案,一类是手头没有现成车模而且不是今年参赛的练习组,另外一类是今年的参赛组。

备赛组

车模

这里以基础电磁四轮组为例,建议使用C车模,B车的傻蛋5舵机以及机械差速还是有些许的头秃,当然官方今年好像已经宣布了换掉SD5舵机,由于C车是双电机可以使用主动差速,所以建议大家上手选择C车。车模的机械结构搭建可以去参考往届优秀队伍的技术报告,至于怎么找到技术报告,比赛官网有,卓大博客也有——第十六届全国大学智能车竞赛技术报告与总决赛视频下载。借用逐飞科技的示例车来展示一下:
在这里插入图片描述

硬件

主控:电磁车今年参赛要求是使用STC的单片机来参赛,所以就可以选购龙邱或者逐飞STC母板来作为主控;
电机驱动:目前比赛常用的有HIP4082、DRV8701、BTN7971或者IR系列加MOS全桥等;
电磁组所需的电感和运放模块:目前较多的是OP2350、LM358、OPA4377等;
电源模块:整个小车系统所需的电源种类一般是5V、3.3V、12V,需要有一个系统的电源管理方案,这个需要积累,BUCK、BOOST的电路,网上方案也很多,笔者之前使用的是德州仪器的TPS系列。
硬件设计的注意事项可以参考笔者抗干扰技术的那篇博客。

练习组

车模

对于不是急于参赛而是平时训练的练习组,手头如果没有现成的车模和往届的方案的,建议去淘宝找平价车模代替,因为自己一套买下来得个大几千块,都是学生党,这也不是个小数目。可以参考下图这种使用舵机转向而且后轮电机带编码器的车模,加上锂电池这些一套下来300左右。(图片来源于某宝,VANBOT教育机器人自营店)
在这里插入图片描述
由于原理都差不多一样的,练习使用这种车模性价比极高,而且还可以留下来参加其他的比赛。

硬件方案

电机驱动:购买了这种车模的同学也可以直接用配套的电机驱动,或者使用L298N、TB6612这些电驱都可以。
主控:建议使用带片内ADC的主控,STM32,STC32、STC16、MSP430都可以反正选一个自己熟悉的就行了。
电磁传感器:可以购龙邱、或者轮趣科技的。
电源:选用两节18650加一个LM2596的降压模块即可。
如果觉得麻烦,可以直接选购轮趣科技的学习版小车,如下图:
在这里插入图片描述
当然,手头有往届的芯片和方案更好,这样可以无缝衔接到比赛,比如K66、K60这些方案只是现在不用了,但是网上资料多啊,而且这些处理器性能拿来练手绰绰有余。

整车原理

在准备好上面的硬件后,再来捋一下整个小车的运行原理。小车要正常行驶在赛道上,必定是需要实时根据赛道的状态来调整车身姿态的,那么,电磁车是怎么样获取到赛道信息,又是怎样实现转向的呢。

赛道信息获取及转向原理

工字电感

电磁车是通过获取赛道信号发生器产生的信号来来获取赛道信息的,在赛道正中间会有一条磁感线,用来产生交变电磁信号。小车通过前瞻上的电感即可获得到赛道信息,为啥可以电感可以获取赛道信息呢,其实很好理解,电磁感应都映像吧,导体切割磁感线会产生感应电动势,工字电感内部的导线切割信号线产生的磁场,在电感引脚就会有感应电动势。电感距离磁场越近,产生的感应电动势越大,距离越远,产生的感应电动势越小。
请添加图片描述
(有关电感配频以及信号在各个节点的状态可以去笔者的硬件篇查看)。

运放模块

经过工字电感产生的感应电动势是交流小信号,单片机是无法采集和处理这种小电压的交变信号,所以需要在后面增加一个峰值检测以及放大的运放电路,将交变信号进行选频、检波然后放到适当倍数,输出单片机ADC可以采集的直流信号,将感应电动的大小转换成为单片机ADC采集的数字作为输入量。

转向原理

了解了单个电感获取赛道信息的原理后,为了让小车能够在赛道上行驶,至少会使用左、右两个电感,通过ADC采集经过运放处理的感应电动势值来计算偏差,方法是直接左右电感采集值之差(或者差比和计算)来判断赛道信息,将差比和计算出来的偏差以一定的比例关联到舵机的pwm占空比来控制舵机打角,进而控制小车进行转向。参考下表
其中系列1是左右电感直接作差的波形,系列2是经过差比和计算出来的波形,可见系列2的波形比系列1更加平滑,这有利于控制系统的跟随。
在这里插入图片描述
具体原理:
如下图,小车位于2号位置时,左右两个电感距离信号的距离一样,周围磁场强度也基本一致,产生的感应电动势也是大差不差,左右电感值差比和计算出来的偏差也是0,舵机位于正中间,保持小车直行。
小车位于3号位置时,由于弯道,左边电感距离信号线近,磁场更强,产生的感应电动势要大于右电感的感应电动势,左右电感差比和计算偏差就很大了,将这个偏差输出到舵机,让小车左转来消除这个偏差。
当小车遇见右转赛道时,两个电感的状态刚好相反,此时需要右转来抵消二者偏差。
详细描述参考此文——《学做智能车–电磁探究篇》。
在这里插入图片描述

元素判断

从此图可以看出理论上小车在经过三叉、环岛和十字时,左右两个电感的电感值都会接近磁感线,检测这个特征就可以识别到了,为了防止误判还可以增加一个中间电感或者斜放置电感来辅助判断。电感只有线圈切割磁场时才能产生感应电动势,线圈和磁场平行时是没有感应电动势的,但是在这些特殊元素是,原本没有切割磁场的电感可能突然就切割了磁感线,这里留给大家自己去发挥。
此处提供一个思路,直接看图:
在这里插入图片描述

电机及舵机控制原理

舵机和电机都是通过PWM来控制的,只不过舵机控制的PWM的频率是固定的(50-60HZ),通过改变占空比来实现打角角度。
在这里插入图片描述
而电机的频率没有指定范围,但速度也是通过调节占空比来控制的,通过调节电机pwm输出占空比完成对电机速度的调整,电磁组需注意电机对电磁信号会有干扰,建议电机控制的pwm频率设置为13-19khz,以尽可能的消除干扰。具体可以参考卓大“电磁信号检测|本是同根生,相煎何太急”。
具体的PWM控制原理以及H桥的讲解之前已经写过了,需要的同学去前面方向篇和电机控制篇查看。

代码实现

在了解了上述原理后,我们就可以开始写程序控制我们的小车,实现一个可以跑的状态了。
首先,综合上面的原理,需要初始化PWM来控制舵机和电机,其中舵机的PWM使用的是50-60hz的pwm进行控制(笔者用的50HZ进行控制),而电机的频率是13-19Khz。
然后是获取赛道信息的ADC,需要至少开启两路来实现信息采集。
还有为了保证系统的计算和输出周期固定,需要开启一个定时器中断来保证输出的周期稳定。
其他:根据自己的需求初始化IO控制屏幕,按键,蜂鸣器LED灯。
有了这个思路,任何一款处理器都可以实现功能了。笔者这里以STC为例。
框架:

以下代码仅供参考,

仅仅是代码框架

不能直接复制编译!!!

void main()
{
//按照对应芯片进行上述内容的初始
	DisableGlobalIRQ();	//关闭总中断
	board_init();	
//	lcd_init();			//1.8寸TFT初始化	
	/****电机初始化***/
	pwm_init(PWMA_CH1P_P60, 10000, 0);     //初始化PWM5  使用引脚P2.5  输出PWM频率10000HZ   占空比为百分之 pwm_duty / PWM_DUTY_MAX * 100
	pwm_init(PWMA_CH2P_P62, 10000, 0);     //初始化PWM5  使用引脚P2.5  输出PWM频率10000HZ   占空比为百分之 pwm_duty / PWM_DUTY_MAX * 100
	pwm_init(PWMA_CH3P_P64, 10000, 0);     //初始化PWM5  使用引脚P2.5  输出PWM频率10000HZ   占空比为百分之 pwm_duty / PWM_DUTY_MAX * 100
	pwm_init(PWMA_CH4P_P66, 10000, 0);     //初始化PWM5  使用引脚P2.5  输出PWM频率10000HZ   占空比为百分之 pwm_duty / PWM_DUTY_MAX * 100
	/***电磁初始化***/
	adc_init(ADC_P00, ADC_SYSclk_DIV_2);	//初始化ADC,P1.0通道 ,ADC时钟频率:SYSclk/2
	adc_init(ADC_P01, ADC_SYSclk_DIV_2);	//初始化ADC,P1.1通道 ,ADC时钟频率:SYSclk/2
	adc_init(ADC_P05, ADC_SYSclk_DIV_2);	//初始化ADC,P1.2通道 ,ADC时钟频率:SYSclk/2
  	adc_init(ADC_P06, ADC_SYSclk_DIV_2);	//初始化ADC,P1.2通道 ,ADC时钟频率:SYSclk/2
	
	//****舵机初始化*****21.12.19/
	Steering_Init(50,Steering_Duty);    //舵机初始化,PWM频率为50HZ
	/*****编码器出初始化***/
  	ctimer_count_init(CTIM0_P34);  //初始化2个编码器
	ctimer_count_init(CTIM3_P04);  //初始化2个编码器
	
	gpio_pull_set(P7_7,PULLUP);
	BeeOff;
  	pit_timer_ms(TIM_4, 5);				//使用TIMER作为周期中断,时间5ms一次
	EnableGlobalIRQ();	//开启总中断
	
  while(1)	//电机1
	{
	//可以放显示、按键操作这一类没有严格时序要求的。
		//pwm_init(PWMB_CH1_P74,freq,1350);	//PWMA初始化
	 //屏幕显示:
//	 	lcd_showstr(0,0,"L:");	
//		lcd_showuint16(5*8,0,L);
//		lcd_showstr(0,1,"M:");	
//		lcd_showuint16(5*8,1,M);
//		lcd_showstr(0,2,"R:");	
//		lcd_showuint16(5*8,2,R);
//		lcd_showstr(0,3,"dutyL:");	
//		lcd_showuint16(5*8,3,dutyL);
//		lcd_showstr(0,4,"dutyR:");	
//		lcd_showuint16(5*8,4,dutyR);
//		lcd_showstr(0,5,"error:");	
//		lcd_showuint16(5*8,5,error);
		
//		
//		delay_ms(10);
 }
}
//定时器中断
void TM4_Isr() interrupt 20
{
	TIM4_CLEAR_FLAG; //清除中断标志
	//电感采集获取赛道信息,三电感     \\ 000      000     000    //
	  L=adc_once(ADC_P00, ADC_10BIT);
    M=adc_once(ADC_P01, ADC_10BIT);
    R=adc_once(ADC_P05, ADC_10BIT);
  	My_Direction.NowError=50*(R-L)/(L+M+R);//差比和计算偏差
		//方向环
		Direction_Out();
			//***电机控制***//
		if(DIR1 == 1)//读取编码器方向
		{
			speed1 = 2*ctimer_count_read(CTIM0_P34);//
		}
		else
		{
			speed1 = 2*ctimer_count_read(CTIM0_P34) * -1;
		}
		ctimer_count_clean(CTIM0_P34);
		if(DIR2 == 1)  //输出高电平,正转
		{
			speed2 = 2*ctimer_count_read(CTIM3_P04)* -1;
		}
		else        //输出低电平,反转
		{
			speed2 = 2*ctimer_count_read(CTIM3_P04) ;
		}
	 ctimer_count_clean(CTIM3_P04);//清除积累
	 Current_speed=(speed1+speed2)/2;
	 Current_speed=Current_speed*20.4/(2355.2*0.02);//速度=脉冲数*周长/2368*周期;
	//电机PI控制
	 error=(int)(speed-Current_speed);
	 duty=duty+(error-error_pre)*Motor_P+error*Motor_I;
   error_pre=error;
   if(duty>=100) duty=100;
   else if(duty<=-100) duty=-100;
	
	//电机动作 单极控制
	pwm_duty(PWMA_CH2P_P62, 0);
	pwm_duty(PWMA_CH1P_P60, dutyL*12);
	pwm_duty(PWMA_CH4P_P66, 0);
	pwm_duty(PWMA_CH3P_P64, dutyR*12);

}

需要完整代码的同学去笔者的资源自行下载,也可以去文末链接找完赛代码。

效果欣赏

在这里插入图片描述

总结

有关电磁车的介绍就到此为止,这篇主要是串了一下整个车的思路,细节还需要去看笔者之前的介绍。不提供方案,也不卖资料。文章如有不足欢迎指出,祝大家的小车可以拿到满意的成绩,笔者在评论区等待你们赛后的分享。

17届完赛代码

最近有不少问问题的同学,笔者这边可能回复不是很及时,有需要17届完赛方案和代码的同学可以去海鲜市场,笔者学弟在出售17届方案,价格比较实惠。
【全国大学生第十七届智能车电磁租组2m+代码(全元素+模糊控制】
【第十七届全国大学生智能车竞赛摄像头四轮软硬件资料】
【17届户外极速越野软硬件资料】

智能车系列文章汇总

智能车浅谈——硬件篇
智能车浅谈——方向控制篇
智能车浅谈——电机控制篇
智能车浅谈——图像篇
智能车浅谈——控制规律篇
智能车浅谈——过程通道篇
智能车浅谈——抗干扰技术硬件篇
智能车浅谈——抗干扰技术软件篇
智能车浅谈——手把手让车跑起来(电磁篇)
第十七届智能车越野硬件篇——无刷电机驱动
无刷驱动设计——浅谈MOS驱动电路
芯源&立创EDA训练营——无刷电机驱动

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

智能车浅谈——手把手让车跑起来(电磁篇) 的相关文章

  • #10091. 「一本通 3.5 例 1」受欢迎的牛(强联通+度数结论)

    libreoj10091 题解 xff1a 首先简化一下 xff0c 若欢迎关系图是一个DAG 有向无环图 xff0c 则只要统计每个点的出度 xff0c 出度为0的点即为受所有牛欢迎的点且只有唯一一个 xff0c 因为若存在两个以上出度为
  • https://ac.nowcoder.com/acm/problem/13947(牛客网)

    Contest xff1a 链接 xff1a https ac nowcoder com acm problem 13947 来源 xff1a 牛客网 n支队伍一共参加了三场比赛 一支队伍x认为自己比另一支队伍y强当且仅当x在至少一场比赛中
  • https://ac.nowcoder.com/acm/problem/14136(牛客网 监视任务)

    题目链接 xff1a 题解 xff1a 本题我们不能一上来就用树状数组来统计每一位的贡献 xff0c 我们需要先对区间进行一个排序 xff0c 先按照区间的右端点由小到大排序 xff0c 再按照区间的左端点从小到大排序 xff0c 再按照区
  • https://ac.nowcoder.com/acm/problem/14269(Sum 牛客网)

    位运算 43 组合数学 43 树状数组 xff1a 题解 xff1a 我们如果直接计算操作2的话会很困难 xff0c 我们可以直接考虑一个数的二进制位对答案做出的贡献 xff0c 显然二进制位为0时就不会有任何贡献 xff0c 当我们知道所
  • 异或的路径(牛客网)

    异或路径 43 位运算 43 考虑贡献 题解 xff1a 我们要求所有点对构成的所有路径的异或权值总和 xff0c 肯定不能暴力 xff0c 我们可以知道 xff0c 先搞一个数组d i 表示i节点到根节点1的路径上边权异或和 xff0c
  • TCP为什么采用三次握手而不是两次握手

    希仁版 计算机网络 中的例子是这样的 xff0c 已失效的连接请求报文段 的产生在这样一种情况下 xff1a client发出的第一个连接请求报文段并没有丢失 xff0c 而是在某个网络结点长时间的滞留了 xff0c 以致延误到连接释放以后
  • linux生成可执行文件的命令

    linux生成带调试的可执行文件命令行 xff1a g span class token operator 43 43 span span class token operator span g main span class token
  • git rebase origin/develop

    1 进行git rebase origin develop之前需要进行 lt git add gt lt git commit gt 操作先将修改给提交到暂存区 2 执行git rebase origin develop时候有冲突的话需要自
  • linux---文件描述符和重定向

    文件描述符 进程就是通过struct file结构体来描述打开的文件 xff0c 使用struct file fd array 来存储我们的文件 那什么是文件描述符呢 xff1f 什么是文件描述符 xff1a 文件描述符就是struct f
  • git合并多个commit

    git合并多个commit
  • 深度学习资料

    深度学习资料
  • cmake总结

    cmake 用CMakeList txt产生makefile xff0c make 使用makefile编译可执行程序
  • kuangbin连通图专题,Network of Schools (POJ - 1236,tarjan算法求缩点+缩点的入度与出度的运用)

    kuangbin 题意是有N个学校 每个学校可能向几个学校进行数据传输 xff08 单向的 xff09 问 至少需要把一个文件给几个学校可以使给的N个学校都收到文件 再问在加几个通信线路可以使各个学校之间都能直接或间接的传递文件 一个强连通
  • endnote 文献保留前三个作者

    1 问题描述 xff1a endnote使用GBT7714文献格式 xff0c 显示文献的全部作者 2 想要达到的效果 xff1a 最多显示三个作者 3 解决方法 xff1a 还不知道怎么弄 xff0c 看看以后再来补充 xff0c 心情烦
  • RTK_LIB 源码、可执行文件、rtkget、观测文件、星历文件(精密星历、广播星历)、精密钟差文件介绍

    1 RTK LIB开源程序下载 xff1a 点开rtklib链接 xff1a 下载最新版本的可执行文件和程序源码 2 GNSS数据处理需要的文件 2 1 伪距定位 xff1a spp 观测数据 xff08 0 xff09 导航星历 广播星历
  • RTKLIB ppp rtk_post

    1 实时ppp xff1a IGS MGEX数据处理中心的播发的实时轨道钟差产品 xff0c 结合广播星历 xff0c 实现实时定位 2 事后的 xff08 近似实时 xff09 xff1a 下载精密星历 钟差产品 xff0c 结合其他的精
  • 4.使用静态库、动态库,常见问题解决

    使用动态库的流程 xff08 ORBSLAM3实例 xff09 xff1a 在调用动态库或静态库的 cpp文件添加库的头文件 xff08 可以包含路径 xff0c 也可以在cmakelist文件加头文件搜索路径 xff09 span cla
  • vscode查看代码更新历史

    开源代码推出新版本后 xff0c 如何查看代码更改信息 1 首先打开vscode xff0c 点击左侧的插件管理器 xff0c 进入插件面板 xff0c 搜索Git Graph并安装 2 点击下图图标 xff0c 即可进入Git Graph
  • git更新代码

    一 git一般有很多分支 xff0c 我们clone到本地的时候一般都是master分支 xff0c 那么如何切换到其他分支呢 xff1f 主要命令如下 xff1a 1 查看本地分支文件信息 xff0c 确保更新时不产生冲突 span cl
  • linux---硬链接和软链接

    文件系统 磁盘上文件读写存储与查找系统 xff08 管理 xff09 就是文件系统 xff0c 在每一个分区都会存在自己的文件系统 在这里我们有swap交换分区和文件分区 xff0c 我们这里只介绍文件分区 在文件分区都会有上图中的分块管理

随机推荐

  • char类型数组

    字符数组 xff08 一维 二维 xff09 字符数组是数组元素为char类型的一种数组 凡是适合数组的定义和赋值 xff0c 也都适合于字符数组 由于C语言没有提供字符串类型 xff0c 字符串一般用一维字符数组来存放 xff0c 而二维
  • ubuntu18.04 安装腾讯会议

    腾讯会议现在以及上线了Linux版本 xff0c 可以直接在腾讯会议官网下载linux 版本 xff0c 在官网点击免费下载 xff0c 可以直接下载Linux版本 腾讯会议下载链接 选择Linux版本 xff0c x86 64版本 xff
  • 2.树莓派系统备份

    树莓派使用SD卡来装载系统 xff0c 如果SD卡丢失或者损坏 xff0c 那么树莓派上的数据都会丢失 xff0c 所以一定要备份好SD卡 这篇文章可以帮你备份你的树莓派系统 主要内容为备份SD卡 xff0c 制作树莓派系统镜像以及在需要的
  • ic_gvins编译及环境配置问题解决

    RTK VIO松组合 对惯导精度要求较高 1 环境配置和编译 安装依赖项 span class token comment gcc 8 span span class token function sudo span span class
  • EVO画图设置

    一 绘图设置 1 更改背景色和网格 span class token comment 白色网格 span evo config span class token builtin class name set span plot seabor
  • GINS_OB环境配置

    1 程序简介 武大开源GNSS INS松组合IMU预积分有考虑地球自传和不考虑两种形式可以灵活设置GNSS中断时间IMU可以和里程计进行融合 2 环境配置 span class token comment gcc 8 g 43 43 8 s
  • OB_GINS程序框架

    1 程序运行 span class token builtin class name cd span OB GINS span class token comment 编译好的可执行文件 xff1a bin ob gins xff0c 参数
  • KEIL、MDK中关于__LINE__宏 printf 的显示不正确的问题

    span class token operator gt span define span class token function DEBUG span span class token punctuation span log span
  • VINS-回环检测与重定位

    参考博客 pose graph分析1 pose graph分析2 pose graph分析3
  • 源码安装naviagtion,但是出现[move_base-2] process has died 运行错误的解决办法

    今天开始记录ros遇到的问题 安装navigation可以使用两种方法 第一种 xff1a sudo apt get install ros kinetic navigation 这种安装方法最简单 xff0c 新手或者不需要动naviag
  • linux---静态库和动态库的制作和使用

    静态链接和动态链接 静态链接 xff1a 生成可执行代码 xff0c 链接静态库 xff08 与代码位置有关的链接方式 xff09 xff0c 需要将代码拷贝到我们的源代码中才能运行 动态链接 xff1a 生成可执行代码 xff0c 链接动
  • 加一

    加一 描述 给定一个由整数组成的非空数组所表示的非负整数 xff0c 在该数的基础上加一 最高位数字存放在数组的首位 xff0c 数组中每个元素只存储单个数字 你可以假设除了整数 0 之外 xff0c 这个整数不会以零开头 示例 1 输入
  • STM32bootloader原理解释

    STM32bootloader原理解释 一 STM32的常规启动流程 STM32的内部flash地址起始于0x8000000 xff0c 一般情况下 xff0c 程序文件就从此地址开始写入 此外STM32是基于Cortex M3内核的微控制
  • 模糊PID基本原理及matlab仿真实现(新手!新手!新手!)

    有关模糊pid的相关知识就把自己从刚接触到仿真出结果看到的大部分资料总结一下 xff0c 以及一些自己的ps 以下未说明的都为转载内容 1 转自 https blog csdn net weixin 36340979 article det
  • VMware+ubuntu+win10笔记本实现笔记本连接WIFI且ubuntu既可以上网又能连接开发板

    背景 最近在学习imx6ull开发板的时候 xff0c 发现开发板通过网线连接笔记本电脑却无法ping通ubuntu xff0c 于是捣鼓了很久终于可以了 xff0c 却又发现ubuntu不能上网了 xff0c 经过一番查找资料和尝试 xf
  • 在windows上用vscode打造比vc++6.0好用的C/C++ IDE,适用编程小白

    准备 xff1a 1 安装MinGW xff0c 添加gcc gdb等编译调试工具bin目录 头文件Include目录 库lib的路径到系统环境变量 xff0c 安装LLVM 添 加Clang编译器所在bin目录到系统环境变量 具体操作百度
  • C语言数据结构——线性表的链式存储结构

    文章目录 线性表的链式存储结构1 基本概念2 设计与实现3 优点和缺点 线性表的链式存储结构 1 基本概念 链式存储定义 xff1a 为了表示每个数据元素与其直接后继元素之间的逻辑关系 xff0c 每个元素除了存储本身的信息之外 xff0c
  • 智能车浅谈——硬件篇

    目录 初识小车硬件系统1 电源系统线性电源开关电源 2 人机交互系统3 MCU最小系统4 传感器系统摄像头电感编码器 5 驱动系统 机械结构 17届完赛代码智能车系列文章汇总 前言 xff1a 作为一名老三本玩家 xff0c 笔者深知一些同
  • 智能车浅谈——图像篇

    文章目录 前言认识图像基本含义图像类型数字图像彩色图像灰度图像黑白图像 小结 图像处理图像压缩二值化固定阈值法大津法 图像降噪 xff08 腐蚀 xff09 寻边线 总结17届完赛代码17届完赛代码智能车系列文章汇总 前言 前面已经记录了智
  • 智能车浅谈——手把手让车跑起来(电磁篇)

    文章目录 前言材料准备备赛组车模硬件 练习组车模硬件方案 整车原理赛道信息获取及转向原理工字电感运放模块转向原理元素判断 电机及舵机控制原理 代码实现效果欣赏总结17届完赛代码智能车系列文章汇总 前言 电磁寻迹小车 之前智能车系列已经做了一