Однако, господа, захотелось мне от бумаготерапии перейти на что-нибудь поконкретнее. Занюхаю MobileC http://www.mobilec.org , кот. нашел DeaD. Попробую представить робота как сообщество специализированных агентов. По стандарту FIPA.
2AndreiSk: При чем тут C#? Речь же идёт о компонентах готовых для обмена сообщениями в стандарте FIPA уже заранее заточенных под робототехнику. Да и с чего бы обязательно всё на ПК должно выполняться? Или под виндой? А тут кросс-платформенность.
А чего он тогда за MobileC схватился? Давайте лучше C# Кроссплатформенность кому нибудь нужна? Откликнитесь.. зачем она вам. Сделаем все под винду и все дела.
Я С# когда он еще беткой вышел, начал юзать. Но до сих пор его тормознутость и при первом запуске когда он фреймворк активирует, и при работе меня сильно раздражает. Не спасают ядра и другие чудеса. Я когда оттрассировал MSIL (байт код .NET) по машинным командам, то ужаснулся. Более 200 команд на самую простую командину его стековой виртуальной машины. Ужас. Даже Java поприятнее чудится мне. Но если серьезно, то ресурсоемкие задачи лучше решать на том, что быстрее работает. А еще - на том, где можно взять много готовых решений данной прикладной области.
Что-то не компилится этот MobileC. Кучу ошибок дает в примочке Ch, часть кот. к тому же платная. А это что за код такой? int fipa_message_parameter_Parse(fipa_acl_message_p acl, fipa_message_string_p message) { int err; fipa_word_t* word = NULL; char* parameter; if((err = fipa_GetAtom(message, ':'))) return err; if((err = fipa_word_Parse(&word, message))) return err; parameter = word->content; if (!strcmp(parameter, "sender")) { err = fipa_agent_identifier_Parse(&(acl->sender), message); } else if (!strcmp(parameter, "receiver")) { err = fipa_agent_identifier_set_Parse(&(acl->receiver), message); } else if (!strcmp(parameter, "content")) { err = fipa_string_Parse(&(acl->content), message);... Это получается, что ACL в текстовом формате? Это какой же обещанный реалтайм то будет?
В рекомендованной ими MS VS 2005. Вообще-то как я раньше говорил, меня из всего FIPA в бОльшей степени интересует лишь язык передачи, особенно на первом этапе разработки. Когда я копался в Jena (система работы с онтологиями OWL, то когда глянул на таблицы БД, которые она строила по моим онтололгиям, то был неприятно удивлен. Триплеты были записаны в таблицы с тремя полями по 100 текстовых символов каждое. Т.е. на каждый чих она будет на Java парсить кучу таких полей. И так по многим направлениям, которые меня интересуют. ВИдимо, нужно остановиться и подумать немного - либо брать для макетирования кучу всего готового (CV, FACT++, MobileC и др.), либо, сохраняя в уме идею - что же в общих чертах надо, сваять что-то существенно попроще, обкоцанное со всех сторон, но заточенное под конкретную задачу. Но, боюсь, что этот путь тоже весьма тернист. Ведь я потратил 10 лет на создание собственной виртуальной 64 разрядной машинки на ассемблере. Там и куча псевдопараллельных демонов и онтология - это все есть. Но... Есть слишком много но. Особенно - как это даже если доделать, спроецировать на МК. Я ведь и на OWL нашел пятна. Одним словом, это пока опять мысли вслух...
AndreiSk писал(а):А чего он тогда за MobileC схватился? Давайте лучше C# Кроссплатформенность кому нибудь нужна? Откликнитесь.. зачем она вам. Сделаем все под винду и все дела.
Господа, давайте без холиваров. Уж если задача формализовать малоформализуемое - то вопрос о язык реализации вообще не стоит, все, где есть понятие "софт". Тут главное алгоритмы. А детали реализации - это уже от платформы зависит. Монопенисуально на чем писать - на яве, сях, русском или пхп. Если всерьез есть команда для реализации отладочной модели - тогда большинством голосов.
2repository: И вам тоже рекомендую зайти по ссылке и прочитав, понять, что холивара тут быть просто не может, т.к. MobileC это совсем не то, что кажется из названия
Не думаю, что я смогу быстро получить практические результаты. Хотя всякое может быть. Однако буду делать до тех пор, пока обстоятельства позволяют. Мне известно только три механизма, позволяющие строить активного субъекта - автономного робота: 1. Нейронные сети; 2. Алгоритмы, написанные на традиционных ЯП и выполняющие напрямую требуемую функцию (распознавание, навигация и т.д.); 3. Продукционные правила. Я выбираю третий вариант, модифицируя его. Обычно в левой части правил ставят отдельные не связанные между собой факты, либо иерархически связанные по наследованию классов слоты объектов. Это все есть в CLIPS и др. системах. Я задумал создать Inference Engine построенную с использованием онтологий в 8 битном МК AVR. Тут возникает ряд проблем - разрядность проца, объем памяти, быстродействие и т.д. Нужно прикинуть, возможно ли создать микроскопическую онтологию, чтобы разместить ее во внутренней или внешней недорогой памяти, а также саму рулезную машинку, манипулирующей этой онтологией с приемлемым быстродействием.
2Виктор: Мне кажется подход №3 имеет существенные ограничения связанные с дискретностью - есть хотя-бы наметки, как с ними бороться? А то полученный "разум" будет существенно неполноценным и будет валиться на простейших задачках.