一种基于ARM和FPGA的机器车控制架构系统
未命名
07-27
阅读:104
评论:0
一种基于arm和fpga的机器车控制架构系统
技术领域
1.0001.本发明属于电子信息技术和机器人控制技术领域,具体阐述的是一种基于arm和fpga的机器车控制架构系统。
背景技术:
2.0002.当前,国内外机器车发展迅速,但大部分基于cpu+linux+ros架构控制,此架构存在以下几方面的问题:
3.1.控制系统存在性能瓶颈,无法满足需求:当前,基于ros的机器人反馈系统在某些情景和必要操作下,如信号采集,数据处理和指令执行等,往往会在操作系统的调用下分时复用cpu,导致系统存在性能瓶颈,在加入fpga架构以后,在解决这些问题上,可将各传感器和执行器挂载到fpga上,从而减小cpu的负担。
4.0003.2.信号采集方面存在实时性差,抗干扰性差等问题:
5.当前,大部分机器人采用ethercat接口进行信号采集,采集带ethercat从站接口模块的传感器获得的数据时,作为ros节点之一(或独立运行)的ethercat主站程序必须实时运行,任何比较大的帧发送延迟抖动都有可能导致信号采集不及时,进而影响反馈控制算法的执行。例如,在cpu运算、控制负荷比较大(例如算法更复杂、轴数更多)的情况下,有可能因为数据处理不及时而迫使帧发送时刻延后。事实上,ros1不支持rtos,非实时linux执行(以及开始执行)ethercat主站程序、传感器驱动程序的时间(时刻)很难实现固定,导致ros节点从ethercat主站程序、api处获知有传感器数据待读的时刻也很难实现固定。
6.0004.3.基于ros的架构中数据处理过程存在性能瓶颈:
7.从宏观上看,机器人作为强实时反馈控制系统,应该采用rtos,否则对软件编写的质量要求会很高。但是,ros1不支持rtos,实时性不好。在使用非实时操作系统的情况下,即使针对有实时性需求的功能自己开发了相应的程序模块,或者,对涉及的ros节点程序进行了实时性优化,各ros节点、应用程序的执行仍然必须时分复用cpu(非规整化的应用程序在多核cpu上的显式并行编程是非常复杂的),导致彼此竞争,而操作系统内核运行过程的不可控性、各级软件执行时间的不确定性又将加剧数据处理周期的不确定性,最终导致生成下发指令、交互信息的时刻不确定,以及执行器的动作效果(尤其是协同动作效果)不确定。
8.0005.从微观上看,不论是冯诺依曼体系结构还是哈佛体系结构,反馈控制算法的每一个运算步骤都要遵循指令/数据寻址、取指令/数据、执行指令、写执行结果的流程,其间还必须经过极其复杂的cache更新决策、多级存储器映射、流水线调度等一系列底层软-硬件操作,由此导致大量时间被消耗在底层指令/数据的定位、存取、传输、更新的过程中;并且,其间产生的延迟,还必将因为各种不可预知的复杂情况及其叠加而变得难以预测。
技术实现要素:
9.0006.本发明是为了解决上述机器车控制架构中存在的不足之处,提出一种基于arm和fpga的机器车控制架构系统,以期能在减轻cpu负担的同时提升数据处理的精度和效
率以及机器车对于命令执行速度。
10.0007.本发明是为了解决上述机器车控制架构中存在的不足之处,提出一种基于arm和fpga的机器车控制架构系统,以期能在减轻cpu负担的同时提升数据处理的精度和效率以及机器车对于命令执行速度。
11.0008.本发明为达到上述发明目的,采用如下技术方案:
12.一种基于arm和fpga的机器车控制架构系统的特点包括:arm主控制器模块,fpga从控制器模块,传感器模块,机器车电机驱动模块。
13.0009.所述arm主控制器模块包括arm处理器、片外存储器、通信接口。
14.0010.所述arm处理器对接收到的来自机器车外设敏感元件的信息如距离障碍物的距离、距离目标地点的距离等转换成数据并进行处理如计算出,每个车轮需旋转的倾角,每个电机需要的转向和转速等通过数据编码后发送给fpga从控制器模块。
15.0011.所述片外存储器暂存从各个传感器中通过数据通道读出的数据。
16.0012.所述通信接口用于机器车外设各个传感器与arm控制器间数据的读写传输。
17.0013.所述fpga从控制器模块包括jtag接口模块和fpga芯片。
18.0014.所述jtag接口模块用于对于fpga内部电路功能进行验证与测试,保证芯片功能的正确性。
19.0015.所述fpga芯片会根据由arm主控制器模块和fpga数据处理模块处理的数据产生不同周期和相位的pwm波以此来控制电机转动的方向、转速等。
20.0016.所述传感器模块包括激光雷达、摄像头、超声波传感器等多种类型的传感器,能够是有效识别机器车周围环境并将环境信息传输给各自的上位机。
21.0017.所述机器车电机驱动模块由驱动器、电机和编码器组成,驱动器接收fpga从控制器模块产生的pwm波并驱动机器车电机进行相应的旋转从而带动机器车四个车轮进行不同方向和不同速度的旋转,从而实现机器车的转向、前进、后退等操作;同时,电机当前的状态(转速、转向)通过编码器转换成数据码实时反馈给fpga从控制器以便控制器进行下一步调整。
22.0018.本发明所述的基于arm和fpga的机器车控制架构其特点也在于:
23.所述fpga芯片具有可编程性,可以根据不同的应用场景进行配置。其内部主要的模块包括信号处理模块、数据处理模块、电机控制模块。
24.0019.所述fpga信号处理模块处理信号过程,其特征是按如下方式进行:为每个传感器都提供一块独立的硬件电路作为它们的上位机,形成一个“dma控制器集群”,其中的各成员并行运行。
25.0020.利用fpga片内硬件资源设计控制电路,对集群中的各成员实现高效的协同管理。fpga中的各dma控制器独立响应所负责传感器的中断请求,独立按照各传感器需要的个性化交互模式建立数据通道、读取其数据接口(或读取其数据缓冲区),把读出的上传数据缓存在片内ram块中,按照系统分配下来的cpu外部总线连续地址段对缓存的数据统一编址,视系统需求提供数据更新标记、时间戳。
26.0021.fpga根据预设的规则对传感器上传的中断信号进行合并、统一向linux内核发出中断信号,启动传感器驱动程序读取相应的地址空间。或者,由1个挂在cpu外部总线上的dma控制器统一读取。
27.0022.所述fpga数据处理模块的运算内容其特征在于:
28.利用fpga高速、并行、运算资源极其丰富、定时精确、功能灵活、硬件直接实现算法、操作数存取模式简单高效的特征,运用fpga内的硬件资源,并行执行一部分原本由cpu执行的、不很复杂的、运算量大的ros节点算法(或一部分ros节点算法中的某些步骤),利用片内硬件资源设计控制电路,对各算法模块的运行、彼此之间的数据交互进行高效的协同管理,形成一个协处理器。0023.所述fpga电机控制模块由四个状态机控制模块、四个pwm波产生模块和四个编码器组成,其中机器车的四个电机每个电机由一个状态机控制模块、一个pwm波产生模块、一个编码器模块控制。
29.0024.所述编码器模块的输入为采集到的当前电机状态:电机转速、电流大小和霍尔信号,按照一定的编码规则将三种输入信号编码后传输到状态机控制模块和pwm波产生模块。
30.0025.所述编码器模块的输入霍尔信号为置于无刷电机绕组旁边的霍尔传感器所发出的信号,当电机转动线圈扫过霍尔传感器时霍尔信号输出为高电平,反之则为低电平。
31.0026.所述状态机控制模块共六个状态,分别为:a相两个fet接反相的两个pwm波、b相两个fet接gnd和vcc、c相悬空;c相两个fet接反相的两个pwm波、b相两个fet接gnd和vcc、a相悬空;c相两个fet接反相的两个pwm波、a相两个fet接gnd和vcc、b相悬空;b相两个fet接反相的两个pwm波、a相两个fet接gnd和vcc、c相悬空;b相两个fet接反相的两个pwm波、c相两个fet接gnd和vcc、a相悬空;a相两个fet接反相的两个pwm波、c相两个fet接gnd和vcc、b相悬空;根据当前霍尔信号进行状态的跳转从而实现电机的换相控制。0027.所述状态机控制模块状态的a相、b相、c相为无刷电机的三根线圈,fet为场效应晶体管,可视为开关,是实现电机电流换向电路最主要的部件。
32.0028.所述pwm波产生模块输入为经过编码器编码的当前电机转速信号,根据输入决定产生的pwm波的周期从而控制电机绕组的通电时间从而控制转子的转动速度。
33.0029.进一步的,所述arm处理器主要是通过can总线,利用模糊pid控制算法对无刷电机进行控制。
34.0030.所述模糊pid控制算法,其特征是按如下主要步骤进行:
35.步骤一:对输入量的量化:通过量化函数把输入量投射到一定的数字级别。0031.步骤二:建立模糊规则表:建立模糊推理的规则库或者知识库。
36.0032.步骤三:kp模糊规则设计:提高响应速度,减小稳态偏差。
37.0033.步骤四:ki模糊规则设计:消除系统的静态误差。
38.0034.步骤五:kd模糊规则设计:改变系统的动态特性。
39.0035.步骤六:解模糊处理:使处理对象与具体的物理量相对应。
40.0036.本发明所述的基于arm和fpga的机器车控制架构控制机器车运动过程的特点是按如下步骤进行:
41.步骤一:传感器模块中的传感器采集机器车周围的环境信息并输出电信号传输给各自的上位机(即由fpga提供的硬件电路),fpga中的dma各自响应所负责的传感器的中断请求,并通过各自独有的数据通道和交互方式读取传感器所上传的数据并暂存在片内ram中,按照系统分配下来的cpu外部总线连续地址段对缓存的数据统编址。
42.0037.步骤二:fpga根据预设的规则对传感器上传的中断信号进行合并、统向
linux内核发出中断信号,启动传感器驱动程序读取相应的地址空间。
43.0038.步骤三:根据地址读取出相应数据后由arm处理器对于数据进行预处理,主要完成一些浮点数运算。
44.0039.步骤四:fpga通过各运算模块并行处理各数据通道的数据并进行协同管理,完成剩余的数据处理任务(根据arm和fpga各自的优点可划分它们的计算任务和功能模块)。
45.0040.步骤五:fpga中的状态机控制模块、pwm控制模块根据处理好的数据输入对机器车的电机运行状态进行控制从而控制机器车的运动。
46.0041.与现有技术相比,本发明的有益效果在于:
47.arm具备浮点运算能力,能做复杂的数学运算,而倾角的计算需要用到函数,使用浮点数得到的倾角和融合数据也更加准确,适合完成数据的预处理任务。
48.0042.fpga的时间精度为ns级别,可以实现对时间的精确把控,在精度上比arm高。最重要的是fpga能够同时接收大量数据,由于是并行结构,所以不会发生冲突,可同时完成多项任务,可被用作协处理器来减轻cpu的负担。而且,fpga对于命令的执行非常迅速,接收arm的处理信息后,可以及时得到控制量,适合执行输出。
49.0043.在具体设计时,可根据arm和fpga的优点,划分出各自应负责的功能模块。
附图说明
50.0044.图1是本发明基于arm和fpga的机器车控制系统的控制框图。
51.0045.图2是本发明fpga控制模块的结构框图。
52.0046.图3是本发明pid控制算法的运算流程图。
53.0047.图4是本发明arm控制电机所用的模糊控制器的基本结构框图。
54.0048.图5是本发明模糊pid控制算法整定效果曲线图。
具体实施方式
55.0049.本实施例中,如图1所示,一种基于arm和fpga的控制系统,主要应用于机器车自主运动的控制以及应对机器人对于数据传输和处理实时性的高要求的挑战,并具体包括:arm主控制器模块,fpga从控制器模块,传感器模块,机器车电机驱动模块。
56.0050.所述arm主控制器模块包括arm处理器、片外存储器、通信接口。传感器的输出和中断请求通过通信接口读入arm处理器,arm处理器对于数据进行处理后写入片外存储器中,也可从片外存储器中按照地址读出需要的数据。
57.0051.经过arm处理器的数据处理,部分数据以及处理完毕,也有部分数据交给fpga从控制器模块进行计算和转化。fpga从控制器模块包括jtag接口模块和fpga芯片,jtag接口模块用于对于fpga内部电路功能进行验证与测试,保证芯片功能的正确性;fpga芯片会根据经arm主控制器模块和fpga数据处理模块处理的数据产生不同周期和相位的pwm波以此来控制电机转动的方向、转速等。
58.0052.本实施例中,如图2所示,fpga从控制器中的控制电路包括信号处理模块、数据处理模块、电机控制模块。
59.0053.信号处理模块为每个传感器都提供一块独立的硬件电路作为它们的上位
机,形成一个“dma控制器集群”,其中的各成员并行运行,并利用fpga控制电路,对集群中的各成员实现高效的协同管理。fpga中的各dma控制器独立响应所负责传感器的中断请求,独立按照各传感器需要的个性化交互模式建立数据通道、读取其数据接口(或读取其数据缓冲区),把读出的上传数据缓存在片内ram块中,按照系统分配下来的cpu外部总线连续地址段对缓存的数据统一编址,视系统需求提供数据更新标记、时间戳。根据预设的规则对传感器上传的中断信号进行合并、统一向linux内核发出中断信号,启动传感器驱动程序读取相应的地址空间。
60.0054.数据处理模块并行执行一部分原本由cpu执行的、不很复杂的、运算量大的ros节点算法(或一部分ros节点算法中的某些步骤),并利用控制电路对各算法模块的运行、彼此之间的数据交互进行高效的协同管理,在整个控制系统中作为一个协处理器。
61.0055.所述fpga电机控制模块由四个状态机控制模块、四个pwm波产生模块和四个编码器组成,其中机器车的四个电机每个电机由一个状态机控制模块、一个pwm波产生模块、一个编码器模块控制。所述编码器模块的输入为采集到的当前电机状态:电机转速、电流大小和霍尔信号,按照一定的编码规则将三种输入信号编码后传输到状态机控制模块和pwm波产生模块。
62.0056.状态机控制模块共六个状态,分别为:a相两个fet接反相的两个pwm波、b相两个fet接gnd和vcc、c相悬空;c相两个fet接反相的两个pwm波、b相两个fet接gnd和vcc、a相悬空;c相两个fet接反相的两个pwm波、a相两个fet接gnd和vcc、b相悬空;b相两个fet接反相的两个pwm波、a相两个fet接gnd和vcc、c相悬空;b相两个fet接反相的两个pwm波、c相两个fet接gnd和vcc、a相悬空;a相两个fet接反相的两个pwm波、c相两个fet接gnd和vcc、b相悬空;根据当前霍尔信号进行状态的跳转从而实现电机的换相控制。0057.pwm波产生模块输入为经过编码器编码的当前电机转速信号,根据输入决定产生的pwm波的周期从而控制电机绕组的通电时间从而控制转子的转动速度。
63.0058.在状态机控制电路的控制下,机器车的无刷电机能根据周围环境和当前电机状态调整转速和转向及换相时机。
64.0059.本实施例中,如图3所示,arm处理器采用pid控制算法控制电机,pid控制可以只由一个或两个环节组成,比例环节的作用是成倍调节误差信号,及时产生控制作用来校正偏差;积分环节用于校正稳态误差,使输出值接近目标值;微分环节则通过一个修正信号来防止偏差变大,减小系统的超调量。
65.0060.pid算法的控制原理公式如下所示:
[0066][0067]
其中,e(t)=r(t)-y(t),为偏差信号,将其分别送入三个环节,不同的参数值,可以得出不同的控制量,使控制对象展示不同效果。合理地调节可以使更快,更平稳地接近,得到最佳输出。
[0068]
0061.本实施例中,如图4所示,模糊控制器能根据经验,为每一个控制规则确定适配程度,满足不同需求。模糊控制器由四个模块组成:模糊化接口:确定接口数量,找到论域量化关系,形成模糊集合;知识库:根据调节要求,制定隶属度函数和控制规则;模糊推理机:控制器核心,根据模糊逻辑关系得出模糊控制量;解模糊接口:与模糊化相反,实现数值
的输出。
[0069]
0062.本实施例中,如图5所示,是我们模糊pid算法参数(kp、ki和kd)的整定效果图。从图中可知:通过调节三个参数值,我们使偏差达到了接近于0的状态,输出也达到了最佳的理想状态。
技术特征:
1.一种基于arm和fpga的机器车控制架构系统,其特征在于:arm主控制器模块,fpga从控制器模块,传感器模块,机器车电机驱动模块;所述arm主控制器模块包括arm处理器、片外存储器、通信接口;所述arm处理器对接收到的来自机器车外设敏感元件的信息如距离障碍物的距离、距离目标地点的距离等转换成数据并进行处理如计算出,每个车轮需旋转的倾角,每个电机需要的转向和转速等通过数据编码后发送给fpga从控制器模块;所述片外存储器暂存从各个传感器中通过数据通道读出的数据;所述通信接口用于机器车外设各个传感器与arm控制器间数据的读写传输;所述fpga从控制器模块包括jtag接口模块和fpga芯片;所述jtag接口模块用于对于fpga内部电路功能进行验证与测试,保证芯片功能的正确性;所述fpga芯片会根据由arm主控制器模块输出的数据产生不同周期和相位的pwm波以此来控制电机转动的方向、转速等;所述传感器模块包括激光雷达、摄像头、超声波传感器等多种类型的传感器,能够是有效识别机器车周围环境并将环境信息传输给各自的上位机;所述机器车电机驱动模块由驱动器、电机和编码器组成,驱动器接收fpga从控制器模块产生的pwm波并驱动机器车电机进行相应的旋转从而带动机器车四个车轮进行不同方向和不同速度的旋转,从而实现机器车的转向、前进、后退等操作;同时,电机当前的状态(转速、转向)通过编码器转换成数据码实时反馈给fpga从控制器以便控制器进行下一步调整。2.根据权利要求1所述的基于arm和fpga的机器车控制架构,其特征在于:所述fpga芯片具有可编程性,可以根据不同的应用场景进行配置;其内部主要的模块包括信号处理模块、数据处理模块、电机控制模块;所述fpga信号处理模块处理信号过程,其特征是按如下方式进行:为每个传感器都提供一块独立的硬件电路作为它们的上位机,形成一个“dma控制器集群”,其中的各成员并行运行;利用fpga片内硬件资源设计控制电路,对集群中的各成员实现高效的协同管理;fpga中的各dma控制器独立响应所负责传感器的中断请求,独立按照各传感器需要的个性化交互模式建立数据通道、读取其数据接口(或读取其数据缓冲区),把读出的上传数据缓存在片内ram块中,按照系统分配下来的cpu外部总线连续地址段对缓存的数据统一编址,视系统需求提供数据更新标记、时间戳;fpga根据预设的规则对传感器上传的中断信号进行合并、统一向linux内核发出中断信号,启动传感器驱动程序读取相应的地址空间;或者,由1个挂在cpu外部总线上的dma控制器统一读取;所述fpga数据处理模块的运算内容其特征在于:利用fpga高速、并行、运算资源极其丰富、定时精确、功能灵活、硬件直接实现算法、操作数存取模式简单高效的特征,运用fpga内的硬件资源,并行执行一部分原本由cpu执行的、不很复杂的、运算量大的ros节点算法(或一部分ros节点算法中的某些步骤),利用片内硬件资源设计控制电路,对各算法模块的运行、彼此之间的数据交互进行高效的协同管理,形成一个协处理器;
所述fpga电机控制模块由四个状态机控制模块、四个pwm波产生模块和四个编码器组成,其中机器车的四个电机每个电机由一个状态机控制模块、一个pwm波产生模块、一个编码器模块控制;所述编码器模块的输入为采集到的当前电机状态:电机转速、电流大小和霍尔信号,按照一定的编码规则将三种输入信号编码后传输到状态机控制模块和pwm波产生模块;所述编码器模块的输入霍尔信号为置于无刷电机绕组旁边的霍尔传感器所发出的信号,当电机转动线圈扫过霍尔传感器时霍尔信号输出为高电平,反之则为低电平;所述状态机控制模块共六个状态,分别为:a相两个fet接反相的两个pwm波、b相两个fet接gnd和vcc、c相悬空;c相两个fet接反相的两个pwm波、b相两个fet接gnd和vcc、a相悬空;c相两个fet接反相的两个pwm波、a相两个fet接gnd和vcc、b相悬空;b相两个fet接反相的两个pwm波、a相两个fet接gnd和vcc、c相悬空;b相两个fet接反相的两个pwm波、c相两个fet接gnd和vcc、a相悬空;a相两个fet接反相的两个pwm波、c相两个fet接gnd和vcc、b相悬空;根据当前霍尔信号进行状态的跳转从而实现电机的换相控制;所述状态机控制模块状态的a相、b相、c相为无刷电机的三根线圈,fet为场效应晶体管,可视为开关,是实现电机电流换向电路最主要的部件;所述pwm波产生模块输入为经过编码器编码的当前电机转速信号,根据输入决定产生的pwm波的周期从而控制电机绕组的通电时间从而控制转子的转动速度。3.根据权利要求1所述的基于arm和fpga的机器车控制架构系统,其特征在于:所述arm处理器主要是通过can总线,利用模糊pid算法对无刷电机进行控制;所述模糊pid控制算法,其特征是按如下主要步骤进行:步骤一:对输入量的量化:通过量化函数把输入量投射到一定的数字级别;步骤二:建立模糊规则表:建立模糊推理的规则库或者知识库;步骤三:kp模糊规则设计:提高响应速度,减小稳态偏差;步骤四:ki模糊规则设计:消除系统的静态误差;步骤五:kd模糊规则设计:改变系统的动态特性;步骤六:解模糊处理:使处理对象与具体的物理量相对应。4.一种基于arm和fpga的机器车控制架构系统,其特征是按如下步骤进行:步骤一:传感器模块中的传感器采集机器车周围的环境信息并输出电信号传输给各自的上位机(即由fpga提供的硬件电路),fpga中的dma各自响应所负责的传感器的中断请求,并通过各自独有的数据通道和交互方式读取传感器所上传的数据并暂存在片内ram中,按照系统分配下来的cpu外部总线连续地址段对缓存的数据统编址;步骤二:fpga根据预设的规则对传感器上传的中断信号进行合并、统向linux内核发出中断信号,启动传感器驱动程序读取相应的地址空间;步骤三:根据地址读取出相应数据后由arm处理器对于数据进行预处理,主要完成一些浮点数运算;步骤四:fpga通过各运算模块并行处理各数据通道的数据并进行协同管理,完成剩余的数据处理任务(根据arm和fpga各自的优点可划分它们的计算任务和功能模块);步骤五:fpga中的状态机控制模块、pwm控制模块根据处理好的数据输入对机器车的电机运行状态进行控制从而控制机器车的运动。
技术总结
本发明公开了一种基于ARM和FPGA的机器车控制架构系统,其特征在于:ARM主控制器模块,FPGA从控制器模块,传感器模块,机器车电机驱动模块;所述ARM主控制器模块包括ARM处理器、片外存储器、通信接口,ARM具备浮点运算能力,能做复杂的数学运算,而倾角的计算需要用到函数,使用浮点数得到的倾角和融合数据也更加准确,适合完成数据的预处理任务。FPGA的时间精度为ns级别,可以实现对时间的精确把控,在精度上比ARM高。最重要的是FPGA能够同时接收大量数据,由于是并行结构,所以不会发生冲突,可同时完成多项任务,可被用作协处理器来减轻CPU的负担。而且,FPGA对于命令的执行非常迅速,接收ARM的处理信息后,可以及时得到控制量,适合执行输出。适合执行输出。适合执行输出。
技术研发人员:邹之骞 周冰清 王宇婕 金维森 李勇
受保护的技术使用者:合肥工业大学
技术研发日:2023.04.19
技术公布日:2023/7/25
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
