Здравствуйте.
Спасибо за советы.Позвольте мне более подробно описать то, чем я занимаюсь и более четко обозначить свою проблему.
У меня есть радиоуправляемый вертолет, собранный самостоятельно. На нем стоит 2 (пока) контура автопозиционирования:
1) оптика: видеокамера, которая получает сигнал в виде специальных контрастных меток, распознает их и на основе этих меток выбирает направление движения. В целом работает, но требует отладки кода. Собрано на базе 2 АРМ контроллеров и 1 управляющего Атмела, одной видеокамеры и обвязки. Сложного ничего нет: картинку с камеры переводим в оттенки серого, ищем подобие меток, хранимых в памяти и пр. Когда находим - решаем что делать (каждая метка обозначает определенную координату). Соответственно точность - никакая: метки ведь часто не натыкать, да и расставлять их довольно сложно.
В связи с этим, я ввел в свою систему второй контур, идею которого я позаимствовал из идеи работы GPS: синхронизация по маякам.
2) По краям или периметру площадки стоят маяки, которые каждые 10 с (время меняется) синхронизируются. Каждый из маяков имеет на борту: GPS/ГЛОНАСС чип для первичной инициализации своего местоположения, радиопередатчик и приемник, батарея, устройство первичной синхронизации (контакт или тумблер) и контроллер. Каждый из маяков может быть проинициализирован либо автоматически - GPS или другая система, либо вручную (по радиоканалу). Если выбран автомат, то маяк каждые
n секунд (пока еще не думал на эту тему) запрашивает свои координаты у GPS, вычисляет среднее, убирает "выбросы" и пр. Здесь главное не переборщить, так как GPS здорово садит батарею, а ставить Литий-полимер больше, чем 5800 мА/ч от вертолета я не могу - нет денег ). Время работы хотелось бы в районе суток.
Ну так вот. Каждый маяк имеет свой позывной (идентификатор) и простой (протокол) работы с ним. Используя протокол при отключенном маяке (так как работа по настройке маяка может нарушить позиционирование, так как может измениться дискретность отправления сигналов) можно настроить время на маяке, узнать заряд батареи, узнать местоположение маяка (чтобы его забрать, когда уже он будет не нужен), отключить (режим радиомолчания) и пр. Здесь я пока только думаю, но уверен, что функций много не будет, чтобы не увеличивать код и повысить скорость работы маяка. Хотя уже сейчас я вижу, что придется каскадировать контроллеры: один занимается радиообменом на частоте минимум 40Мгц, другой - всей остальной обработкой. Хотя здесь тоже надо додумывать.
Что касается синхронизации: я думал много, так как на площадке 100х100 метров ошибка рассогласования в 1*10^(-6) дает погрешность около 10 см. Это много. Так вот, синхронизацию я предлагаю проводить либо с помощью выделенного высокоточного широковещательного радиомаяка (он выполняет и роль маяка и роль синхронизатора либо просто синхронизатора, что накладно) либо проводить синхронизацию "по цепочке" с коррекцией времени синхронизации в зависимости от расстояния. Объясню подробнее: один из маяков получает точное время с 3-4 маяков GPS или в ручном режиме с консоли управления маяком. Он свое время и свое положение передает маяку с наименьшим идентификатором (а каждый из маяков будет иметь свой идентификатор типа номера... ну пусть от 1 до 255). Маяк получив время, пытается вычислить разницу положений и поправку к своему времени . Сделав это, он передает свое положение и время следующему маяку со следующим идентификатором, и т.д. Да, знаю, немного сложно, но может вы чего предложите?
Теперь что касается непосредственно определения положения: объект, который хочет определить свое положение, слушает эфир. Каждый из маяков с дискретностью 1 с выдает в эфир свое время и координаты. (Или только время для уменьшения объема данных. Тогда координаты маяков можно передать во время первичной инициализации всей системы... Тут надо пробовать.). Приемник получает эти данные, обрабатывает по алгоритму триангуляции, сравнивает с предыдущим значением и текущей скоростью (вряд ли скорость меняется резко, а вот если координата изменилась метров на 10-15 за 1с - это "выброс" и его нужно исключить из расчетов и лучше пропустить этот шаг вычислений и использовать предыдущую координату... то есть нужно проводить постобработку..)
Мои общие замечания по результатам нескольких опытов:
- точное время вовсе необязательно. Ведь можно использовать тупой инкремент переменной типа double или float минимально допустимыми значениями и обязательно предусмотреть проверку на предельное дробное число... Здесь выигрываем в том, что RTC нам не нужны, соответственно упрощается схема и увеличивается скорость работы. Спасает нас также то, что при правильной работе разница между показаниями нескольких маяков будет обусловлена лишь задержкой времени прохождения сигнала, и выбросы будет легко отбросить...
- будет легко реализовать и абсолютные (в координатах широта-долгота) и относительные (сдвиги относительно краевых маяков) определения местоположения. Просто инициализируем маяки другими значениями...
Собственно, мои проблемы:
Каюсь, я ноль в радио. Слишком много задач приходится решать, некогда сесть и разобраться. Но я обязательно найду на это время, а пока мне непонятно вот что:
1) Какой частотный диапазон выбрать? Какую мощность (предельную) можно использовать в нем? Как вы понимаете, маяки могут стоять и на равнине, и на холмистой местности. В моей части России (Мурманская область) равнин почти нет, сопки и пр. Где-то читал, что короткие волны имеют способность обходить небольшие препятствия, если последние не превышают длины волны... Обязательно хотелось бы не иметь проблем с лицензированием, то есть не проводить его. В то же время понимаю, что абсолютно некорректно говорить о "дальности" радиосвязи, но хотелось бы подальше.
2) Какие готовые радиомодули вы мне могли бы посоветовать? СС110х я обязательно посмотрю, а еще? Хотелось бы, чтобы передатчик имел простой интерфейс для работы и небольшие накладные расходы, иначе это выльется в заморочку с поправками на время передачи...
3) А можно ли данную систему приспособить для работы в помещениях? Пусть и с неширокими перекрытиями, но все же? Что для этого нужно?
Если прочитали - большое спасибо. Ну а если даже что-то напишете - ОГРОМНОЕ спасибо!