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

10 控制器的模型(定点算法)

本章介绍NXTway-GS控制器模型的固定点的版本,并认为一个精确的损失和对控制器性能的溢出影响。

10.1 什么是定点数?

定点数是一个近似实数计算的表达方式。它使用整数数据类型代表实数,不使用浮点数据类型。通过以下的比例方程,我们可以

评估定点数的数值。

d6eb565c07c6485859926bf70b4b2efe.gif

10-1.JPG (3.58 KB, 下载次数: 83)

2012-4-18 20:36 上传

其中,S代表每1位的实值,而且当Q值为零时B是实值时。一般而言,S被称为LSB或解析范围,B被称为误差。

定点数字有舍入误差,因为它代表在有限范围内的实数。定点数所代表的最大范围受到限制,长度取决于其字长。字长是整数数据

类型的总比特数。一般来说,在固定的字长时,定点的数有精度与最大范围的限制。

范例    定点数对应的数字,VR =2计算条件下的8位有符号整数,S=0.3,B = 1时。

d6eb565c07c6485859926bf70b4b2efe.gif

10-2.JPG (6.11 KB, 下载次数: 88)

2012-4-18 20:36 上传

在没有FPU的微处理或者DSP上,我们通过定点数来计算实数。一般来说,定点算术有一个优点,它的运行速度更快,而不是

浮点运算。另一方面,它有一个缺点,它有数据范围超出范围可能会发生溢出。表10-1定点和浮点比较。

表10-1定点与浮点

涉及方面定点浮点

执行速度快慢

硬件电源开销低高

RAM / ROM开销小大

Word大小和规模兼容不兼容

最大范围窄宽

错误检测高低

开发时间长短

10.2 浮点到定点数的转换

在MATLAB / Simulink产品内部使用定点数处理能力的定点数工具箱/定点数仿真。参考文献[3]了解定点数建模。

nxtway_gs_controller_fixpt.mdl是nxtway_gs_controller.mdl的定点数仿真版本。它采用定点数据类型来定义方向盘角度,

车身仰角,电池,而不是单精度数据类型变量的。定点转换的关键点有以下几种。

定点数据类型

param_controller_fixpt.m定义在nxtway_gs_controller_fixpt.mdl使用Simulink.NumericType对象。Simulink.NumericType指

定所有数据类型,例如整数,浮点和定点。

d6eb565c07c6485859926bf70b4b2efe.gif

10-3.JPG (23.33 KB, 下载次数: 81)

2012-4-18 20:38 上传

一般来说,控制器的性能取决于它使用的数据类型。在使用相同的字长在有精度和覆盖范围之间的取舍,如图示10.1了什么是定点数?

对控制器设计这些是需要考虑的,以便找到最好的定点数的设置。

NXTway-GS的案例中,方向盘角度和车身仰角的定点数的设置非常重要,,如果精度的损失或者发生溢出将导致NXTway-GS不能平

衡。我们能够估算NXTway-GS移动多远由下列公式​​。

d6eb565c07c6485859926bf70b4b2efe.gif

10-4.JPG (4.63 KB, 下载次数: 81)

2012-4-18 20:38 上传

R是车轮的半径而S是dt_theta的斜率. Table10-2显示NXTway-GS通过不同的斜率得到最大移动距离。

d6eb565c07c6485859926bf70b4b2efe.gif

10-5.JPG (8.01 KB, 下载次数: 84)

2012-4-18 20:39 上传定点模型(nxtway_gs_controller_fixpt.mdl)

nxtway_gs_controller_fixpt.mdl是nxtway_gs_controller.mdl修改版本,修改如下:

z 转换单精度数据类型到定点数据类型

z 因为不同类型的数据信号是无法信号矢量化的,通过MUX模块矢量化相同的数据类型的信号

z 在数据类型转化模块中由PWM计算中来调整斜率

d6eb565c07c6485859926bf70b4b2efe.gif

图10-1 NXTway-GS 控制器定点设置.JPG (18.44 KB, 下载次数: 82)

2012-4-18 20:40 上传

图10-1  NXTway-GS控制器定点设置

d6eb565c07c6485859926bf70b4b2efe.gif

图10-2 信号矢量化.JPG (27.26 KB, 下载次数: 80)

2012-4-18 20:41 上传

图10-2信号矢量化

d6eb565c07c6485859926bf70b4b2efe.gif

图10-3 在PWM计算中调节斜率.JPG (22.23 KB, 下载次数: 87)

2012-4-18 20:41 上传

图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不能平衡。

d6eb565c07c6485859926bf70b4b2efe.gif

图10-4 不同斜率仿真结果(2E-6 = 2-6).JPG (31.95 KB, 下载次数: 84)

2012-4-18 20:42 上传图10-4不同斜率仿真结果(2E-6 = 2-6)

另一方面,较小斜率意味着NXTway-GS的最大移动距离变短。例如,当斜率设置为2-22,因为溢出的,NXTway-GS将运行 0.36[M](参阅表10-2)。

图5是NXTway-GS溢出倒下时捕获的图像。

d6eb565c07c6485859926bf70b4b2efe.gif

图10-5 NXTway-GS数值 溢出而倒下.JPG (21.94 KB, 下载次数: 81)

2012-4-18 20:43 上传

图10-5 NXTway-GS数值溢出而倒下

10.4 代码生成和经验结果

由nxtway_gs_controller_fixpt.mdl的代码生成和下载程序的过程nxtway_gs_controller.mdl相同。生成的代码只使用整数数据类型。

当我们下载定点数代码到NXT中,我们可以看到相同仿真结果(控制器的执行和溢出)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值