Требуется точный алгоритм параллельного валкования для (GPS) навигации

Я написал программу delphi, генерирующую файл gpx в качестве входных данных для «системы наведения для бедняков» для аэрозольного распыления с помощью сверхлегкого самолета.

По большому счету, он создает маршрут (параллельные ряды) с использованием файла gpx в качестве вывода.

Движок маршрута основан на алгоритме "Винсенти", который отлично работает для любых вычислений wgs84, но я не могу получить точность сетки, созданной ExpertGPS из Topografix (требование).

Я предполагаю 2D-вычисление на эллипсоиде:

  • 1) От начального шага (точки маршрута) вычислите следующий шаг с учетом пеленга и произвольного расстояния (длины полосы).

  • 2) Вычислите следующий шаг, соответствующий предыдущему азимуту (поворот на 90 °) и другому произвольному расстоянию (расстояние по валку).

  • 3) Повторить 1) с последним шагом в качестве отправной точки, но в противоположном направлении, и так далее.

Что с этим не так ?


person menjaraz    schedule 11.11.2011    source источник
comment
Реализация javascript алгоритма Винсенти. И калькулятор для проверки различных входов.   -  person LU RD    schedule 12.11.2011
comment
А вот реализация Delphi delphiforfun   -  person LU RD    schedule 12.11.2011
comment
Я использую немного измененную реализацию delphi, которую я нашел в Интернете, написанную Чарльзом Зейтцем (май 2006 г.) и основанную на коде Javascript Криса Венесса. Я тщательно протестировал его, и, похоже, он работает хорошо.   -  person menjaraz    schedule 12.11.2011
comment
Боюсь, что ExpertGps использует другие предположения, которые я не могу себе представить (сфероид против эллипсоида ...).   -  person menjaraz    schedule 12.11.2011
comment
@menjaraz ExpertGPS не может использовать wgs84. Вероятно, он не использует сферическое решение, но может, сферические решения по своей сути неточны. Модифицированное вами (?) Решение Зейтца может быть не таким точным, как вы думаете. Вы тестировали Винсенти, но против чего? Есть еще одна возможность решения картографии - если не сфероид против эллипсоида; ExpertGPS может использовать геоид. Геоид - очень сложное «точное» решение и маловероятно в их программном обеспечении.   -  person SteveJG    schedule 12.11.2011
comment
@menjaraz Вы не приводите никаких примеров «различий», которые вы отмечаете, величины различий и т. д. Что не может получить точность среднего значения сетки? Если путевые точки идентичны, сетка тоже должна быть. Вы уверены, что при расчете Винсити использовали радианы (а не градусы)? Вы используете консистентные блоки? .. что такое дробные градусы (DD.DDD) по сравнению с градусами / минутами и секундами (DD MM SS)? Дополнительное «руководство» может быть невозможно без предоставления примера «ваших» результатов по сравнению с тем, что вы видите в ExpertGPS.   -  person SteveJG    schedule 12.11.2011
comment
Я просто внес небольшие изменения в интерфейс без дальнейшего влияния на точность.   -  person menjaraz    schedule 12.11.2011
comment
Возможно, эти отрывки дадут вам некоторое представление:   -  person menjaraz    schedule 12.11.2011
comment
К сожалению, для них недостаточно места, и я до сих пор не справляюсь с редактированием.   -  person menjaraz    schedule 12.11.2011
comment
Просто поместите туда код и сделайте отступ по 4 пробела для каждой строки. ? отметка в правом верхнем углу может направить вас или прочитать эту справку по редактированию   -  person LU RD    schedule 13.11.2011


Ответы (2)


