我们在向用户提供技术服务时,经常被问到传感器清零相关的问题,清零有时也被叫做去皮。
六维力传感器的清零,指的是用户通过命令或者某些运算,指定一个状态为传感器的参考状态,传感器此后的数据都以这个参考状态为基准进行输出。
对于六维力传感器,这个参考状态是包含六个分量受力信息的一组数据。比如,传感器平放在桌面上,它的输出是各个方向都接近0的一组数据,在被安装好后,由于受到末端工具、自身重力、安装面角度等因素的影响,它的数据输出已经和在桌面上不同了,可能某一个或多个方向的受力值远大于零。
这个时候,用户总是希望根据自己的工况,把当前的传感器状态作为参考值,传感器之后的数据都减去这组参考值,这种记录参考值并重新计算输出结果的操作就叫做清零或去皮。
其实,用户有这样的需求很好理解,因为对于一个理想的传感器,我们总是希望它在我关注的动作产生之前是0,动作产生之后的数据增量就是我们想要的受力测量值。但实际上的传感器不是理想化的,它的输出是基于出厂时的零位状态给出的,它并不清楚自己目前处于什么状态,是平放还是侧放,所以它的输出在用户认为的零位状态并不是理想的一组零值。那么就需要用户重新指定一个零位状态,让传感器的数据都以这个新的状态为基准进行输出。
传感器的清零操作分为硬件和软件两种:
硬件清零就是上位机通过一条命令,要求传感器固件记住当前测量值作为参考值,此后的测量输出都是在这个新的参考值基础上给出的。
软件清零就是上位机软件或者程序记下当前值作为参考值,在此后收到的数据都是在这个参考值基础上重新计算得到的。这两种方法的处理逻辑是一样的,但其实效果略有不同。
这是因为我们实际在做清零操作的时候不能只取当下时刻的这一个值
作为参考,实际的力传感器是非理想化的,它的数据总是一直在小幅波动变化,如果仅取当下时刻的值作为参考,很有可能这个参考值是偏离过去一段时间内的均值的,所以我们需要连续采集一小段时间的数据,这个时间段在几十到一两百毫秒比较合适,然后计算这段时间数据的算数平均值作为参考值。刚才我说硬件和软件清零的效果不同,就是计算这段连续数据的平均值所用时间不同造成的。传感器内部的嵌入式处理器主频只有几十兆,它的运算能力太差,计算数据的平均值需要一两秒的时间。上位机软件是运行在主频有几千兆的CPU上的,它做这个运算仅需要非常短的时间,比如几微秒。所以软件清零操作相比硬件清零需要的时间短很多,这样用户使用这两种清零方式的体验就很不相同。大多数用户都是使用软件来做传感器的清零操作,这样更灵活,实时性更好。