智能小车

我用飞桨做了一个AI智能小车

懵懂的女人 提交于 2019-12-16 16:48:41
【飞桨开发者说】吴东昱,北京钢铁侠科技深度学习算法工程师,主要研究深度学习、无人驾驶等。 我在观察历届智能车竞赛以及教学实验中发现,采用传统视觉算法的视觉智能车只能在特定赛道中行驶,一旦赛道环境改变,必须修改大量的代码才能运行。算法适应性差是制约智能车场景化适配的重要因素。而“AI智能车”借助深度学习算法,通过真实数据采集到模型新训练恰恰能够解决这一问题。基于飞桨平台,我们快速研制出了“无人驾驶智能车”,已经实现了道路检测以及交通标识识别(红绿灯/限速牌/人行道/停车位)等功能。在本文中,我将为大家揭秘“基于飞桨的无人驾驶智能车”的具体实现过程和效果。 第一步:如图1所示,在智能车硬件配置上,高性能处理器是实现深度学习算法运行的必备条件,目前通用流行的高性能处理器如:intel CPU、NVDIA GPU、百度Edgeboard系列、NXP i.MX8系列,在这里我们选择了基于百度Edgeboard系列的高性能板卡作为智能车的主处理器。 图1.智能车硬件框架 第二步:在解决了处理器的问题之后,要实现智能车对道路和交通标识的识别就要面临深度学习框架和深度学习算法的选择。目前通用流行的深度学习框架有Tensorflow、飞桨(PaddlePaddle)、Caffe、PyTorch等。我们选择了飞桨,飞桨作为国产化的深度学习框架,配合一站式开发平台AI Studio

智能小车之电源板电路设计分析

萝らか妹 提交于 2019-12-03 22:52:59
  一。输入接口      XH插座用了接锂电池。注意正负极。   DC5.5-2.1mm接口,一般用12V,1A电源适配器。      二。输出接口            共有5种电源电压输出:VCC,5V-5A,3.3V-5A,5V-1A,3.3V-1A   VCC可以给电机供电   5V-5A可以给大电流的设备供电,如:舵机   为什么要设计成2路电源电压?   比如舵机,在启动的时候需要很大的电流,会把5V电压拉低,比如拉低到3V,如果5V也给单片机供电,就会引起单片机复位。同时,带有电机的电路噪声很大,不适合跟单片机接在一起。   因此单独引出一路小电流电源电压给单片机和其他传感器供电使用。   蓝色的排针只是上下相通,没有跟电源连接。   三。NMOS管组成的防反接电路      防反接电路有一个简单的方法就是串入一个二极管,电源接反的话二极管不导通,但二极管会产生0.7V的压降,锂电池只有7.4V,因此不适合采用二极管。   因此选择NMOS管。   1. 正常工作的时候   NMOS管内部有一个二极管,在NMOS管不导通的时候,二极管导通,电流通过这个二极管流过回到GND,   Vgs>1.5V 以上时NMOS管导通,因为此时Vgs为2.7V,大于1.5V,因此NMOS管导通。导通以后Vds电压为0,所以正常工作的时候会把二极管短路

智能小车开发的重点之一电机该如何选型

怎甘沉沦 提交于 2019-12-03 13:14:27
  一。智能小车的分类      二。电机的分类      无刷电机要好于有刷电机,优点:1. 没有损耗,有刷电机有寿命 2. 静音,有刷电机噪音比较大 。   无刷电机分为带霍尔传感器和不带霍尔传感器两种,因为无刷电机需要知道转子的位置来空着它的转动。用于智能小车一般用带霍尔传感器的无刷电机。   无刷电机价格较贵。这次采用有刷电机制作智能小车。   三。有刷电机选型   需要考虑两个参数:   1. 转速:多少转/分钟,一般为上万转/分钟   相比人走路的速度:4-5公里/小时,大约为1m/s,跟电机的转速之间怎么换算?这里需要知道轮胎的周长,我们选择的轮胎直径为4.2cm,周长=0.042*3.14=0.13188米,走1米的距离需要转7.58圈,也就是每秒转7.58圈,455转/分钟。   因此我们需要选择一款电机,转速为455转/分钟。   但无论是无刷电机还是有刷电机的转速都在上万转以上,因为需要在前面加一个减速箱才能实现。搜索“微型直流减速电机”,我们选择了一款金属齿轮的电机。   2. 额定电压   一般为3V,6V,12V,因为这款智能小车采用锂电池供电,电池充满电后的电压为8.4V,到6V以后我们就不让它工作了,因此电池的电压为6V-8.4V,因此我们选择额定电压是6V,转速为500转/分钟的电机。         电机的空载电流和堵转电流  

