Технический форум по робототехнике.
AndreiSk » 19 мар 2010, 01:13
Виктор Казаринов писал(а):Когда я начал подключать онтологии SUMO и WordNet, то обнаружил, что они занимают в RAM недопустимо много места. Как же тогда быть с вновь полученными в ходе жизни робота знаниями?
....
Насколько я знаю, в алгоритме распознавания зрит. образов у EDV память весьма быстро исчерпывается. Распознавание среди миллионов сложных образов потребует колоссальных накопленных знаний и быстрого извлечения их.
А сколько было памяти-то?
Если писать самому, то можно сделать без БД через memory-mapped file.
Angel71 » 19 мар 2010, 01:57
а что это даст?
данных меньше не станет
AndreiSk » 19 мар 2010, 02:19
Ну вот допустим свой алгоритм, который работает с большим массивом (чисел), а памяти не хватает
Делаем массив в памяти через memory mapped file.
И работаешь с массивом, как будто он в памяти, но на самом деле он в файле.
Получается что у алгоритма больше памяти чем есть физически.
Хотя, если надо поиск делать, лучше конечно через базу данных, там поиск обычно оптимизирован.
А если просто десяток миллиардов чисел хранить, то можно и MMF.
Angel71 » 19 мар 2010, 02:37
чтот мне кажется своп операционки достаточно неплохо себя иногда ведёт в таких случаях. незнаю, может и не так эффективно, как мэмори маппэд, но работает в общем неплохо. да и винт штука крайне тормозная, сейчас при однопоточном чтении или записи диски в районе 60-120мбайт/сек выдают. при 4-8 одновременных обращениях легко скатится до 5-20метров.
"горлышко"
так, что тут или оптимизировать или память наращивать
galex1981 » 19 мар 2010, 02:42
Когда нибудь случится ситуация что MMF будет очень большим - тогда поиск по нему нужных данных будет очень долгим...
Виктор Казаринов » 19 мар 2010, 09:00
Суть расположения знаний в памяти или на диске не только и не столько в хранении, а в первую очередь в удобной и быстрой работе по поиску и модификации информации в иерархических структурах. Поверх БД я развертываю онтологию. В памяти - поверх RETE сети фактов и правил. Своп страниц RAM тут совсем не подходит из-за огромных бесполезных перегонок ненужной информации на диск и обратно.
Много данных в памяти - это когда данные стали занимать 240 мб. А еще нужно было добавить огромную онтологию WordNet. На пользовательские данные не останется места. И программа будет грузиться непомерно долго.
Такой объем памяти возникает из-за того. что строится RETE сеть на данных. Вместо этого индексы БД даже по длинным ключам требуют мало места на диске, а использование B+ деревьев приводит к малому кол. обращений к диску. Ввиду этого можно смириться с некоторым снижением быстродействия системы. Для улучшения ее работы самую часто используемую часть информации можно держать в памяти в кеше БД, либо в виде маленькой RETE сети.
Возможно, данные меры позволят создать систему, работающую в режиме реального времени и обладающую огромными запасами знаний, к которым можно будет осуществлять быстрый доступ.
Виктор Казаринов » 26 мар 2010, 21:10
Для тех, кто заинтересован поэкспериментировать с собственным роботом на основе комплекта OR и моей программой AIAssistant:
Нужно попридумывать хотя бы экранный интерфейс - то, что должно быть на одной или нескольких экранный формах.
Мой пробный вариант
download/file.php?id=13490&mode=view вряд ли подойдет, т.к. его я делал "на скорую руку" для первого эксперимента.
Второе - это какими сущностями манипулировать. Например, с командами ORFA. Но можно сразу сделать простую надстройку и не колдовать с регистрами. Об этом тоже нужно подумать. Хотя чтобы не терялась возможность покопаться на самом нижнем уровне, прямую работу с портом тоже можно оставить.
pashteet » 26 мар 2010, 21:47
Мое видение данной программы:
- Ползунки пэйн/тилт нужно перенести в окошко, рядом с изображением приходящим с камеры (так нагляднее)
- Блок управления коллекторными двигателями сделать более компактным, например заменить кнопки с надписями на стрелочки
- Обязательно добавить окно управления сервоприводами, по моему сугубо личному мнению, MiBBiM сделал отличную штуку по управлению сервами, с возможностью запоминания сценариев
- Неплохо было бы добавить окно, в котором будут отображаться значения АЦП, причем напротив отображаемого значения нужно сделать строку, в которую нужно будет вводить название датчика (например "дальномер" или "расстояние" или "температура"), так же неплохо было бы реализовать возможность ввода формул для пересчета, для того, что бы отображались не просто значения АЦП, а уже преобразованные данные (например расстояние в см, мм, м; температура, либо другие единицы измерения)
Реализацию тех или иных пунктов готов опробовать на своем железе
:
[[http://roboforum.ru/wiki/OR-AVR-M128-DS]][[http://roboforum.ru/wiki/OR-BTM111-9.6]]
pashteet » 26 мар 2010, 21:51
Еще забыл, для управления коллекторными двигателями нужно добавить ползунок изменения скорости
pashteet » 26 мар 2010, 21:56
Кстати, я во чего подумал, то что программа состоит из нескольких окон это очень хорошо, пользователь сам может выбирать какие функции ему нужны, например может закрыть окно с "камерой" если у него ее нет, или же закрыть окно драйвера двигателей, если робот не предполагает использование коллекторных двигателей и т.д.
блин,ни как не могу привыкнуть, что форум перестал сообщения склеивать, извиняюсь
Виктор Казаринов » 26 мар 2010, 22:17
Так м.б. нарисуете эскизик форм хотя бы в Paintе и сюда скинете?
pashteet » 26 мар 2010, 23:53
Хорошо, завтра займусь поиском эскизов для стрелочек, по возможности
AndreiSk » 27 мар 2010, 00:14
я думаю каждый под себя рисует интерфейс,
у меня например вот так (навскидку нашел один из скринов).
- Вложения
-
Виктор Казаринов » 27 мар 2010, 09:08
Назову плагин на языке ECLIPS для программы AIAssistant по экспериментам с робототехникой RoboStudio.
Думаю, на форме консоли или в отдельной форме можно сделать поле с основным управлением студией.
Далее. Хотел бы сразу разделить самый нижний уровень стыковки с оборудованием разных производителей (OR и др) и все более абстрактные уровни.
Нижний уровень состоит из 2 подуровней:
Сначала - деление на тип интерфейса, соединяющего группу оборудования с компьютером. COM, TCP, USB и т.д. Более высокий подуровень - непосредственно команды, кот. понимают периферийные модули.
Но тут возник вопросик. Я использовал прямое обращение к COM порту в синхронном режиме. Но м.б. более правильно будет использовать какую-то готовую библиотеку или компонент для C Builder? У меня версия 2009. Особенно если использовать асинхронный режим. М.б. кто-то посоветует?
pashteet » 27 мар 2010, 11:02
ну вот, сделал стрелочки
- в формате GIF
а, блин, забыл, сбоку можно добавить ползунки изменения скорости: справа, для правого двигателя, слева - для левого
- Вложения
-
- Панель управления ДД.rar
- (110.58 КиБ) Скачиваний: 0