基于传感器数据的长度计算

时间:2009-10-30 00:55:10

标签: c# function math sensor

我有一个IR传感器,它将当前信息写入令牌,然后我在C#应用程序中解释。这一切都很好 - 没有问题,继承我的代码:

SetLabelText(tokens [1],label_sensorValue);
sensorreading = Int32.Parse(tokens[0]);
sensordistance = (mathfunctionhere);

大。因此,红外传感器离物体越远,传感器读数越低(传感器反射回来并接收的光线越少)。

我的问题在于解释这个长度。我可以继续前进,当一个物体距离5英寸时让我们说“110”作为值,然后当物体距离6英寸时,将“70”作为值。现在我希望能够使用这些常量计算任何长度的对象距离。

有什么想法吗?

5 个答案:

答案 0 :(得分:5)

嗯,我要做的第一件事是以固定距离获取数据,即1英寸,1英尺,2英尺,5英尺等。然后,我会在像Excel这样的程序中绘制数据,并找到最好的拟合曲线,您可以从中导出函数。在代码中使用该功能,并开始在不同的距离进行测试。

现在,它可能不那么简单。您尝试测量的对象的反射属性将改变您的读数,其他因素也是如此。由于我不知道你的要求是什么,所以我很难提出更具体的建议。

答案 1 :(得分:3)

这更像是一个物理问题,而不是数学问题!

除了您还可以依赖传感器制造商提供的信息之外,Ed Swangren建议使用各种实验记录来创建表格。

除了设备的内在 精度 保真度 之外,有很多因素可能会影响有效性能量(或任何返回和测量的);阅读这个特定的设备甚至是类似的项目和/或物理效果/维度的基本原理可以为您提供校准的额外想法。

一旦你有一个表格将测量值与距离相关联(可能还有其他标准温度,反射因子......),它就成了一个真正的数学问题,例如:

  • 确认目标精确度的统计相关性
  • 使用离散表推断实际读数(似乎是OP的原始问题)
  • 找到回归函数,并取消表格方法(我怀疑这很容易,正如评论中暗示的那样,这将远非线性......

答案 2 :(得分:2)

反射IR通常用于物体检测。但是,如果目标的形状,角度,反射特性并不总是相同,那么测量反射红外线的强度并不是估算距离的可靠方法。

  

有什么想法吗?

不同的传感方法。怎么样,像这样的视差传感器:http://www.acroname.com/robotics/info/articles/sharp/sharp.html

答案 3 :(得分:0)

来自光源的能量会随着 1 / r 2 而下降(对于相对较小的光源)。除此之外,如果其他一切保持不变,唯一的问题可能是传感器中的非线性。

要使用您的数据进行检查,您会发现E x r 2 = const,这大致适用于您的数据:
110×5 2 = 2750,和
70 x 6 2 = 2520,
所以这些都在10%之内,看起来相当接近,所以看起来基本的规则就会存在。

非线性传感器很常见,因此您应该确保在您将使用它的整个范围内进行检查。但如果它是线性传感器,人们提到的其他问题(例如反射表面)将不会成为问题,因为对于光传输和反射,一切(几乎)是线性的,因此将是通过单个校准常数进行固有补偿。只要不改变光源,吸收材料等的角度都无关紧要。

如果你测试几个点,包括你感兴趣的范围的极值,并且它遵循1 / r 2 规则,那么你很高兴。然后,当然,计算const是什么,并且r = sqrt(const / E)。

答案 4 :(得分:0)

详细阐述了tom10提出的平方函数...

我们假设您的设备功能是方形曲线,即

distance = A + B * reading + C * reading^2

现在我们需要找出A,B和C来将你的阅读转换成一个距离,所以我们需要的是一种回归分析。正方形曲线恰好由3个点定义,因此您可以测量3个点(r1..r3)并记录距离(d1..d3)

现在您有3个具有三个未知数的方程式,您可以通过任何方式解决,即

A + r1 * B + r1^2 * C = d1
A + r2 * B + r2^2 * C = d2
A + r3 * B + r3^2 * C = d3

对A,B和C求解一次,这将是您的“校准曲线”,并且可以使用上面的第一个公式计算任何未知距离。当然,如果您更换硬件,则需要在任何设备变化范围内重新校准您的设备。

您可以通过进行第四次测量并将所有上述方程扩展为变量D,即将此机制扩展为立方甚至更高阶曲线,即

A + rx*B + rx^2*C + rx^3*D + ....

等。但它不会增加很多准确性。你会发现rx ^ 3及以后的因子D非常小。

希望这有帮助

祝你好运 拾音