roboforum.ru

Технический форум по робототехнике.

LUA скрипты

LUA скрипты

Lirzman » 10 июл 2007, 21:18

В этой(http://www.roboforum.ru/viewtopic.htm?p=32459#32459) теме Digit попросил рассказать что такое LUA скрипты и с чем их едят.
Для начала:Это интерпретируемый язык программирования под ПК(не под МК), необходимость внедрения интерпретатора скриптов в моей программе возникла после того как я сделал манипулятор(копия с LynxMotion).
Робот представлял собой манипулятор с 5ю степенями свободы, МК - MEGA32 соединенный с ПК по RS232, управляющая прога была написана на С#, можно было управлять каждой сервой в отдельности(угол,скорость).

Все было хорошо, но для того чтоб робот выполнил определенную последовательность команд(отсылок в МК по УСАРТ) приходилось каждый раз перекомпилировать исходник. Меня это категорически не устраивало, и тут я вспомнил о скриптах(в играх).

Сначала я попробовал XML(просто записывал последовательность комманд) но он оказался слишком неудобным и громоздким, к тому же это не скриптовый язык в чистом виде.

И тут я вспомнил о FARCRY, как известно там используется LUA.
Сначала я  подумал что будет очень гемморойно внедрить ЭТО в свою прогу, но как оказалось все проще пареной репы.
Пару строк:
Код: Выделить всёРазвернуть
public void ReadLuaDocument(string filename)
     {
         
         Lua l = new Lua();
         l.RegisterFunction("ExampleFunction", R, R.GetType().GetMethod("ExampleFunction"));
//ExampleFunction - функция в главной программе которую теперь можно вызывать из скрипта, R - класс который содержит эту функцию
         l.DoFile(filename);
                               
                                   
     }

И все!!!!!

Из скрипта можно создавать формы, элементы управления, производить расчеты и т.д
Короче все что душе угодно.

По синтаксису LUA это что-то среднее между JAVA и СИ, главное есть доступ к переменным и функциям из скрипта в главную программу и обратно.
ОЧЕНЬ полезная функция - возможность функций возвращать несколько результатов одновременно.

Для роботов которые управляются с ПК это самое то, все расчеты и новые фишки можно выполнить в скрипте, и главную прогу не надо перекомпилировать.

В общем высказывайтесь.

ССЫЛКИ:
http://ru.wikipedia.org/wiki/LUA
http://einfall.blogspot.com/2006/05/scripting-with-lua-in-c.html
http://www.botik.ru/%7Erldp/mysql/mysqldev/glava04.htm

Tracer » 10 июл 2007, 22:25

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

Идеальное решение сам думал об интерпретпторе бейсика, Но LUA намного интереснее.
Можно организовать подгрузку оверлеев из из I2С памяти  - Надо поразбираться.
СПАСИБО за информацию.

(через пол часа  :lol: )
Я чтото не врубился Ты просто управляющую программу на LUA написал или таки загнал ее в МК
Я чтото не врубился
Полазил по инету народ не видит возможности втолкнуть LUA  в мегу. даже в 128ю
По подробнее пожалуста

Vooon » 10 июл 2007, 23:30

Tracer, нет - он же написал что в управляющую прогу на компе,
для мк я видел только бейсик.

ЛУА представляет из себя библиотеку,
также как и SQLite...

хотя для армов вроде есть питон

Stillsly » 10 июл 2007, 23:54

ну можно было бы  юзать скриптовый язык идущий вместе с QT называемый QSA (тем кто пользуется QT должны знать)

Lirzman » 11 июл 2007, 01:43

Для АВР порта нет, максимум под АРМ(но я не искал).
Я использую версию под Windows(.NET) благо Micro$oft подсуетилась :D
Такую вещь МК не потянет, ресурсов нехватит.
Версия под Линух тоже наверно есть(под лицензией GPL все-таки)

Я вообще считаю интерпретатор в МК загонять - маразм в чистом виде.

К тому-же я написал что управляющая программа на ПК.

Digit » 11 июл 2007, 09:32

Да, когда просил про LUA рассказать, я думал, что в МК интерпретатор затолкан :)
Скрипты для управляющей проги на ПК - это правильно. И для этого не обязаельно пользовать ЛУА - кто что знает, тот тем и пользуется. Я в проги предпочитаю внедрять РНР  :lol:  Просто потому, что знаю его хорошо...
Интерпретатор в МК - это возможно правильно для больших систем - теоретически проще сделать самомодифицирующийся код... Генетические всякие алгоритмы задействовать и прочее... Но насколько гибче получится система по сравнению с бутлоадерами - это вопрос.

2 Lirzman: спасибо за инфу =)

Lirzman » 11 июл 2007, 13:49

Помню я тоже пытался использовать PHP года 2 назад, правда тогда в СИ я был не очень силен, и мне показалось черезчур сложным внедрение кода интерпретатора в свою прогу, к тому-же PHP имеет более узкую специализацию.
Ну каждому - свое. :)

Vooon » 11 июл 2007, 20:45

лично по моему мнению лучше внедрять
питон/руби (питон имхо лучше)

у питона есть одна приятность - он как и джава(я предпочитаю именно нак произносить) компилит байт-код за счет чего почти также быстр как и джава.

хотя ЛУА тоже ечень удобный язык, не зря же его использует femm...

ASin » 11 июл 2007, 21:18

LUA тоже может компилить байт-код ;)


Rambler\'s Top100 Mail.ru counter