智能小车硬件课设(循迹,避障,蓝牙等功能实现)

匿名 (未验证) 提交于 2019-12-03 00:30:01
1.硬件方面用的是N4的板子,如下 2.整个小车完成后如图 3.代码部分是用verilog完成的,项目报告,完成代码,以及小车跑动的视频都在以下链接里,可以下载使用。 https://download.csdn.net/download/sinat_30372583/10485011 如果有什么问题或者没积分的话可以联系我QQ 977863095 文章来源: 智能小车硬件课设(循迹,避障,蓝牙等功能实现)

DIY智能小车篇(番外篇)

徘徊边缘 提交于 2019-11-29 06:13:31
前言 暑假闲着也是闲着,想着还是干点有意义的事情充实一下自己,那会也在再学习C语言,就想找点能锻炼锻炼编程能力的小项目,正好逛论坛看到了别人做的智能小车,看着还挺好玩就想着自己也做一个,一方面能锻炼锻炼自己的编程能力,另一方面也自己体验一下独立做项目的感觉,为之后做更大的项目铺铺路,能懂得遇见问题怎么解决等等等等。说干就干,照着别人做智能小车的总结博客,在网上买了所需的零件以及工具,那么这个小项目就开始啦! 整车概况 声明:这是一个四轮小车,主控板是STM32F407,集成了包括驱动功能、巡线功能、避障功能、遥控和蓝牙控制功能在内的五大功能 实物图 做好以后就是这个样子啦,看起来还是不错的,除了后面的线有点丑以外 这就是没有后面线的状态,看着颜值还可以吧! 效果展示 点这里 看完整展示视频 设计思路 整车组装好之后就是一个一个模块功能的添加和调试啦,这其中必然会出现很多的问题,有的问题完全没有头绪,搞得我很头大,但是还是要稳住,这才是做项目的真是状态,出现问题仔细分析,看看问题出在哪里,然后将大问题拆解成一个一个的小问题,逐个击破,最终的结果不会太差! 下面是我罗列的各个模块部分,按照这个顺序一个一个功能的添加和完善,最终实现了视频中那样的效果。 我还列出了一张未完成任务的要览,这是在我准备回学校的前几天列出来的,本来那几天有点懒想着回去学校再做收尾工作,最后还是决定一步到位

DIY智能小车篇(一):结构模块

♀尐吖头ヾ 提交于 2019-11-29 06:13:27
前言 本篇主要针对制作智能小车过程中用到的各种结构模块进行统一阐述,为大家提供参考的同时也是自己对之前所做工作的总结。本人所制作的智能小车所需零部件均从某宝上购得, 这家店 的零件比较全,本文中的大部分模块都可以搜得到(没有任何打广告的成分,我自己就是从别处买的,只不过这里零件比较全,很多资料也很丰富,可以多多参考) 模块汇总 底板 1. 双层亚克力板 双层设计有利于搭建其他结构模块 2. 直条双轴减速马达 优点:物美价廉,某宝上电机带车轮一套三块钱 3. 橡胶车轮 STM32F407开发板 此智能小车的主控板 L298N电机驱动模块 本部分主要参考 绅士祥 和 P_xiaojia 的这两篇博文,如有侵权,请联系删除 首先看看模块的样子 然后依次介绍每个部分: 输出A: 通道A输出 ,连接电机正负两端 输出B: 通道B输出 ,连接电机正负两端 12V供电: 主电源正极输入 供电GND: 主电源负极输入 5V输出: 5v电压输出端,可用于给MCU供电 ENA: 通道A使能 使用PWM波控制时去掉跳线帽,将PWM输出接口接在使能端 ENB: 通道B使能 使用PWM波控制时去掉跳线帽,将PWM输出接口接在使能端 板载5v使能:这是个跳线帽,可选项,接上后板载5V输出有效,利用5V输出端可以给别的MCU供电 IN1~IN4: 逻辑输入IN1~ IN2控制通道A,逻辑输入IN3

