Управляющее программное обеспечение робота Ф-2
Есть два варианта робота:
- робот, полностью управляемый с персонального компьютера;
- робот со встроенным компьютером.
Робот, управляемый с персонального компьютера
Робот подключается к компьютеру с помощью кабелей USB и HDMI, а также включается в сеть 220 вольт с помощью блока питания. После подключения HDMI нужно убедиться, что экран робота определился как внешний монитор.
Для работы с контроллером робота может потребоваться установить драйвер USB serial port driver:
- при подключении робота по USB в диспетчере устройств должно появится “неизвестное устройство”;
- необходимо скачать архив драйвера USB serial port и распаковать его;
- неизвестному устройству USB в диспетчере устройств нужно установить драйвер из папки, в которую был распакован архив;
- иногда требуется повторная установка этого же драйвера и перезагрузка компьютера, чтобы устройство USB было правильно подключено.
Подключённое устройство должно выглядеть в диспетчере устройств в разделе Ports
как USB serial port (COM3)
(или как COM-порт с другим номером).
Для управления роботом на компьютере запускается программа F2Robot.exe.
Эта программа принимает пакеты поведения в формате BML от других программных компонентов и выполняет их на роботе. В качестве такого поставщика пакетов поведения может выступать SimpleScenarioSender – система управления роботом с клавиатуры, или ваше собственное программное обеспечение, отправляющее пакеты BML через программный интерфейс.
Робот со встроенным компьютером
Такой робот содержит на задней панели разъем для кабеля локальной сети RJ-45. Перед запуском нужно подключить робота к локальной сети, тогда при запуске робот получит IP-адрес (например, 192.168.1.10
). Этот адрес будет показан на экране робота при его загрузке. Далее к роботу можно будет обращаться с других компьютеров сети по этому IP-адресу или по имени робота f2robot-1
(число в имени робота указывает его номер, это число у разных роботов отличается).
Web-интерфейс программы F2Robot
С программой F2Robot можно общаться через web-интерфейс. Для этого нужно запустить браузер и зайти на адрес localhost:5000
. На web-интерфейс можно зайти и с другого компьютера, для этого в браузере нужно указать IP-адрес компьютера, на котором работает программа F2Robot, например: 192.168.1.10:5000
. Узнать IP-адрес компьютера, на котором работает робот, можно на самом этом компьютере в сетевых настройках или с помощью команды ipconfig /all
. IP-адрес компьютера можно также посмотреть в настройках роутера. Для связи между управляющим компьютером и компьютером с программой F2Robot необходимо, чтобы они находились в одной подсети: чтобы с управляющего компьютера можно было обратиться к компьютеру с программой F2Robot.
Если используется робот со встроенным компьютером, то робот сам при включении получает IP-адрес в сети. Во время включения этот адрес отображается на экране робота. Потом узнать адрес робота можно в настройках роутера: нужно зайти на адрес роутера и посмотреть таблицу IP-адресов всех устройств, подключённых к роутеру.
Экран статуса робота
Первый экран на web-странице localhost:5000
показывает статус основных компонентов робота: доступность тела робота, экрана, звука и базы жестов. Если какой-то из компонентов не доступен, на экране статуса появится ошибка.
Communicator – экран создания BML
На экране Communicator можно создать протокол поведения для робота на языке BML и затем выполнить его на роботе нажатием кнопки Execute.
В протоколе поведения должен быть указан сценарий. Пакет, содержащий только тэги <bml>
считается неполным.
<scenario id="test1">
<bml>
<neck lexeme="frustration3"/>
<hands lexeme="happy1"/>
<lids lexeme="lids-110"/>
<brows lexeme="eyebrows-up2000"/>
<speech text="Мне тут нравится"/>
<mouth lexeme="mouth-smile4"/>
</bml>
<bml>
<neck lexeme="referent_left_long3"/>
<hands lexeme="avtoman2"/>
<lids lexeme="lids-squint2"/>
<brows lexeme="eyebrows-down2000-2"/>
<speech text="Ну почему-то нет солнышка"/>
<mouth lexeme="lip-bite"/>
</bml>
</scenario>
Если в протоколе поведения присутствуют несколько сценариев, то их нужно окружить тэгом <behavior>
:
<behavior>
<scenario id="test1">
<bml>
<neck lexeme="frustration3"/>
<hands lexeme="happy1"/>
<lids lexeme="lids-110"/>
<brows lexeme="eyebrows-up2000"/>
<speech text="Мне тут нравится"/>
<mouth lexeme="mouth-smile4"/>
</bml>
</scenario>
<scenario id="test2">
<bml>
<neck lexeme="referent_left_long3"/>
<hands lexeme="avtoman2"/>
<lids lexeme="lids-squint2"/>
<brows lexeme="eyebrows-down2000-2"/>
<speech text="Ну почему-то нет солнышка"/>
<mouth lexeme="lip-bite"/>
</bml>
</scenario>
</behavior>
BML-пакеты внутри одного сценария будут выполнены последовательно, а пакеты разных сценариев могут выполниться одновременно, если они относятся к разным исполнительным органам робота. Подробнее о выполнении сценариев BML
Gestures – экран управления жестами
На экране Gestures перечислены все жесты, доступные роботу для выполнения. В таблице указаны:
- Lexeme – название жеста
- Duration – продолжительность жеста в секундах
- Relative – является ли жест относительным или абсолютным; относительные жесты выполняются относительно направления на объект и требуют параметра
target
- Available stages – стадии жеста, по которым можно проводить синхронизацию
- Storage – место хранения жеста: File – на диске, в этом случае изменения в жесте сразу доступны при его выполнении, Memory – в памяти, при изменения жеста нужно перезагрузить программу F2Robot, чтобы изменения вступили в силу
- Visualization – ссылка на словарь жестов на сайте f2robot.com
- Action – выполнить жест, скопировать жест как сценарий, bml или отдельный тэг figure (функции копирования работают только для адреса
localhost
)
В файле настроек appsettings.json В ключе FileSystemDB можно задать расположение файлов жестов на диске и тип доступа к жестам:
{
"FileSystemDB": {
"RobotGesturesPath": "C:\\RobotGestures",
"Mode": "ReadAll"
}
}
- RobotGesturesPath – указывает на корневую директорию репозитория жестов;
- Mode – указывает варианты получения жестов из файлов:
- LoadOnStart – все жесты вычитываются при запуске программы и затем хранятся в памяти
- ReadAll – жест каждый раз вычитывается с диска прямо перед его выполнением на роботе, то есть изменения в файле сразу будут отображаться на роботе; этот режим удобен, если вы редактируете жесты и после сохранения сразу же запускаете их на роботе.
Inactive – неактивное поведение
Экран Inactive управляет неактивным поведением робота, то есть теми движениями, которые робот воспроизводит, если ему нечего больше делать. Модуль неактивного поведения постоянно передаёт эти пакеты на робота, чтобы “анимировать” его в ситуации бездействия. Пакеты, переданные другими модулями, получают приоритет и подавляют выполнение пакетов неактивного поведения. В зависимости от ситуации и условий эксперимента от робота может потребоваться более активное или более сдержанное неактивное поведение. Различные сценарии неактивного поведения описываются в файле inactive.sbml в репозитории жестов робота.
Переключатель Enabled включает или выключает неактивное поведение на роботе. Для сохранения нужно нажать кнопку Save. Пункт Scenario Name позволяет выбрать сценарий неактивного поведения из описанных в файле inactive.sbml.
Эти параметры также можно задавать в файле настроек appsettings.json. В ключе Inactive указывается, будет ли робот при запуске демонстрировать неактивное поведение (Enabled: true/false), а также указывается сценарий, из которого будут использоваться пакеты BML для неактивного поведения (SelectedScenario). Сценарий неактивного поведения будет выбираться из файла inactive.sbml. По умолчанию будет использоваться сценарий inactive.
{
"Inactive": {
"Enabled": true,
"SelectedScenario": "inactive-level0"
}
}
- в данном примере робот сразу запустит неактивное поведение и будет использовать пакеты из сценария inactive-level0
Referents – окружающие референты
Экран Referents показывает референтов, присутствующих в окружении робота. Этот экран используется, если робот запускается вместе с системой технического зрения, распознающей объекты вокруг робота. Референты нужны для выполнения относительных жестов. Такие жесты направлены на заданный референт, и отсутствие референта при выполнении относительного жеста вызывает ошибку робота.
Composer – активные сценарии
Экран Composer показывает активные сценарии и тэги bml, выполняемые на роботе в конкретный момент. В разделе Other Scenarios приведены сценарии, ожидающие своей очереди. Данные на этом экране быстро меняются, чтобы их остановить, нужно нажать кнопку Pause.
- в этом примере робот выполняет шеей жест breath23 из сценария language-learning-experiment, а глазами выполняет жест avtoman2 из сценария inactive; остальные элементы поведения этих двух сценариев уже помечены как выполненные.
Logs – экран логов и ошибок
На экране Logs перечислены сообщения об исполнении действий на роботе. Галочки у отдельных типов сообщений позволяют включать в список сообщения только заданных типов. Чтобы показывать только возникающие ошибки (Error, Crit), нужно снять галочки с остальных пунктов (Info, Warn и т. д.). Кнопка Details выводит подробное описание для каждой ошибки. На данном экране выводятся только последние 1000 ошибок робота. Детальный лог ошибок за всё время выполнения сохраняется в файл notifications.log в рабочей папке программы f2robot.