2. Внесение изменений в стандартные действия

Каждое стандартное действие можно настраивать ещё чуть более тонко.

Рассмотрим настройку стандартных действий на примере стандартного действия std_sit, которое вызывается по команде "Слушай, Морс! Сидеть!".

Для его настройки перейдите в соотвествующую ему папку: ~/robohead_ws/src/robohead/head_controller/scripts/actions/std_sit

В этой папке расположены три файла:

  • sit.png

  • sit.mp3

  • std_sit.py

sit.png и sit.mp3 это рассмотренные ранее (см. смена ресурс-пака) медиа-ресурсы. Вся логика и последовательность действий описана в скрипте std_sit.py:

import os
class STD_SIT():
    def __init__(self, srv_display_player=None, srv_set_neck=None, srv_set_ears=None,
                srv_play_sound=None, srv_mors_mode=None, srv_mors_action=None,
                srv_mors_cmd_vel=None, srv_mors_cmd_pos=None, srv_mors_ef_pos=None,
                srv_mors_joint_pos=None, srv_mors_joints_kp=None, srv_mors_joints_kd=None,
                srv_mors_stride_height=None, sound_direction=270):

        self.srv_display_player = srv_display_player
        self.srv_set_neck = srv_set_neck
        self.srv_set_ears = srv_set_ears
        self.srv_play_sound = srv_play_sound

        self.srv_mors_mode=srv_mors_mode
        self.srv_mors_action=srv_mors_action
        self.srv_mors_cmd_vel=srv_mors_cmd_vel
        self.srv_mors_cmd_pos=srv_mors_cmd_pos
        self.srv_mors_ef_pos=srv_mors_ef_pos
        self.srv_mors_joint_pos=srv_mors_joint_pos
        self.srv_mors_joints_kp=srv_mors_joints_kp
        self.srv_mors_joints_kd=srv_mors_joints_kd
        self.srv_mors_stride_height=srv_mors_stride_height
        self.sound_direction=sound_direction

        self._script_path = os.path.dirname(os.path.abspath(__file__))

    def start_action(self)->int:

        path = "/sit.png"     # Change it
        self.srv_display_player(self._script_path+path)

        neck_angle_v = 25        # Change it
        neck_angle_h = -15       # Change it
        duration=1               # Change it
        self.srv_set_neck(neck_angle_v, neck_angle_h, duration)

        ear_angle_l = -90        # Change it
        ear_angle_r = -90        # Change it
        self.srv_set_ears(ear_angle_l, ear_angle_r)

        path = "/sit.mp3"        # Change it
        if self.srv_mors_action!=None:
            isBlocking = False 
        else:
            isBlocking = True
        self.srv_play_sound(self._script_path+path, isBlocking)

        if self.srv_mors_action!=None:
            self.srv_mors_action(1) # просыпаемся, если еще спим
            self.srv_mors_action(6) # садимся

Поля, помеченные как # Change it можно менять. Разберем, что они означают:

  • path = "/sit.png" файл, который воспроизводится на экране при данном действии. Можно заменить на название любого другого визуального-файла, находящегося в этой же папке. Медиа-файлом может быть либо картинка, либо видео (воспроизводится только картинка) - разрешение обязательно 1080x1080.

  • neck_angle_v = 25 neck_angle_h = -15 duration=1 положение шейного сустава, рекомендуемый диапазон [-35, 35] v - вертикальный угол, h - горизонтальный угол duration - длительность в секундах, за которую голова достигнет заданного положения из текущего

  • ear_angle_l = -90 ear_angle_r = -90 положение ушей, диапазон [-90, 90] l и r - левое и правое ухо, соответственно

  • path = "/sit.mp3" файл, который воспроизводится через динамики. Можно заменить на название любого аудио-файла, находящегося в этой же папке.

Внесенный изменения вступят в силу сразу после сохранения файла. Сохраните файл и произнесите соответствующую голосовую команду и убедитесь в этом.

Last updated