Расчет длины на основе данных датчика - PullRequest
0 голосов
/ 30 октября 2009

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

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

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

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

Есть идеи?

Ответы [ 5 ]

5 голосов
/ 30 октября 2009

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

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

3 голосов
/ 30 октября 2009

Это больше вопрос физики, чем математический вопрос!

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

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

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

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

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

Есть идеи?

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

0 голосов
/ 30 октября 2009

чуть более подробно остановимся на функции квадрата, предложенной 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 и далее будет очень мал.

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

Удачи MikeD

0 голосов
/ 30 октября 2009

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...