在使用机器人最小惯性参数集计算机器人的力矩时,使用MATLAB自动生成代码到TI的DSP TMS321F28335的时候,发现编译不通过,提示如下错误:

主要错误原因是浮点是超出界限,本着按图索骥的精神,打开生成的C代码进行查看,发现是这里的:
scale = 3.3121686421112381E-170;
/* Function for MATLAB Function: '<S1>/MATLAB Function' */
static real_T MyThing_norm(const real_T x[3])
{
real_T y;
real_T scale;
real_T absxk;
real_T t;
scale = 3.3121686421112381E-170

在将MATLAB代码转换为TI DSP TMS320F28335的C代码时遇到浮点数超出范围错误。通过分析生成的C代码发现scale变量赋值超出double类型最小值。研究TI的float.h头文件并考虑两种解决方案:定位并修复生成代码的源问题,或直接修改scale值。选择第一种方法,通过MATLAB的生成代码报告找到rank函数导致的另一个错误,由于rank函数在稀疏矩阵时不支持生成代码,注释掉该函数后成功编译。

1726

被折叠的 条评论
为什么被折叠?



