全国大学生智能车竞赛电磁三轮组源码发布

版权申诉
5星 · 超过95%的资源 1 下载量 190 浏览量 更新于2024-10-12 5 收藏 17MB ZIP 举报
资源摘要信息:"十三届全国大学生智能车竞赛南京师范大学电磁三轮组源代码(国特).zip" 该资源为参加十三届全国大学生智能车竞赛的南京师范大学电磁三轮车组的源代码压缩包文件。智能车竞赛作为一项集创新、实践与竞技于一体的科技竞赛活动,对参与者的工程实践能力、创新设计能力以及团队协作能力都有很高的要求。电磁三轮车组是其中的一个类别,它要求参赛选手设计并制作出能够在特定赛道上自动行驶的智能车模型。 在这份源代码中,包含了实现智能汽车算法的所有程序文件。智能汽车算法是智能车辆实现自动驾驶的核心技术之一,涉及到路径规划、目标检测、车辆控制等多个方面。具体到电磁三轮车项目中,算法需要能够处理来自赛道上的电磁信号,指导小车在正确的时间做出转向、加速或减速等动作,以准确无误地完成比赛任务。 竞赛的参与过程对学生的课设(课程设计)和毕设(毕业设计)都有极大的帮助,是理论与实践相结合的重要途径。因此,这份源代码不仅可以用于比赛本身,还可以作为学习智能车相关知识和技能的宝贵资料。由于全部源码都已经进行了严格测试,可以直接运行,这为学生提供了一个完整、可靠的实践平台,有助于他们深入理解智能车的工作原理和编程技术。 从文件名"13th-Intelligence-Car-Race_Electromagnetic-tricycle-master"可以看出,这是一个主版本的文件,"master"通常指的是源代码库中的主分支,它包含了最新的稳定版本代码。考虑到是南京师范大学电磁三轮组的源代码,很可能包含了该团队为适应电磁赛道特点而定制的特殊算法和程序结构。 智能汽车算法的开发和优化通常涉及到多个学科的知识,包括但不限于计算机科学、控制工程、电子工程、人工智能等。源代码中应该包含了以下几个重要的知识点: 1. 控制算法:这是智能车运行的核心,涵盖了PID控制、模糊控制、神经网络控制等多种策略。控制算法需要根据实际情况做出实时响应,保持车辆稳定行驶。 2. 传感器数据处理:电磁三轮车需要使用传感器检测赛道,解析电磁信号,并对信号进行处理,以便做出相应的控制动作。常见的传感器包括电磁传感器、红外传感器、超声波传感器等。 3. 通信协议:智能车与外界的通信需要依赖特定的通信协议,电磁三轮车可能需要按照比赛规则使用特定的通信方式接收信号。 4. 程序设计:包括软件架构设计、模块划分以及具体的功能实现。智能车的程序设计需要高效可靠,便于调试和优化。 5. 电气工程:智能车的电源管理、电机驱动等电气部件的设计和集成也是实现有效运行的关键。 6. 人工智能:随着人工智能技术的发展,一些高级智能车已经应用机器学习算法来提高识别和决策的能力,这对于智能车性能的提升有着重要影响。 考虑到文件中仅包含一个空文件"empty_file.txt",这意味着实际的源代码文件并未直接提供。可能需要从其他渠道获取完整的源代码,或者根据文件描述中的提示进行相应的编程实践。 这份资源的价值在于它为相关专业的学生、教师以及智能车爱好者提供了一个真实的项目案例。通过分析和运行这些源代码,他们可以学习到智能车的设计理念、开发流程和调试技巧,进一步提高自身的技术水平。对于即将参加智能车竞赛的学生来说,这些源代码是宝贵的参考资料,可以启发他们在设计自己的智能车时进行创新。
2018-12-02 上传
/*******************************************************************************/ // // oo——NXP2018_PRO——oo // // PART1:初始化区段 /*******************************************************************************/ /************************包含的头文件****************************/ #include "common.h" #include "include.h" #include "OLED.h" #include "SEEKFREE_18TFT.h" /***********************参数定义&设置****************************/ //--------------------------------------------------------------- //\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ //--------------------------------------------------------------- /***********************系统运行参数*****************************/ uint8 code_Time_flag=0; //程序运行时间 /**************************舵机*********************************/ uint8 KP_A=6,KP_B=27,KD=150; //MAIN舵机PID uint32 DJ_midpoint=7330; //舵机中值 uint32 DJ_PWM; //输出PWM /************************速度控制*******************************/ uint8 speed_need=20; //目标速度 uint8 speed_need_Boost=30; //目标高速 uint8 speed_need_normal=30; //目标速度 uint8 speed_need_L=30; //目标弯道 uint8 speed_SW_flag=1; //速度选择标志 /*************************电机控制******************************/ float Speed_P=4,Speed_I=0.15,Speed_D=1; //MAIN电机PID uint8 Block_motor_time_flag=0; //堵转计时标志 uint8 Block_motor_duty_flag=0; //堵转事件标志 uint8 Block_motor_delay_flag=0; //堵转弛懈标志 /**************************编码器********************************/ float feed_fix=10.6; //编码器修正系数 uint32 Feed_flag=0; //编码器采集计数 uint32 Feed_speed=0; //编码器采集速度 /***********************摄像头有关参数***************************/ /*调控参量*/ uint8 img_y_max=50; //扫描纵坐标最近值 uint8 img_y_min=10; //扫描纵坐标最远值 uint8 img_y_control=30; //扫描纵坐标控制值 /*传递参量*/ uint8 imgbuff[CAMERA_SIZE]; //定义存储接收图像的数组 uint8 img[CAMERA_W*CAMERA_H]; //摄像头解压数组 uint8 img_x=40; //扫描横坐标 uint8 img_y=30; //扫描纵坐标 uint8 start_point=40; //扫描起始点 uint8 mid_point[60]; //提取的中线 uint8 mid_point_His[10]; //历史的中线 uint8 left_point[60]; //左边界 int right_point[60]; //右边界 uint8 init_len[60]; //初始化赛道宽度 uint8 point_len[60]; //实时赛道宽度 uint8 street_len=0; //直道长度 uint8 len_His[10]; //直道长度历史数组 /*圆环补线*/ float L_Cur_K=0; //左圆环补线斜率 float R_Cur_K=0; //由圆环补线斜率