Переход к унифицированной системе высшего уровня

  1. Завершение проектирования и спецификации основных интерфейсов.
  2. Сенсорные модули для OpenMV и LeapMotion.
  3. Агрегатор событий.
  4. Мультиплексор событий.

Переход на система управления движением второго этапа

  1. Модуль обратной динамики dynamics_inv.
  2. Модуль обращения приводов servo_inv_7param и конфигурационные файлы с моделями приводов.

После этого момента система станет работоспособна.

  1. Модуль идентификации servo_ident.
  2. Модуль прямой динамики dynamics_fwd.

Переход на BeagleBoard

  1. Инфраструктура для сборки: образ ОС с правильным Device Tree и поддержкой аппаратного ускорения графики.

  2. Глаза

    • тестирование DPI с аппаратным ускорением (необходимо для окончательного решения по разрядности цвета),
    • тестирование режима с двумя экранами,
    • адаптация кода Foxy для отрисовки двух глаз в одном модуле и произвольного разрешения.
    • доделка модуля Mikhail?
  3. Плата расширения Beagle.

  4. Управляющий модуль для блока питания ThunderVolt. (Включение/выключения переферии, контроль заряда и состояния).

Модификации к первой публикации кода (декабрь 2017)

Обязательные 0. Лицензия и copyrights. 1. Исправления в TrajectoryEditor. 2. Исправления URDF и связанного кода. Начало координат СК тела должна быть привязана к геометрическому центру тела. 3. Переименование odom_combined в world. Введение промежуточных СК odom_fake и odom_combined для возможности переключения на разные методы одометрии. 4. Устранение проблем с синхронизацией часов. Сообщения для ROS должны публиковаться о временем хоста. 5. Объединение топика voice и control (придется перебить ряд переменных в flexbe). 6. Проверить именования топиков, расчертить схему ROS подсистемы. 7. Возможность задавать имена загружаемых сервисов из YAML.

Желательные 1. Переход к хранению траекторий в текстовых файлах. Возможно, простейший вариант написать утилиту на python, используя rospy_message_converter 3. Модуль прямой кинематики kinematics_fwd. Расчет положений концов ног и их скоростей относительно тела в декартовой СК посредством KDL. 3. Модуль одометрии odometry_legs. Определение набора опорных ног, расчет движений платформы по движению ног, публикация позы робота в декартовой СК. 4. Поддержка одометрии путем принудительной установки опорных ног и отображения сил реакции опоры в интерфейсе TrajectoryEditor. 5. Завершение проектирования и спецификации основных интерфейсов высшего уровня (ИИ). Модификация модуля LeapMotion в соответствие с ними. 6. Поддержка TextAction для голосовой подсистемы или FlexBe состояние имитирующее его, обращаясь непосрественно к звуковой подсистеме sound_play. Должно позволить дожидаться окончания звука.

Планы к DerpFest2017 (ноябрь 2017)

  1. Установить OpenMV камеру на proto2. Не обязательно во лбу, достаточно эргономичного закрепления на голове. При неудаче демонстрируем поведение с Czeqvestria.
  2. При успехе установки камеры --- сенсорный модуль OpenMV.
  3. При успехе поведение с слежением за лицами, если они присутствуют. Состояния flexbe: проверка наличия лица.
  4. Продумать и отрепетировать презентацию по прогрессу.
  5. Подумать на организацией мастер-класса по управлению Sweetie.

Цели к конвенту Сzequestria (август 2017)

  1. Обеспечить следующие возможности:
    • Слежение глазами и головой за объектом в зоне датчика LipMotion.
    • Ответ на жест приветствия в зоне датчика LipMotion.
    • Позиционирование ноги по датчиком Hydra.
    • Перевод на английский звуков с Пониребрика. Запуск действий спонтанно, без участия джойстика, либо по событиям LipMotion.
  2. Проработать концепт высшего уровня управления движением.
  3. Задокументировать скрипты развертывания в wiki.
  4. Составить список состояний flexbe.

Достижение целей к конвенту Сzeqvesria (август 2017)

  1. Реализация задатчика MoveJointState для дискретного позиционного управления в угловой СК. Как дополнительная опция желателен фильтр с трапецивидным профилем скорости и контролем времени движения. (Реализованный экспоненциальный 2-ого порядка тоже подходит, но хуже).

  2. Компонент ROS публикации сообщений от LipMotion.

  3. Компонент ROS публикации сообщений от Hydra.

  4. Состояние FlexBe, реализующее слежение за заданной точкой в пространстве по сообщения LipMotion за счет задатчика FollowJointState для глаз и головы.

  5. Состояние FlexBe, позиционирующее конечность в заданную позу за счет запроса к move_group. Необходима URDF модель с фиктивными суставами на концах ног.

  6. Состояние FlexBe для детектирования жестов LipMotion: ничего нет, рука, жест приветствия и выдачи координат объекта.

Цели первого этапа проекта (ноябрь 2016)

