Управляющее программное обеспечение
Есть два варианта робота:
- робот со встроенным компьютером;
- робот, полностью управляемый с персонального компьютера.
Робот, управляемый с персонального компьютера
Робот подключается к компьютеру с помощью кабелей USB и HDMI, а также включается в сеть 220 вольт с помощью блока питания. После подключения HDMI нужно убедиться, что экран робота определился как внешний монитор.
Для работы с контроллером робота может потребоваться установить драйвер USB serial port driver:
- при подключении робота по USB в диспетчере устройств должно появится “неизвестное устройство”;
- необходимо скачать архив драйвера USB serial port и распаковать его;
- неизвестному устройству нужно установить драйвер из папки, в которую был распакован архив;
- иногда требуется повторная установка этого же драйвера и перезагрузка компьютера.
Подключённое устройство должно выглядеть в диспетчере устройств в разделе Ports
как USB serial port (COM3)
(возможен COM-порт с другим номером).
Для управления роботом на компьютере запускается программа RobotSystem.exe (в более новом варианте – F2Robot.exe)
Эта программа принимает пакеты поведения в формате BML от других программных компонентов и выполняет их на роботе. В качестве таких программ могу выступать CommunicationClient - редактор поведения, InactiveProvider – генератор поведения при бездействии, или ваше собственное программное обеспечение, отправляющее пакеты BML через программный интерфейс.
CommunicationClient – редактор поведения
Программный компонент CommunicationClient позволяет создавать последовательно пакетов BML и отправлять их на исполнение на робота. В файле конфигурации appsettings.json
нужно указать адрес робота. Вот так будет выглядеть файл конфигурации, если RobotSystem.exe и CommunicationClient работают на одном компьютере:
{
"Logging": {
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
},
"RobotFullControlAddress": "ws://localhost:5000/fullcontrol"
}
Если используется робот со встроенным компьютером, то вместо localhost
нужно указать IP-адрес робота (например, 192.168.1.10
) или сетевое имя робота f2robot
. Если роботом с другого компьютера локальной сети управляет программа RobotSystem.exe, то нужно указать IP-адрес или имя компьютера, где работает RobotSystem.exe.
В программе CommunicationClient можно создавать BML и отправлять их на исполнение на робота кнопкой Send to robot. Результат работы будет отображаться справа в окне логов.
В нижней части окна показано, что CommunicationClient подключился к программному модулю управления роботом: горит надпись Robot is connected. Эта надпись означает связь с RobotSystem.exe или с внутренним программным обеспечением робота; если эта надпись горит, но робот не работает, то ошибки нужно искать в выводе программы RobotSystem.exe. Например, если к роботу не подключено питание, то CommunicationClient связывается с RobotSystem.exe (отображатеся надпись Robot is connected), но RobotSystem.exe не имеет возможности управлять роботом. Если CommunicationClient по какой-то причине потерял связь с программой робота, можно попытаться восстановить соединение кнопкой Reconnect. Например, связь может прерваться, если перезагрузить робота или программу RobotSystem.exe.
На исполнение можно отправить сценарий, который содержит один или несколько пакетов 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
InactiveProvider – генератор поведения при бездействии
Программный компонент InactiveProvider выбирает пакеты поведения, описывающие небольшие движения робота и изменения направления взгляда. Он постоянно передаёт эти пакеты поведения на робота, чтобы “анимировать” робота в ситуации бездействия. Пакеты, переданные другими программными компонентами, получают приоритет и подавляют выполнение пакетов от InactiveProvider. В файле конфигурации InactiveProvider нужно указать адрес робота (или адрес компьютера с RobotSystem), например:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"System": "Information",
"Microsoft": "Information"
}
},
"Interval": 1000,
"Threshold": 3,
"Reactions": "C:\\Robot\\gestures\\reactions.sbml",
"RobotFullControlAddress": "ws://localhost:5000/scenario"
}
Также в ключе Reactions
нужно указать файл с описанием поведения, из которого будут извлекаться пакеты поведения для состояния бездействия. InactiveProvider будет брать пакеты из сценария с именем inactive, например:
<behavior>
<scenario name="inactive">
<bml id="1">
<head lexeme="eyes_up_right3"/>
<pupils lexeme="eyes_up_right3"/>
<body lexeme="breath23"/>
</bml>
<bml id="10">
<head lexeme="relax1"/>
<pupils lexeme="relax1"/>
<body lexeme="breath23"/>
</bml>
</scenario>
</behavior>