Как бороться с сонарными перекрестными помехами

10

Наш робот имеет круглую матрицу из 12 датчиков сонара, которая выглядит следующим образом:

введите описание изображения здесь

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

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

введите описание изображения здесь

Мы полагаем, что эта ошибка вызвана перекрестными помехами, когда импульс одного датчика сонара отражается от стены под углом и принимается другим датчиком. Это систематическая ошибка, поэтому мы не можем справиться с ней так же, как с шумом. Есть ли какие-либо решения, чтобы исправить это?

Robz
источник
связанные: «Вопрос о множественном ультразвуковом дальномере» . Должен ли я скопировать и вставить свой собственный ответ оттуда сюда?
Дэвид Кэри

Ответы:

10

Это общая проблема, и одна из многих. Акустическое зондирование является сложной областью исследования, значительная часть которой посвящена предположению, по какому пути прошла звуковая волна между ее отправкой и получением. Как вы уже заметили, если предположить, что все получилось и вернулось назад, на практике вы получите странные результаты.

Чтобы действительно решить эту проблему, вам нужно использовать систему, которая устанавливает уникальную частоту и / или длину тона на каждом датчике. Это может быть принято до значительных пределов, например, псевдослучайная широтно-импульсная модуляция со скачкообразной перестройкой частоты, чтобы устранить помехи от сонарных датчиков в мобильных роботах .

Существует также низкотехнологичное решение, которое довольно просто в концепции. Если вы хотите просто обнаружить перекрестные помехи, это будет вопрос запуска импульса одного датчика между импульсами всех датчиков. Если вы обнаружите обратный импульс с помощью любого другого датчика, вы знаете, что находитесь в ситуации перекрестных помех.

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

В вашем конкретном случае вы получаете дополнительное преимущество от показанного вами датчика камеры, который возвращает более правильное значение для диапазонов. Стратегии объединения отдельных (и, возможно, противоречивых) измерений в одну более точную оценку - это отдельная очень широкая тема (называемая объединением , пример 1 , пример 2 ), но очень важная для того, что вы здесь делаете.

Ян
источник
5

Некоторые датчики, такие как Maxbotix MB1200 XL-MaxSonar-EZ0, имеют встроенную систему последовательного подключения, в которой один датчик запускает следующий датчик после завершения измерения. Таким образом, вы можете иметь N датчиков и убедиться, что только один срабатывает одновременно, но там срабатывает следующий датчик, как только первый из них соберет свое возвращение. Это простое решение, но, очевидно, значительно сокращает объем данных, которые вы получаете за единицу времени. Решения Яна намного ближе к оптимальным.

foobarbecue
источник
4

Можно ли использовать несколько ультразвуковых датчиков на одном роботе? Да: «Использование нескольких датчиков сонара» .

Как вы уже поняли, один датчик часто получает эхо-сигналы, отправленные другим датчиком. Есть несколько способов справиться с перекрестной чувствительностью, примерно в порядке простоты:

  • Пропингуйте только один преобразователь за раз, игнорируя все остальные преобразователи, ожидая, пока «призрачные эхо» от текущего преобразователя стихнут, прежде чем отправлять пинг следующему преобразователю. Это намного быстрее, чем механическое вращение одного датчика. Возможно, это будет достаточно быстро, если только ваш робот не будет толкать вещи почти со скоростью звука.
  • Используйте относительно узкие передатчики или приемники угла пучка (или оба) для каждого датчика и увеличивайте угол от одного датчика к следующему, чтобы один датчик не мог слышать эхо-сигнал от другого (если только материал перед датчиком не вызывает странных боковых отражений) ) - датчики под углом примерно так же, как угол луча. Увы, между датчиками остаются «слепые зоны», где объекты не видны никаким датчикам.
  • Некоторая комбинация - например, увеличить угол от одного датчика к другому, чтобы один датчик слышал эхо только от своих двух соседей (около половины угла луча); затем чередуйте между проверкой четных преобразователей (игнорируя нечетные преобразователи) и проверяя нечетные преобразователи (игнорируя четные преобразователи).
  • Каждый преобразователь работает на разной частоте. Увы, все недорогие ультразвуковые преобразователи, за редким исключением , настроены на резонанс при 40 кГц. При прослушивании различных сигналов эти преобразователи могут «слышать» только те сигналы, которые находятся в пределах нескольких кГц от 40 кГц. Вам придется балансировать (а) Чем дальше от 40 кГц вы используете преобразователь, рассчитанный на 40 кГц, тем менее чувствительным он будет, поэтому вы хотите, чтобы частота была «относительно близка» к 40 кГц; и (а) Чем ближе все частоты вместе, тем сложнее провести различие между ними, поэтому вам нужен набор частот, которые распределены «относительно далеко друг от друга». Я не знаю, есть ли хороший компромисс или нет - если нет, вы застряли (в) использовать более дорогие датчики, настроенные на другие частоты,«широкополосные» датчики, не настроенные на какую-либо конкретную частоту.
  • Используйте различные интервалы передачи, чтобы исключить призрачные эхо. Допустим, вы передаете слева, задерживаете 2 мс (недостаточно для того, чтобы погасить эхо-сигналы), затем передаете справа, ... после того, как эхо-сигналы исчезают, затем передаете слева, задерживаете 3 мс, затем передаете из право. Если правильный приемник получит эхо-сигнал через 5 мс спустя оба раза, то вы можете быть уверены, что это реальное эхо; если правый приемник получит эхо-сигнал через 5 мс спустя в первый раз, а через 6 мс - во второй раз, это, вероятно, призрак от левого приемника. (Существуют гораздо более сложные методы «расширенного спектра» для разделения множества передатчиков, использующих одну и ту же частоту в одно и то же время.)
  • Объедините сигналы от всех приемников. Если у вас есть один центральный передатчик, который пингует во всех направлениях (или, что то же самое, у вас есть передатчики, направленные во всех направлениях, и вы пингуете их всех в одно и то же мгновение), и первое возвращаемое эхо-сигнал сначала попадает на левый приемник (затем на правый) приемник слышит эхо), вы знаете, что ближайшее препятствие находится ближе к левой стороне, чем к правой стороне. (Существуют более сложные методы «фазированной решетки», которые объединяют сигналы от всех приемников, и еще более сложные методы «формирования луча» для небольшой корректировки времени передачи всех передатчиков.)

PS: Вы видели "Инфракрасный против Ультразвукового - Что вы должны знать" ?

(Да, я уже говорил об этом раньше, на «Вопросе о нескольких ультразвуковых дальномерах» .)

Дэвид Кэри
источник