Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Приведение полярных координат


Автор: Mechatronic 19.7.2012, 16:01
Здравствуйте, есть такая задача:
Начальные условия:
Два орудия направлены в одну точку на расстоянии N метров от линии их стояния. 
Известны углы, на которые повернуты оба орудия. 
Расстояние N, расстояние между точками стояния орудий не известны и не могут быть введены в систему оператором орудий.
Таких точек можно получить несколько на этапе настройки.


Задача:
В "рабочем" режиме дно из орудий постоянно поворачивается и сообщает свои координаты по каналу связи (является ведущим).
Необходимо перемещать ведомое орудие так, чтобы точка пересечения осей стволов обоих орудий (точка, в которую смотрят оба ствола) перемещалась по линии, параллельной линии стояния орудий и находящейся на расстоянии N метров от линии стояния.


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

Надеюсь, не запутал.
Спасибо! 

Автор: Pavia 19.7.2012, 16:40
Так как цель движется параллельно линии пушек.
То достаточно построить зависимость угла 2 пушки от угла первой пушки аппроксимировать её уравнением с простым числом множителей.

Вот только боюсь точности не хватит. Скорее всего сгодится обычная практика линейная  интерполирование. И раз в несколько секунд точный расчёт.

Автор: Mechatronic 19.7.2012, 16:56
Спасибо за отклик!
А зачем раз в несколько секунд пересчет делать? 
На случай, если погрешность сильно рассинхронизирует устройства?

Добавлено @ 16:57
Еще вопрос: Я так понимаю, если потребуется выбирать цель не параллельно линии стояния, а на заданном радиусе от ведущего (ведущий и ведомый внутри окружности), подход будет аналогичен?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)