DIY智能小车篇(二):功能模块之驱动、巡线、避障

大兔子大兔子 提交于 2019-11-29 06:13:23
前言 本篇主要针对实现小车各功能的过程中具体的实现原理、程序算法以及遇到的问题进行统一的解释与说明。至此,结合上一篇的结构模块,已经完成了该智能小车项目的所有工作,其中必然还有很多可以优化的地方,但考虑到做此项目的最终目的是更深入的理解嵌入式编程,所以此项目到此为止,要去开拓更广阔的的天地啦。 驱动控制 驱动模块PWM配置 要想实现对小车的速度控制,就需要对L298N电机驱动模块的使能引脚输入PWM波,改变占空比的大小便可以调节小车速度的快慢 该PWM配置如下: /** * @brief: 初始化PWM输出配置,利用TIM3同时输出4路PWM波,控制4个电机转速 * @param: arr-自动重装载值 psc-时钟预分频系数 * @retval NONE * @Others:GPIO_PinAFConfig函数必须分步进行复用,不能用一个复用函数并在一起,不然只有一路输出 **/ void TIM3_PWM_Init(u16 arr,u16 psc) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3

DIY智能小车篇(三):功能模块之遥控、蓝牙、MERGE

若如初见. 提交于 2019-11-29 06:13:22
遥控模式 此模式可以利用遥控器完成模式的选择和小车前进后退等驱动功能,模式选择放在最后MERGE部分进行介绍。通讯协议直接用的YFRobot工作室写好的,方便实用,自己其实只需要会用就OK啦。通讯协议部分的程序这里就不贴啦,网上都能找得到。这里主要总结一下遥控器驱动小车的算法优化问题。遥控器模式选用红灯模式,摇杆返回模拟量,范围0~256,这里的算法思想就是,在0 ~ 128之间驱动小车前进,128 ~ 256之间驱动小车后退,并且按模拟量大小,速度线性变化,从而达到轻推摇杆以低速前进或者后退,重推摇杆以高速前进或者后退的目的。左转弯和右转弯类比前进与后退。驱动函数和普通的驱动函数不太一样,在驱动控制部分可以找得到。 /** * @brief: 实现了小车在遥控模式下的前进、后退、转向、停车 * @param: NONE * @retval:NONE * @others: 对摇杆返回参数进行了一定的算法优化 **/ void Remote_Ctr(void) { static int pss_data[2];//摇杆返回值数组,用于记录左右摇杆的返回值 static int pulse_run;//驱动小车前进的pulse值 static int turn_rate;//转向调整速率 pss_data[0]=PS2_AnologData(PSS_LY); pss_data[1]

DIY智能小车篇(四):常见问题 & BUG汇总

只谈情不闲聊 提交于 2019-11-29 06:13:17
此篇对做此项目过程中遇到的所有问题和出现的BUG(包括硬件方面和软件方面)进行总结,告诫自己要养成总结问题,汇总BUG的好习惯。前人说:工作后你会发现你学生阶段所做项目的BUG_list价值千金! 硬件方面 电机驱动 Q :最初测试电机的过程中,出现电机发出滋滋的声音(感觉很无力)但是不转动的情况 A :L298N电机驱动板没有与MCU共地 软件方面 电机驱动 Q :利用STM32的定时器3输出4路PWM波,总是只有随机的1路输出 A :GPIO_PinAFConfig函数必须分步进行复用,不能用一个复用函数并在一起,不然只有一路输出。也就是说像下面这样复用: GPIO_PinAFConfig(GPIOA,GPIO_PinSource6,GPIO_AF_TIM3); //GPIOA6复用为定时器3 GPIO_PinAFConfig(GPIOA,GPIO_PinSource7,GPIO_AF_TIM3); //GPIOA7复用为定时器3 GPIO_PinAFConfig(GPIOB,GPIO_PinSource0,GPIO_AF_TIM3); //GPIOB0复用为定时器3 GPIO_PinAFConfig(GPIOB,GPIO_PinSource1,GPIO_AF_TIM3); //GPIOB1复用为定时器3 而不是下面这样: GPIO_PinAFConfig(GPIOA,GPIO