第十五届全国大学生智能汽车竞赛赛后总结

第十五届智能机器人大赛赛后总结

比赛硬件:

  • 小车底座
  • 小车核心板一块,母版一块,核心板一块,其中核心板c型车采用k66核心芯片,F型车采用tc264核心处理器
  • 小车编码器左右后轮各一个,驱动电机两个,c型车包含舵机一个
  • 红外避障传感器,两个编码器,电磁传感器。

编译软件

  • c型车采用iar编译环境,注意文档提示使用8.2以上版本,否则会遇到程序无法下载的情况,iar自带jling驱动器,所以可以省略安装驱动部分,如果需要手动安装驱动器,注意安装过程中 要勾选将驱动器应用到 IAR 环境中
  • iar 使用介绍
    iar工程目录
    双击上图位置快速打开工程

IAR程序界面
打开工程后依次操作为

  1. 编译-》生成hex文件
  • 选择项目名,右键-》options-》rebuildall
  • 或者使用快捷键CTRL + F7
  1. 使用ARM-LINK烧写器连接K66核心板
  1. 烧写程序
    project——》download——》
    或者使用快捷键CTRL+D 然后点击全速运行

  2. 这样程序就烧写进去了,建议将案例程序都烧写进去观察一遍,注意程序中使用到两种屏幕连接方式一样,但不能通用。IAR程序安装于破都有专门文档这里不在赘述。

  3. k66案例项目目录:
    重点使用的有母版综合案例,上位机灰度案例(使用前要进行蓝牙配置,比赛中并没有应用,如果需要进行上位机通信使用),key案例,tf1.8案例,tf1.8灰度显示案例(在调节摄像头焦距时需要用到)
    在这里插入图片描述
    烧写过程中未出现错误表示程序下载正常,连接母版后可以运行了

  4. tc264核心板采用ads移植环境,为tasking软件的替代品,如果使用下载时出现无法加载项目是正常现象,重复更换工作环境(所以启动程序时不要勾选设置默认的工作环境),重新导入工程,重启软件,重启电脑解决
    如果需要使用tasking软件,一定要提前一个星期提交软件申请报告,一个星期审批后即可使用

  • ads编译环境使用:

双击图标打开
7. 导入项目
8. 选择项目路径
9. 点击finish即可完成项目导入

项目导入后界面如图所示
在这里插入图片描述
cpu0_main()是程序主函数,你可以选择里面函数跳转

与iar使用方式基本相同使用步骤分别为

  1. 编译
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/2020110916593627.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L05vdGhlbmhl,size_16,color_FFFFFF,t_70#pic_center

  2. 连接烧写器(tc264核心板使用的是mini烧写器,需要注意)

  3. 烧写程序
    debug配置界面
    选择正确核心板类型后点击debug及可烧写了 烧写完成后点击全速运行(建议修改少量代码不用重复编译容易出现项目无法加载的情况)

代码部分

链接:https://pan.baidu.com/s/15uxsDb80RAHI97m0M-6IEg
提取码:hyz1
复制这段内容后打开百度网盘手机App,操作更方便哦

在这里插入图片描述
主函数主要包括getout()以及Electromagnetictricycle();函数分别是出库以及循迹,切记!!!我在程序中是将出库写死,分别采用出库,打正,加速冲坡三个阶段,应该采用出库检测电磁或者磁块,打正加速的阶段,一定不要写死!!!

在这里插入代码片`void Electromagnetictricycle(void)
{
  unsigned short duty=5000;
  uint16 batv;
  char  txt[30]="X:";
/*
  while(1)
  {
      MotorCtrl(1000, 1000);
  }
*/

  PIN_InitConfig(P15_8, PIN_MODE_INPUT, 1);
  //PIN_Exti(P15_4, PIN_IRQ_MODE_FALLING);//配置P15_8 下降沿触发中断
`

循迹代码中使用了P15_8这个IO口用来给红外避障传感器提供输入,让小车完成接球后停在原地,循迹传感器供电5V,你可以在淘宝店找到接线说明以及检测距离调节。

在如图所示的代码中定义了点击转动的占空比,数值越大小车运动越快

if((Loffset1<200)&&(Loffset4<200)) //两个值都小于20,电磁杆远离赛道,进入直角弯和急弯
    {                                //数值越大,转弯越提前,速度越快该值应该越大
      if((Loffset4<30)&&(Loffset1<30)) //冲出赛道,检测不到电感值时舵机需要打死
      {
        if(LastAngle<0)         //上次右偏,根据冲出赛道前记忆的偏离方向打死舵机回赛道
        {
          TempAngle=Left_Max;        //根据记忆参数打角舵机,向左打死
        }
        else                         //上次左偏,根据冲出赛道前记忆的偏离方向打死舵机回赛道
        {
          TempAngle=Right_Min;        //根据记忆参数打角舵机,向右打死
        }
      }
      else if(Loffset1>Loffset4)     //左2电感值 大于 右2电感值
      {
        if(Loffset0>Loffset5)         //并且 左1电感值 大于 右1电感值
          TempAngle=Left_Max;         //小车右偏,左打死
      }
      else if(Loffset4>Loffset1)     //左2电感值 小于 右2电感值
      {
        if(Loffset0<Loffset5)         //并且 左1电感值 小于 右1电感值
          TempAngle=Right_Min;        //小车左偏,右打死
      }
    }
    else if((Loffset1>100)&&(Loffset4>100)) //小车行走于赛道上中间
    {
      TempAngle=(Loffset1-Loffset4)*25; //根据偏移量差值小幅度打角,防止直道摇摆
    }
    else                                  //小车行走于赛道上弯道区域,需要控制转向
    {
      TempAngle=(Loffset1-Loffset4)*65; //一般弯道专项控制,数值越大,转向越早30
      LastAngle=TempAngle;//记忆有效参数       //记忆偏移方向
    }
    g_Offset=TempAngle;
//#ifdef USE_ENCODER   //使用编码器,需要定义USE_ENCODER
    //车左偏,右侧电感值大,偏移值为负,左侧电机加速,右侧电机减速
    //车右偏,左侧电感值大,偏移值为正,左侧电机减速,右侧电机加速
    //MotorCtrl(2000+TempAngle+SPEED*Kencoder, 2000+TempAngle+SPEED*Kencoder);
    if(TempAngle<Right_Min) TempAngle=Right_Min;
    else if(TempAngle>Left_Max) TempAngle=Left_Max;
    

上图是小车循迹算法控制代码,使用到了电磁传感器,电磁传感器安装在车头大约十厘米高处,连接方式为 0-1,1-2,5-3,6-4, v-v,g-g可以对代码进行微调,通告修改上图参数

如果出现小车转向半径过大,你应该修改的位置为
在这里插入图片描述
其中kp越大,转向扭矩越小。

小车硬件连接图:

在这里插入图片描述
小车点击接线无正负要求,反接反转根据代码灵活应用,注意编码器左边使用编码器1接口右边编码器2接口

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值