LEGO скорость vs мощность

Ответить
Artem.spb

Activity Автор
professor
professor
Сообщения: 3393
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

LEGO скорость vs мощность

Сообщение Artem.spb »

Начинаю делиться своими мыслями на тему программирования LEGO-контроллеров (NXT/EV3) на :labview: .
В начале лета NI выпустила обновление лего-тулкита, так что теперь на :labview: можно программировать и NXT и EV3.
Но не всё так чудесно, как хотелось бы. На мой сугубо личный взгляд лего-тулкит выглядит немного неряшливо сделанным.
Но это не умаляет достоинства такой конфигурации: дети (в моём случае с пятого класса) имеют возможность изучать вполне серьёзный язык программирования в немного упрощённом виде, а возможность довольно быстро создавать роботов, выполняющих вполне конкретные задачи, подогревает интерес к изучению языка.

Эксперименты я провожу на :labview: for education 2012 с установленным обновлением до EV3.

Первая недоработанность - в том, что в этом обновлении невозможно обновить прошивку контроллера NXT, так что без лишней необходимости я бы не стал ставить обновление, по крайней мере в школьных условиях, где контроллерам регулярно приходится менять прошивки под разные языки программирования - RobotC, Robolab, :labview: . И, как ни печально, отправлять LV-прошивку в контроллер мне приходится с помощью RobotC.

Вторая недоработка, о которой пойдёт речь тут, связанна с управлением моторами.
В обновлении появилась возможность управлять моторами в двух режимах - контроль мощности и контроль скорости: выбор режима осуществляется селектором.
speed-control-2.png
однако простой эксперимент с запуском двигателя показывает, что что-то тут не так - мотор работает совершенно одинаково в обоих случаях.
Смотрим дальше: если кликнуть на функцию, откроется её окно. И что не есть гуд, в обоих режимах открывается одна и та же функция LEGOMoveAllMotors с одним и тем же значением параметра ConstantPower. Это и есть причина, по которой мотор в обоих случаях работает одинаково.
Лезем дальше и обнаруживаем, что внутри вызывается функция NXTMoveMotors.vi, которая прячется скорее всего тут: C:\Program Files (x86)\National Instruments\LabVIEW 2012\vi.lib\NXT\NXTIO Xnodes\NXTIONodeSubVIs\NXTMoveMotors.vi, и эта функция одним из параметров принимает режим работы: power/speed
speed-control.png
запуск теста подтверждает теорию - в режиме контроля мощности мотор просто крутится как может, так что его легко застопорить, а вот в режиме контроля скорости, при "затруднениях" контроллер повышает мощность движка, так что он всё равно старается крутиться с заданной скоростью.

тут показано на практике, как это выглядит
watch?v=3OhtWVVwOww&feature=youtu.be

(ссылка на случай не работы на портале:
конечно, контроль не идеален - ускоряется с задержкой, замедляется тоже не сразу, но всё же контроллер пытается поддерживать постоянную скорость вращения.
так что если есть потребность запускать мотор не на постоянной мощности, а на постоянной скорости (например, чтоб робот ехал равномерно и по прямой, и в горку), то можно создать свою функцию по подобию штатной, в которой просто исправить значение параметра ControlMode.
Ответить

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