设为首页
联系站长
加入收藏
 您的位置: Pecker's Home >> 文章频道 >> 电子技术 >> 控制系统 >> 机器人 >> 正文
  智能车运动状态实时监测系统的设计及实现         
智能车运动状态实时监测系统的设计及实现
[ 作者:艾宁、谭启寅、马文军、李宗洋    转贴自:电子产品世界    点击数:1077    更新时间:2007-9-26    文章录入:pecker

系统功能及应用

    本系统主要完成将智能车行驶过程中的各种状态信息(如传感器亮灭,车速,舵机转角,电池电量等)实时地以无线串行通信方式发送至上位机处理,并绘制各部分状态值关于时间的曲线。有了这些曲线就不难看出智能车在赛道各个位置的状态,各种控制参数的优劣便一目了然了。尤为重要的是对于电机控制PID参数的选取,通过速度—时间曲线可以很容易发现各套PID参数之间的差异。对于采用CCD传感器的队伍来说,该系统便成为了调试者的眼睛,可以见智能车之所见,相信对编写循线算法有很大帮助。而且还可以对这些数据作进一步处理,例如求取一阶导数,以得到更多的信息。


系统的硬、软件设计

    设计方案主要分成三部分:车载数据采集系统,无线数传系统,上位机数据处理系统。系统基本构建如图1所示。

图1、智能实时监测系统结构框图与流程图


车载数据采集系统

    车载数据采集系统主要由单片机负责采集赛车行驶过程中的速度、传感器状态、电池电压、舵机转角等信息。为了使监测系统不占用S12单片机的内部资源并且支持热插拔,我们将除供电之外的监测系统与智能车控制系统相分离。我们选择ATMEL公司的ATMEGA16单片机作为该数据采集系统的处理器。二值型光电传感器信号的采集直接使用该单片机的I/O口进行采集,连续型光电传感器、电池电压及CCD摄像头信号则采用该单片机的A/D口进行采集,速度信息则通过光电编码器和该单片机的计数器来采集。采集到的数据每20ms向上位机发送一次。


无线数传系统

    下位机向上位机传输的是以每20ms传输一组包含了光电编码器值(speed),电池电压(battery),舵机转角值(angle),传感器当前状态(sensor)的数据,如果是在理想状态下,上位机接收到的应是上述各值循环出现的周期性数据,此时上位机只需将这些数据按顺序装入各自的数组并画图即可。但在实际的无线传输过程中可能出现数据丢失现象。因此加入适当的数据校验是必要的,否则会出现数据装入错误,造成画图的混乱。我们在实际过程中是在每组数据中加入0x00,0xff的帧头,当数据出现错误时,则舍弃该帧数据。

    数据的无线收发部分采用的是SUNRAY公司的QC96型无线收发模块,该模块可以收发波特率为9600bps的串行数据,距离可达100m。


上位机的数据接收及处理

    上位机部份主要由四个模块构成:

    ·数据接收模块

    功能:上位机通过串口采集下位机发送的原始数据。

    实现:VC++中实现串口通信一般有二种方式,分别是MSComm控件和Windows API函数。MSComm简洁易用,适用于比较简单的系统,Windows API函数应用较广但比较复杂繁琐,由于此模块的串口通信功能相对简单,本系统采用前者。在实际过程中使用的是事件驱动的方式,这种方法响应及时,可靠性高,并且比查询法占用更少的资源。 

    ·存储模块

    功能:可直接存储采集到的原始数据,以备以后更多的分析处理。

    实现:在每个OnComm事件被触发后,将串口接收到的数据直接存入temp临时文件,并且可以在用户的要求下将temp临时文件里的值存储到指定文件。

    ·数据的分析和处理模块

    功能:将采集到的原始数据进行用户选定的分析和处理,主要包括丢弃错误数据,以及去除帧头并进行数据装入任务,同时也可以对已保存的数据进行分析和处理。

    实现:将temp临时文件或用户指定文件的数据读出并装入,以下为主要程序代码:

void CChuankokjDlg::find_data(car_data c_data[], BYTE c_source[], int c_length)
{
 int i=0;
 while(i<c_length-6)//防止下标越界
 {  if((c_source[i]==0x00)&&(c_source[i+1]==0 xff)&&(c_source[i+6]==0x0 0)&&(c_source[i+7]==0xff))//判断帧头并进行数据装入
  {
   c_data[length].speed_data=c_source[i+2];
   c_data[length].battary_data=c_source[i+3];
   c_data[length].direction_data=c_source[i+4];
   c_data[length].sensor_data=c_source[i+5];
   i=i+1;
  }
  else
   i++;
 }
}

    ·图形显示模块

    功能:以图形界面来显示处理后的数据,以便更直观地观察智能车的运行状态。

    实现:将上一模块中装入各数组的数据在用户的选择的模式下进行画图,可以只看一幅图,也可以将四幅图放在一起进行对比观看。实际的运行界面及效果如图2。

图2  图形显示介面运行模块


结语

    该系统通过添加无线收发模块,将智能车的实时状态信息传到上位机上,通过VC++编程,用图象直观形象地将其表现出来,很好地达到了对智能车状态实时监测的目的,极大地方便了我们调节PID等智能车参数,对赛道记忆算法的研究提供了很大的帮助。


作者:北京科技大学,艾宁、谭启寅、马文军、李宗洋

分享到:
    免责声明:本文仅代表作者个人观点,与Pecker's Home无关。登载目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字和图片(或其他媒体形式内容)的真实性、完整性、及时性本站不作任何保证或承诺。请读者仅作参考,并请自行核实相关内容。如果有侵犯版权事宜,请通知master@peckerhome.com,我们将在第一时间删除该信息。
  • 上一篇文章: 关于智能车模起跑线识别方法的设计与实现

  • 下一篇文章: 神奇的BEAM机器人
  • 发表评论】【告诉好友】【打印此文】【关闭窗口
     最新5篇热点文章
    处理器架构消亡史[00139]
    通信恩仇,5G江湖[00280]
    官方辟谣扫码支付引爆加油…[00523]
    谷歌搭售是不是作恶?可以…[00284]
    你对Zigbee无线连接了解多…[00514]
     
     最新5篇推荐文章
    Pecker之家开通用于电子元…[02-13]
    印刷电路板图设计经验[04-04]
    基于电力线通信的家庭网络…[03-23]
    利用USB控制器设计的Windo…[01-20]
    基于ARM920T微处理器的IDE…[01-20]
     
     相 关 文 章
    工业4.0之下,汽车电子也无…[00315]
    飞思卡尔S12 MagniV混合信…[00293]
    新型飞思卡尔微控制器可简…[00303]
    江森自控全新信息娱乐系统…[00334]
    罗姆全新突破车载半导体领…[00307]

      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
        没有任何评论