Функция привода в MicroPyhton для LEGO EV3
Я пытаюсь понять функции класса DriveBase от MicroPython для EV3. Я создаю экземпляр объекта DriveBase следующим образом
robot = DriveBase(left_motor, right_motor, wheel_diameter=55.5, axle_track=104)
Когда я бегу
robot.drive(speed, angle)
с более высокой скоростью робот не ускоряется плавно, как при использовании
robot.straight(distance)
функция и почти всегда немного меняет направление при запуске робота.
Есть ли у вас предложения?
Спасибо
5 ответов
Это происходит потому, что один из двигателей более изношен (истощен) и имеет худшую / меньшую «мощность».
"почти всегда немного меняет направление при запуске робота"
Чтобы исправить это, попробуйте установить два двигателя на максимальное значение скорости (100) и уменьшить значение двигателя, который вращается слишком быстро -
повторяйте, пока они не начнут плавно работать.
Просто установите значение одного двигателя на это значение, когда оба двигателя двигаются вперед (более низкое значение скорости более быстрого двигателя).
Если ничего из вышеперечисленного не работает:
используйте другой мотор из комплекта или замените его - вы также можете открыть корпус мотора lego и заменить мотор (движущиеся части, без редуктора) или просто смазать его для увеличения скорости.
Я не думаю, что класс DriveBase имеет какие-либо настройки ускорения для .drive(). Возможно, вы сможете создать свою собственную функцию для ускорения в .drive() или использовать ПИД-регулятор с гироскопическим датчиком, чтобы робот продолжал двигаться. желаемый угол/направление. Надеюсь, это кому-то поможет!