|
2 / 1 / 1
Регистрация: 03.03.2023
Сообщений: 12
|
|
Определение функции максимально быстрого перемещения на заданное расстояние03.03.2023, 14:30. Показов 1242. Ответов 16
Метки нет (Все метки)
Точка перемещается от начала координат до расстояния L. Помимо этого расстояния известна максимально возможная скорость движения, а также максимальное ускорение. Задача: определить гладкую или кусочно-гладкую функцию скорости, при которой точка будет перемещаться за минимально возможное время. В начале и конце маршрута скорость должна равняться 0. На выход выдать массив T, X, V, A.
У меня просто кончились идеи реализации алгоритма. Были такие версии: 1) Движение с переменным ускорением можно выразить как интеграл по v(t), значение которого на концах известны, а площадь, т.е. значение интеграла - пройденный путь. Но чтоб работать с интегралом нужно знать пределы интегрирования, а это время начало и время старта. Разумеется это неизвестно. 2) Сымитировать релейный регулятор. Т.е. ускоряемся в каждой точке до максимального ускорения и максимальной скорости, а где надо тормозим. Но тогда будут разрывы и непонятно что с концом.
0
|
|
| 03.03.2023, 14:30 | |
|
Ответы с готовыми решениями:
16
Добавить папки для быстрого копирования и перемещения файлов. Linux Mint 13 Maya Большое расстояние между иконками в панели быстрого запуска |
|
2 / 1 / 1
Регистрация: 03.03.2023
Сообщений: 12
|
|
| 03.03.2023, 18:19 [ТС] | |
|
Volga_, возможно я совсем не так понял ваш вопрос но попытаюсь. Условимся таким образом:
L - расстояние, которое необходимо пройти (м) Vmax - максимально возможная скорость (м/с) Amax - максимально возможное ускорение (м/(с^2) Начальная координата 0. Конечная (что логично) - L
0
|
|
|
|
|
| 03.03.2023, 19:05 | |
|
если я понял задачу, то решение простое,
выбираем ускорение = максимальное ускорение, направление = на цель, не изменяем их на протяжении маршрута. - приедем быстрее всего!
0
|
|
|
2 / 1 / 1
Регистрация: 03.03.2023
Сообщений: 12
|
|
| 03.03.2023, 19:12 [ТС] | |
|
Volga_, Честно говоря, впервые читаю про это, но ближайшее похоже, что наше из этого - это задача о брахистохроне. Однако там рассматривается движение под действием постоянной силы тяжести, а это не туда.
Добавлено через 2 минуты Kuzia domovenok, Так действительно можно было бы решить, но в условии указано, что в конце маршрута скорость должна быть равной 0. Это значит, что помимо достижения максимумов по ускорению и скорости нужно предусмотреть торможение, дабы в конечной точке остановиться. Это то, что и помешало решить задачу как в простейшей робототехнике с релейным регулятором
0
|
|
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||
| 03.03.2023, 19:21 | ||
|
0
|
||
|
2 / 1 / 1
Регистрация: 03.03.2023
Сообщений: 12
|
||||||
| 03.03.2023, 21:11 [ТС] | ||||||
|
zayats80888, Пока набросал расчет движения только в тех случаях, при которых время разгона не будет превышать половину пути. Но по непонятной мне причине где-то в конце постоянно теряю 1-2 метра от нужного.
Для примера, L = 100, Vmax = 10, Amax = 2 => конечная дистанция 98 метров. Как это сглаживать пока ума не приложу.
0
|
||||||
|
|
||
| 03.03.2023, 21:21 | ||
|
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||
| 03.03.2023, 21:36 | |||
|
Если максимального ускорения будет недостаточно для достижения максимальной скорости. rerre, Походу задачка чисто математическая. Чой-та оно тута делает ? Добавлено через 1 минуту Ну да, там же загвоздка в типе функции, гладкой... Добавлено через 7 минут rerre,
0
|
|||
|
2 / 1 / 1
Регистрация: 03.03.2023
Сообщений: 12
|
|||
| 03.03.2023, 21:44 [ТС] | |||
|
0
|
|||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||||||||
| 03.03.2023, 22:56 | ||||||||
|
Что-то типа такого(не проверял) Кликните здесь для просмотра всего текста
1
|
||||||||
|
2 / 1 / 1
Регистрация: 03.03.2023
Сообщений: 12
|
||
| 04.03.2023, 00:33 [ТС] | ||
|
0
|
||
|
2 / 1 / 1
Регистрация: 03.03.2023
Сообщений: 12
|
||||||
| 06.03.2023, 02:42 [ТС] | ||||||
|
zayats80888, помозговал выходные и пришел к выводу о том, что можно решить задачу без дополнительного сглаживания, пользуясь только определениями гладкой и кусочно-гладкой функциями. Гладкость обеспечивается непрерывностью производной функции. Соответственно, для того, чтобы V(t) была гладкой - a(t) должна быть непрерывной линейной или кусочно-линейной функцией. С такой функцией ускорения остается определить путь, который необходимо пройти за время разгона/торможения, а это двойной интеграл, который спокойно считается численными методами. Расчет скорости и пройденного пути - просто комбинации s v t.
Переделал код. И вроде бы складно, но все равно либо завышает по скорости или пути, либо занижает (в зависимости от случая). Стоит ли вообще в эту сторону идти или искать ответ в другом месте?
0
|
||||||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|||||||||
| 06.03.2023, 16:06 | |||||||||
Сообщение было отмечено rerre как решение
Решение2) Не вижу необходимости интегрирования, можно кусочные функции для всех значений сделать. Тогда для скорости и ускорения использовать линейную интерполяцию, а для перемещения считать по фрмуле, т.к. там квадратичная зависимось. Например, так: c++
2
|
|||||||||
|
2 / 1 / 1
Регистрация: 03.03.2023
Сообщений: 12
|
||||
| 06.03.2023, 17:53 [ТС] | ||||
|
Я стремлюсь к чему-то такому (рисунок ниже). Собственно отсюда и выскочил интеграл. То, что ускорение имеет разрыв перед нулевым значением, является следствием того, что определенное время разгона/торможения является неточным. a(t) = (-aMax/tvMax)*t + aMax при 0 <= t <= tvMax a(t) = 0 при tvMax < t <= tvMax + (halfL - lvMax) / vMax * 2.0 a(t) = (-aMax/tvMax)*(t-(halfL - lvMax) / vMax * 2.0) + aMax при tvMax + (halfL - lvMax) / vMax * 2.0 <= t <= (halfL - lvMax) / vMax * 2.0 + tvMax * 2 Однако и здесь для принятия решения о пути разгона нужно интегрирование.
0
|
||||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|
| 06.03.2023, 18:36 | |
|
0
|
|
| 06.03.2023, 18:36 | |
|
Помогаю со студенческими работами здесь
17
Как максимально быстро получать значения скорости и линейного перемещения Время заданное для перемещения между операциями
Разработать метод, который возводит заданное число х в натуральную степень п, используя алгоритм быстрого возведения Определить номера станций, расстояние между которыми максимально Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|