找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 11619|回复: 3

虚拟NXT的NXTway-GS自行平衡两轮机器人教程(10)

[复制链接]
发表于 2012-4-18 20:44:14 | 显示全部楼层 |阅读模式
10 控制器的模型(定点算法)
本章介绍NXTway-GS控制器模型的固定点的版本,并认为一个精确的损失和对控制器性能的溢出影响。
10.1 什么是定点数?
定点数是一个近似实数计算的表达方式。它使用整数数据类型代表实数,不使用浮点数据类型。通过以下的比例方程,我们可以
评估定点数的数值。
10-1.JPG
其中,S代表每1位的实值,而且当Q值为零时B是实值时。一般而言,S被称为LSB或解析范围,B被称为误差。
定点数字有舍入误差,因为它代表在有限范围内的实数。定点数所代表的最大范围受到限制,长度取决于其字长。字长是整数数据
类型的总比特数。一般来说,在固定的字长时,定点的数有精度与最大范围的限制。
范例
    定点数对应的数字,VR =2计算条件下的8位有符号整数,S=0.3B = 1时。
10-2.JPG
    在没有FPU的微处理或者DSP上,我们通过定点数来计算实数。一般来说,定点算术有一个优点,它的运行速度更快,而不是
浮点运算。另一方面,它有一个缺点,它有数据范围超出范围可能会发生溢出。表10-1定点和浮点比较。
                                                                                                                                                     10-1定点与浮点
涉及方面
定点
浮点
执行速度
硬件电源开销
RAM / ROM 开销
Word 大小和规模
兼容
不兼容
最大范围
错误检测
开发时间
10.2 浮点到定点数的转换
MATLAB / Simulink产品内部使用定点数处理能力的定点数工具箱/ 定点数仿真。参考文献[3]了解定点数建模。
nxtway_gs_controller_fixpt.mdlnxtway_gs_controller.mdl的定点数仿真版本。它采用定点数据类型来定义方向盘角度,
车身仰角,电池,而不是单精度数据类型变量的。定点转换的关键点有以下几种。
定点数据类型
param_controller_fixpt.m定义在nxtway_gs_controller_fixpt.mdl使用Simulink.NumericType对象。 Simulink.NumericType
定所有数据类型,例如整数,浮点和定点。
10-3.JPG
一般来说,控制器的性能取决于它使用的数据类型。在使用相同的字长在有精度和覆盖范围之间的取舍,如图示10.1了什么是定点数?
对控制器设计这些是需要考虑的,以便找到最好的定点数的设置。
NXTway-GS的案例中,方向盘角度和车身仰角的定点数的设置非常重要,,如果精度的损失或者发生溢出将导致NXTway-GS不能平
衡。我们能够估算NXTway-GS移动多远由下列公式​​
10-4.JPG
R 是车轮的半径 S dt_theta的斜率. Table10-2 显示NXTway-GS通过不同的斜率得到最大移动距离。
10-5.JPG
定点模型 (nxtway_gs_controller_fixpt.mdl)
nxtway_gs_controller_fixpt.mdl nxtway_gs_controller.mdl 修改版本,修改如下:
z   转换单精度数据类型到定点数据类型
z   因为不同类型的数据信号是无法信号矢量化的,通过MUX模块矢量化相同的数据类型的信号
z   在数据类型转化模块中由PWM计算中来调整斜率
图10-1  NXTway-GS 控制器定点设置.JPG
10-1  NXTway-GS 控制器定点设置
图10-2  信号矢量化.JPG
10-2  信号矢量化
图10-3  在PWM计算中调节斜率.JPG
10-3  PWM计算中调节斜率
10.3 仿真结果
为了仿真nxtway_gs_controller_fixpt.mdl, nxtway_gs.mdl / nxtway_gs_vr.mdl为参考修改控制器为需要模型。
在改变参考模型中,右键单击块,并选择[Model Reference Parameter]编辑[Model name]。

我们可以看到控制器的性能是多种多样的,根据定点数数据类型通过使用几个不同斜率(dt_theta)的车轮角(deg)的的精度。图10-4是
通过dt_theta不同斜率时,静态平衡的模拟结果(车体的仰角的初始值是5deg)。结论收敛时间和波动同斜率的变化成正比。当斜率
比2^-5较大时,因为精度损失过大,NXTway-GS不能平衡。
图10-4  不同斜率仿真结果(2E-6 = 2-6).JPG
10-4  不同斜率仿真结果(2E-6 = 2-6)
另一方面,较小斜率意味着NXTway-GS的最大移动距离变短。例如,当斜率设置为2-22,因为溢出的,NXTway-GS将运行 0.36[M](参阅表10-2)。
图5是NXTway-GS溢出倒下时捕获的图像。
图10-5 NXTway-GS数值 溢出而倒下.JPG
10-5 NXTway-GS数值 溢出而倒下
10.4 代码生成和经验结果
由nxtway_gs_controller_fixpt.mdl的代码生成和下载程序的过程nxtway_gs_controller.mdl相同。生成的代码只使用整数数据类型。
当我们下载定点数代码到NXT中,我们可以看到相同仿真结果(控制器的执行和溢出)。

如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2012-7-4 06:46:26 | 显示全部楼层
当然了,simulink里面的定点顾问和定点工具箱是非常好的,自动记录最大最小值,自动给你一些定点建议,还可以写测试激励,看看覆盖度报告,完整的验证模型正确性。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2012-10-28 16:19:14 | 显示全部楼层
太复杂了
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|中文乐高 ( 桂ICP备13001575号-7 )

GMT+8, 2024-4-28 17:57 , Processed in 0.208259 second(s), 26 queries .

Powered by Discuz! X3.5

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表