КОНЦЕПЦИЯ УСТАРЕЛА

  1. Обеспечить следующие возможности:
    1. Свобдная походка на основе кинематической модели робота. (Управление с джойстика).
    2. Управление движение головы и взглядом с джойстика.
    3. Смена базовых поз (стоит, сидит, лежит) по команде с джойстика.
    4. Воспроизведение анимаций (синхронное движение робота, глаз, вопрозведение звука) по команде с джойстика.
    5. Обучение новым анимациям путем задания последовательности поз и правки полученных файлов.
  2. Базовое описание управляющего ПО (англ.)
  3. Описание конструкции 2-ого прототипа (англ./рус.).

Возможности из пункта 1 достаточны для "контроллируемых" и отрепетированный демонстраций робота с оператором. Пункт 2 и 3 необходимы для возможности повторения проекта.

Достижения целей первого этапа (ноябрь 2016)

Базовое описание управляющего ПО выражется в оформлении пакетов ROS и компонент OROCOS: сообщения и интерфейс, компонент, краткие README файлы с описанием пакета.

Описание конструкции 2-ого прототипа (англ./рус.). Вероятно, можно оформить как отдельный пост со списком оборудования, фотографиями, схемами подключения перефирии к контроллеру. Необходимость обсуждается.

Достижение целей по функциональности

Здесь перечислен минимальный набор пакетов и компонент для реализации функциональности первого этапа.

  1. Журналирование событий.

  2. Драйвер приводов Herkulex и компонент модуль обращения приводов.

  3. Агрегатор.

  4. Подсистема переключения задатчиков.

    • Серверная часть: алгоритм вытеснения.
    • Клиентская часть: алгоритм вытеснения, поддержка actionlib, шаблоны задатчиков.
  5. Обратная кинематика (модель робота, интерфейс ообщений, интерфейс операций, позиция и скорость).

  6. Задатчики:

    1. Свободная походка шагом (произвольное направление движения, плавное сопряжение со стартовой позой).
    2. Проигрывание анимаций (компонент проигрывания анимации, средство сохранения текущий позы в качестве контрольной точки анимации).
    3. Модули перехода в базовые позы (стоять, сидеть, лежать).
    4. Управление движением головы и ноги с джойстика (независимые задатчики, в основном для отладки)
  7. Компонент трансляция команд с джойстика в обращения к подситемам управления движением и глазами.

  8. Подсистема уравления глазами.

  9. Развертка системы управления роботом в разных конфигурациях (на самом роботе/для симуляции, release/debug (отличаются опциями логгирования и визуализации), тракт для тестирования отдельных задатчиков).

Текущее состояние проекта

Предполагается, что каждый программный компоент проходит через следующие стадии: определние требований, общее проектирование, проектирование реализации, реализция, оформление пакета и тестирование. Оформление пакета выделяется в отдельный пунк, поскольку для использование программного модуля требуется интеграция в общую систему сборки, оформление минимальной документации по использованию. Предполагается, что пакет содержит демонстрационый код использовани (он же играет роль тестов).

Прошу подредактировать отдельные записи, если я что-то упустил.

Общие организационные вопросы

В общих соглашениях не уточнены окончательно следующие вещи:

  • Использование трекера gitlab: назначение заданий, баги, требования доработок.
  • Политика хранения описаний сообщений (msg, rtt_msg пакеты).
  • Именования файлов (сейчас множество неудобных длинных названий, дублирующих информацию в имени пакета).
  • Использование пространств имен.
  • Использование логгера.
  • Тестовые скрипты пакетов и их содержание.

Журналирование событий

Оформлен в виде пакетов: logger Исполнитель: disRecord. Замечания: * Рекоменую использоваь его для фомирования логов. На первом этапе можно использовать LoggerRTT, который является оберткой стандартного логгера OROCOS. C течением времени цена перехода от иных систем журналирования будет только расти.

Драйвер приводов Herkulex и компонент модуль обращения приводов

  • Оформлен в виде пакетов: herkulex_*, servo_inv
  • Исполнитель: disRecord.
  • Замечания:
    • Не совсем удовлитворительно сделана обработка статусов приводов. (Она была причиной проблем на РБК). Фактически при проектировании отсутсвовали требования к ней, поэтому статусы можно только запрашивать.

