Вопрос

У меня есть ИК-датчик, который записывает текущую информацию в токен, который я затем интерпретирую в приложении C#.Все хорошо, проблем нет, вот мой код:

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

Большой.Таким образом, чем дальше ИК-датчик находится от объекта, тем ниже показания датчика (поскольку меньше света отражается обратно и принимается датчиком).

Моя проблема заключается в интерпретации этой длины.Я могу пойти дальше и получить, скажем, «110» в качестве значения, когда объект находится на расстоянии 5 дюймов, а затем «70» в качестве значения, когда объект находится на расстоянии 6 дюймов.Теперь я хочу иметь возможность вычислять расстояние до объекта, используя эти константы, для любой длины.

Есть идеи?

Это было полезно?

Решение

Что ж, первое, что я бы сделал, это взял данные на фиксированных расстояниях, то есть 1 дюйм, 1 фут, 2 фута, 5 футов и т. д.Затем я рисовал эти данные в такой программе, как Excel, и находил наиболее подходящую кривую, из которой можно было вывести функцию.Используйте эту функцию в своем коде и начните тестирование на разных расстояниях.

Теперь это может быть не так просто.Отражательные свойства объекта, который вы пытаетесь измерить, изменят ваши показания, как и другие факторы.Поскольку я не знаю ваших требований, мне сложно дать более конкретный совет.

Другие советы

Это скорее вопрос физики, чем вопроса математики!

Предложение Эда Свангрена создать таблицы с записями различных экспериментов — это правильный путь, если только вы не можете также полагаться на информацию от производителя датчика.

Помимо внутреннего точность и верность устройства, так много факторов могут повлиять на эффективное количество энергии (или того, что возвращается и измеряется);чтение об этом конкретном устройстве или даже о подобных предметах и/или основных физических эффектах/размерах в игре может дать вам дополнительную идею для калибровки.

Когда у вас есть таблица, связывающая измерения с расстоянием (и, возможно, дополнительными критериями, температурой, коэффициентом отражения...), это становится настоящей математической задачей, например:

  • подтвердить статистическую значимость целевой точности
  • экстраполировать реальное чтение с помощью дискретной таблицы (кажется, это оригинальный вопрос ОП)
  • найдите функцию регрессии и покончите с табличным подходом (сомневаюсь, что это будет легко, как намекают в комментариях, и это будет далеко не линейно...

Отраженный ИК-излучение часто используется для обнаружения объектов.Но если форма, угол и отражательные свойства вашей цели (целей) не всегда одинаковы, то измерение интенсивности отраженного ИК-излучения не является надежным методом оценки расстояния.

Есть идеи?

Другая методология зондирования.А как насчет датчика параллакса, такого как этот: http://www.acroname.com/robotics/info/articles/sharp/sharp.html .

немного уточнив квадратную функцию, предложенную 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 + ....

и т. д.но это не добавит особой точности.Вы обнаружите, что коэффициент D для rx^3 и далее будет очень мал.

Надеюсь это поможет

Удачи, записал

Энергия источника света будет падать по мере 1/р2 (для относительно небольшого источника).Помимо этого, если все остальное останется неизменным, единственной проблемой может быть нелинейность датчика.

Чтобы проверить это на ваших данных, вы должны ожидать, что E x r2=const, и это примерно справедливо для ваших данных:
110 х 52 = 2750, и
70 х 62 = 2520,
так что они находятся в пределах 10%, что кажется довольно близким, поэтому похоже, что основное правило будет соблюдаться.

Нелинейные датчики являются обычным явлением, поэтому обязательно проверьте их во всем диапазоне, в котором вы будете их использовать.Но если это линейный датчик, другие проблемы, о которых упоминают люди (например,отражающие поверхности) не будет проблемой, поскольку для пропускания и отражения света все (почти) является линейным и, следовательно, будет компенсироваться одной калибровочной константой.Угол источника света, поглощающие материалы и т. д. не будут иметь значения, пока они не изменятся.

Если вы протестируете несколько точек, включая экстремумы интересующего вас диапазона, и они следуют за 1/r2 правило, ты готов идти.Затем, конечно, вычислите, что такое const, и r = sqrt(const/E).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top