Вы не описываете свою реализацию модели земного эллипсоида Винсенти на языке Паскаль, поэтому следующее предположение:

  1. Модель использует многочисленные геометрические триггерные функции - ATAN2, COS, SIN и т. Д. В зависимости от того, используете ли вы внутренние функции Delphi или свои собственные версии, существует вероятность отсутствия точности в расчетах. Точность значения пи, используемого в ваших вычислениях, может повлиять на требуемую точность.
  2. Арифметика с плавающей запятой может вызвать ошибки в десятичных разрядах. Будет иметь значение, используете ли вы одинарный, двойной или настоящий. Я считаю, что некоторые из внутренних функций Delphi изменились в разных версиях, поэтому, возможно, версия Delphi, которую вы используете, повлияет на то, как реализована внутренняя функция.
  3. При правильном применении формула Винсенти должна иметь точность в пределах 0,5 мм. Поразительная точность. Если в вашей реализации Delphi есть ошибки округления или неточность, позиционные ошибки могут быть значительно больше.
  4. Учитывайте точность информации GPS. В зависимости от того, сколько спутников одновременно использует GPS-приемник, точность позиционной информации меняется. Возможны ошибки порядка 50 футов и более. Кроме того, обновление позиционной информации на приемнике GPS не обязательно происходит мгновенно; поэтому, если "повороты" полосы происходят быстро, вам необходимо убедиться, что данные GPS обновляются в точке поворота.
  5. Ваша процедура вычисления шаблона кажется разумной, поэтому посмотрите на свою реализацию алгоритма Винсенти в вашем коде Delphi.
  6. Этот список не является исчерпывающим, я полагаю, что другие могут его значительно улучшить. То, что я упомянул, основано на моем опыте работы с GPS и различными версиями Delphi, а также на том, что я мог вспомнить с головы до ног.
  7. Вы можете попробовать сравнить свои расчеты расстояния / пеленга с использованием вашей реализации алгоритма с примерами, представленными в Интернете. Есть несколько онлайн-калькуляторов. Если вы там не были, Авиационный формуляр - отличное место, где можно найти примеры других уловок навигации. http://williams.best.vwh.net/avform.htm. Сравнение позволит вам убедиться в точности реализации Delphi алгоритма Винсенти с данными, рассчитанными математиками. Просто ваша реализация Винсенти может быть неточной. Опять же, ошибка может быть в другом месте.
person SteveJG    schedule 11.11.2011
comment
Реализацию паскаля алгоритма Винсенти можно найти здесь для изучения. - person menjaraz; 04.12.2011

I am doing farm GPS guidance  similar  for ground rig just with Android. Great for second tractor to help follow previous A B tracks especially  when they disappear  for a bit .

Возможность повторения точности GPS от одного дня к другому даст большее расстояние. Использование дорогих систем. DGPS2cm-10cm. 5-30 метров без dGPS. Простое решение - перекалибровать в известном месте. Более дешевые световые полосы используют этот метод.

Смещение То же, что и выше, за исключением движения во время работы. В основном незаметно ‹20см 3 часа. Редко может прыгать на 1-2 метра. Думаю при спутниковом подключении или отключении. Снова регулярно калибруйте по известным координатам, т. Е. точка заполнения спрея

Точность GPS. У большинства телефонов скорость обновления 1 Гц. 3? секунд между исправлениями при скорости, скажем, 50 км / ч, 41,66 м между исправлениями. На наземной платформе 18 км / ч, но после первого запуска будут гусеницы. Попробуйте Bluetooth GPS 10 Гц, проверьте скорость обновления и, как уже упоминалось, быстро решает проблему.

Точность вводимых данных и то, использует ли ваше руководство dGPS, будет иметь огромное значение.

После того, как вы сойдете с линии, скажем, 5 метров на 100 метрах до следующей точки, затем на 50 метрах вы все еще отклонитесь на 2,5 метра, если ваше руководство не вернет вас к маршруту, а не к следующим координатам.

Я не использую Винсенти, так как могу «врезаться» в линию вручную и с разницей более 1 км <30 см согласно единственной ссылке, которую я видел, однако я беру 2 точки и создаю параллельные точки по горизонтали.

Надеюсь, эти идеи помогут в вашей ситуации.

person user2411316    schedule 22.05.2013