Агрегатор (вариант без состояния)

  • Стадия: реализация/оформление (нет логгирования и некоторой обработки ошибочных ситуаций, оформление, несоответсвие описанию компонента (обработка нескольких сообщения за вызовupdateHook`).
  • Исполнитель: mutronics.
  • Замечания: простой и почти готовый компонент.

Подсистема переключения задатчиков.

  • Стадия: реализация/оформление

Серверная часть: оформление, логирование.

Клинетская часть: нет реализации оберки actionlib сервера, оформление пакет, логирование.

Отдельно стоит вопрос тестовых скриптов.

  • Исполнитель: SilentPony, частично disRecord.

  • Замечания: многое готово, но надо еще проделать достаточно большую работу по дооформлению. Отдельное внимание надо уделить примерам --- на базе их мы будем писать задатчики.

Обратная кинематика

  • Стадия: реализация Модель робота: пакет robot_description не дооформлен.

    Плагин robot_model: оформление, логгирование.

    Комопонент кинематики: нет части функциональности операции, преобразования скорости (не так важно), усилия.

  • Исполнитель: mutronics.

  • Замечания: кинематика работает для позиций, но пакет надо довести до логического конца. Нужен тест с рядом поз --- он будет нужен для тестирования всех алгоритмов кинематики.

    Не ясно, что с кинематикой головы: может ли эта подсистема ее считать?

    Сохраняется вопросы именования: disRecord продолжает настаивать, что одинаковые по интерфейсу компоненты кинематики надо именовать по алгоритму kinematics_trak_ik, kinematics_kdl и т.д.

Задатчики: свободная походка шагом

  • Стадия: проектирование

    Согласованы идеи алгоритмов, интерфейсы (частично, без высшего уровня), не определны наборы параметров. Есть тестовая программа на python. Математического описания нет.

  • Исполнитель: SilentPony, Renha.

  • Замечания: кода еще нет, но я надеюсь что он появится сразу после завершения примеров реализации задатчиков.

    Фактически у нас реализуются два независимых алгоритма на разных принципах. disRecord предлагает SilentPony сосредоточится на этой работе по окончании эпопеи с агрегаторами.

Задатчик: проигрывание анимаций

  • Стадия: проектирование

    Существующее в wiki описание и интерфейс неудовлетворительны: не ясно как согласовывать переключение отображаемых эмоций для глаз и анимации движения, не ясен потенциал rviz и MoveIt.

  • Исполнитель: не назначен.

  • Замечания: пакет проектировался в спешке. Считаю, что дизайн вцелом удачен, но надо четко опрелиться с

    • форматом хранения,
    • синхронизацией с событиями не описываемым положением приводов (нужно ли умень включать анимацию глаз),
    • возможностью задания траекторий на модели в окне rviz и использованием средств MoveIt.

    Предлагается выделить поддержку MoveIt в отдельный задатчик, а пока ориентироваться на принятый дизайн.

Задатчик: переход в базовые позы (стоять, сидеть, лежать).

  • Стадия: требования/проектирование

    Нет описания в wiki, только базовые идеи.

  • Исполнитель: не назначен.

  • Замечания: Модуль во многом опираться на алгоритмы сопряжения для походок, его функционал в некоторой степени реализовать и на анимациях.

    Предложил бы отложить его реализацию до получения полной определенности с походками и анимациями. С другой стороны на нем можно отработать алгоритмы сопряжения движений.

Задатчик: Управление движением головы и ноги с джойстика (независимые задатчики, в основном для отладки)

  • Стадия: требования/проектирование

    Нет описания в wiki, только базовые идеи.

  • Исполнитель: не назначен.

  • Замечания: Несмотря на непроработанность это должны быть одини из первых задатчиков, необходимые для тестирования кинематики и тракта формирования команд для приводов. Реализация должна быть не так сложна, но желательно иметь два варианта: отладочный и пользовательский. Последний исключает ситуации сингулярностей и должен работать при любом вводе.

Компонент трансляция команд с джойстика

  • Стадия: требования.

    Нет описания в wiki, только базовые идеи.

  • Исполнитель: не назначен.

  • Замечания: разработка затруднена, пока нет четких интерфейсов задатчиков. С другой стороны, они уже достаточно ясны, чтобы начать проектирование компоента.

Подсистема уравления глазами.

  • Стадия: требования/проектирование/реализация

    Есть реализация, продемонстрированная на РБК (отдельная программа, компонент ROS). Но она может не удовлетворять всем требованиям.

    Проведена работа по проектированию (новая архитектура). Для спецификации интерфейсов и особенностей реализации требуется согласование, в том числе, и более точная конкретизация требований.

  • Исполнитель: FoxyShadow, NeatSketch, Prost970.

  • Замечания: уже проделана большая работа. Текущая цель перейти к новой архитектуре с минимум потерь и усилий.

Развертка системы управления роботом в разных конфигурациях

  • Стадия: требования/проектирование/реализация

    До спецификации всех задач и облика началась стихийная реализация в виде тестов для разных подсистем. Описания облика в wiki явно недостаточно.

  • Исполнитель: все и никто.

  • Замечания:

    • Очень трудно понять, как лучше организовывать развертку до столкновения с практическими задачами. До си пор организация по пакетам ее не ясна.
    • Язык OPS очень ограничен, создание универсальной и настраевоемой подсистемы логгирования уже встретило трудности (изъятие параметров из rosparam, инкапсулирование операций, работа с ФС). Правильным видится переход на rttlua. Будучи языком высокого уровня она позволяет сделать почти все что надо.

Цели последующих этапов (ноябрь 2016)

(Пока грубый набросок, надо выделить этапы и разбросать людей).

  1. Введение динамической модели и упругости звеньев.

  2. Интеграция MoveIt.

  3. Удобный интерфейс для задания анимаций.

  4. Сопряжение походок и поз.

  5. Рысь, переход на рысь.

  6. Отслеживание положения робота в пространстве (одометрия, гироскоп).

  7. Прокладка траектории в пространстве.

  8. Камера, выделение объектов, слежение за объектами.

  9. Автономное поведение (ИИ).