• Какие алгоритмы применяются для фильтрации GPS координат?

    @4ainik Автор вопроса
    начинал с бейсика на 286 в 1994
    Вот графики широты и долготы и ниже дельта (расстояние) в метрах.
    Забавно то, что в начале первое время ГПС координаты не меняются вообще, зато потом начинается блуждание. Все это время телефон стоял у окна абсолютно неподвижно.
    Интересный момент, когда на первом графике в первый раз скачкообразно меняются обе координаты, то на графике дельты (расстояния) нету никакого изменения, т.е. каким-то странным образом получается несмотря на скачок телефон все равно неподвижен.
    Почитав похожие топики и про фильтр Кальмана возникло подозрение, что GPS датчик уже и так его применяет, так ли это?
    e7176eebb56c4b929a4d73aa58c96684.png

    А вот новый график расстояний, получен следующим образом: получаем широту и долготу ГПС, вычисляем x,y,z координаты, загоняем каждую координату в свой фильтр Кальмана. В результате картина получается значительно лучше, максимальный разброс около 6 вместо 10, но опять же не обошлось без ложки дегтя: на том самом начальном участке появился значительный всплеск с последующим шлейфом.
    28d40c0d956b49d096cb2cbc71f1c4c9.png

    Пришла в голову мысль вычислять координаты сразу в двух вариантах с фильтром и без и брать из них наименьшее, в результате картина стала еще лучше, правда это для статического режима, а вот как поведет себя в движении сказать сложно :)
    87b33419bf93410982115d1a6011c97d.png
    Ответ написан
  • Как перевести в метры разницу в координатах GPS?

    @4ainik Автор вопроса
    начинал с бейсика на 286 в 1994
    нарыл в википедии матерую формулу для вычисления координат точек (x,y,z)
    так же нарыл формулу расчета расстояния между двумя точками в пространстве
    взял средний радиус земли - профит! :)
    Ответ написан
    1 комментарий
  • Как в джаве работать с массивами?

    @4ainik Автор вопроса
    начинал с бейсика на 286 в 1994
    ArrayList a = new ArrayList();
    for(int j = 0; j < x; j++){
    short[] buf = new short[200];
    count = func(buf, 200);
    for(int i = 0; i < count; i++){
      a.add(buf[i]);
    }
    }

    ...
    после накопления данных пытаюсь обработать
    int sum = 0;
    for(int i = 0; i < a.size(); i++){
       sum += a.get(i); //тут собственно не важно какая операция сложение/умножение, 
    ошибка та же, что объект не может быть преобразован к int
    }


    пробовал еще по типу Си, vector :)
    но там опять же какая-то беда при объявлении
    Vector<short> = new Vector<short>();

    "Syntax error, insert "Dimensions" to complete ReferenceType"
    Ответ написан
  • Как пушить на github чтобы не вводить каждый раз логин и пароль?

    @4ainik
    начинал с бейсика на 286 в 1994
    линуксоиды настолько суровы что забивают гвозди штангенциркулем :)

    вот скрипт на руби который позволяет не вводить каждый раз логин/пароль

    f = IO.popen("git push origin master", 'r+')
    f.puts ""
    f.puts ""
    sleep(10)
    Ответ написан
    2 комментария