Использование BayesOpt для байесовской настройки коэффициентов FRC в реальном времени с помощью журналов AdvantageKit наJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Использование BayesOpt для байесовской настройки коэффициентов FRC в реальном времени с помощью журналов AdvantageKit на

Сообщение Anonymous »

Это мой первый пост о Stack Overflow, и я очень рад получить советы от сообщества!

Я работаю над роботом FIRST Robotics Competition (FRC), использующим Java и WPILib, и хочу реализовать байесовскую оптимизацию в реальном времени для автоматической настройки коэффициентов в нашем FiringSolutionSolver.java во время работы.

Текущая настройка

Код: Выделить всё

FiringSolutionSolver.java
[/b] вычисляет решения для стрельбы снарядами для турельного стрелка.
Он использует

Код: Выделить всё

LoggedTunableNumbers
[/b] (через AdvantageKit) для настраиваемых констант, таких как:
  • коэффициент сопротивления
  • масса снаряда
  • площадь снаряда
  • высота запуска
  • цель высота
  • максимальная скорость на выходе
  • параметры итерационного решателя
Другие подробности:
  • Результаты выстрела (попадание/промах) регистрируются в AdvantageKit в режиме реального времени с помощью кнопок ввода оператора.
  • Система обзора (PhotonVision) определяет расстояние и высоту до цели; это не** часть оптимизации**.
  • Снаряд представляет собой 4-дюймовый шарик из пенопласта (3,5 дюйма в сжатом состоянии).
Цель
Мне нужен BOT-тюнер (байесовская оптимизация) Tuner), который выполняет следующие действия:
  • Настраивает все коэффициенты решателя (

    Код: Выделить всё

    LoggedTunableNumbers
    ) в режиме реального времени, когда каждый новый выстрел производится и регистрируется.
  • Использует журналы попаданий/промахов AdvantageKit для информирования цикла оптимизации.

    Advantagekit ведет журналы, но с помощью метода нажатия кнопки на панели управления для записи попаданий или промахов после каждого выстрела. Предполагается реализовать позже.
  • Коэффициенты обновляются мгновенно — без ожидания между выстрелами.
  • Работает полностью на Java – Python или внешние службы не подходят из-за ограничений времени выполнения roboRIO.
  • Является легким и достаточно эффективным для вычислений на роботе в реальном времени.
Ограничения/соображения
  • Я концептуально понимаю байесовскую оптимизацию в высокой степени (суррогат гауссовского процесса, функция сбора данных, последовательное обновление), но никогда реализовал это в коде. Однако я быстро учусь и прошу вас не учитывать барьер знаний при рекомендации вариантов или решений.
  • Мне не нужно настраивать физические свойства мяча или измерения зрения (расстояние до цели по осям); только константы решателя.
  • Аппроксимации допустимы, если полный инкрементный байесовский оптимизатор в Java невозможен.
  • Это должно быть интегрировано непосредственно в базу кода робота для интерактивных обновлений.
Вопросы
  • Существуют ли чистые библиотеки Java, способные онлайн/добавочную байесовскую оптимизацию, подходящие для среды робота FRC? Я думаю о BayesOpt, но у меня есть опасения/вопросы относительно его реализации.
  • Если нет, то как лучше всего реализовать легкий суррогатный или инкрементальный байесовский тюнер для LoggedTunableNumbers в Java?
  • Как мне структурировать код для коэффициента реального времени обновления с использованием журналов снимков AdvantageKit без влияния на другие подсистемы робота?
  • Существуют ли рекомендации по внедрению байесовского оптимизатора в код робота Java, чтобы обновления происходили безопасно и эффективно в режиме реального времени?

    Примечание: обновляйте только после каждого снимка с использованием новых данных, которые дает снимок, таким образом, обновления не будут происходить в середине снимка. Отсюда необходимость быстрого обновления.
Почему это сложно
  • Нам нужны обновления за доли секунды после каждого снимка.
  • Все вычисления должны происходить на roboRIO; никакой разгрузки на Python или внешние серверы.
  • Мы хотим, чтобы это было надежно и безопасно для использования во время практических занятий.
  • Количество настраиваемых коэффициентов составляет ~ 8–10, и их взаимодействие может быть нелинейным.
Любые рекомендации, Java библиотеки, шаблоны кода или примеры для байесовской настройки Java для FRC в реальном времени были бы чрезвычайно полезны.
Заранее спасибо!
Кроме того, это в некоторой степени зависит от времени.

Подробнее здесь: https://stackoverflow.com/questions/798 ... advantagek
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»