Переход к унифицированной системе высшего уровня
- Завершение проектирования и спецификации основных интерфейсов.
- Сенсорные модули для OpenMV и LeapMotion.
- Агрегатор событий.
- Мультиплексор событий.
Переход на система управления движением второго этапа
- Модуль обратной динамики
dynamics_inv. - Модуль обращения приводов
servo_inv_7paramи конфигурационные файлы с моделями приводов.
После этого момента система станет работоспособна.
- Модуль идентификации
servo_ident. - Модуль прямой динамики
dynamics_fwd.
Переход на BeagleBoard
-
Инфраструктура для сборки: образ ОС с правильным Device Tree и поддержкой аппаратного ускорения графики.
-
Глаза
- тестирование DPI с аппаратным ускорением (необходимо для окончательного решения по разрядности цвета),
- тестирование режима с двумя экранами,
- адаптация кода Foxy для отрисовки двух глаз в одном модуле и произвольного разрешения.
- доделка модуля Mikhail?
-
Плата расширения Beagle.
-
Управляющий модуль для блока питания 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)
- Установить OpenMV камеру на proto2. Не обязательно во лбу, достаточно эргономичного закрепления на голове. При неудаче демонстрируем поведение с Czeqvestria.
- При успехе установки камеры --- сенсорный модуль OpenMV.
- При успехе поведение с слежением за лицами, если они присутствуют. Состояния flexbe: проверка наличия лица.
- Продумать и отрепетировать презентацию по прогрессу.
- Подумать на организацией мастер-класса по управлению Sweetie.
Цели к конвенту Сzequestria (август 2017)
- Обеспечить следующие возможности:
- Слежение глазами и головой за объектом в зоне датчика LipMotion.
- Ответ на жест приветствия в зоне датчика LipMotion.
- Позиционирование ноги по датчиком Hydra.
- Перевод на английский звуков с Пониребрика. Запуск действий спонтанно, без участия джойстика, либо по событиям LipMotion.
- Проработать концепт высшего уровня управления движением.
- Задокументировать скрипты развертывания в wiki.
- Составить список состояний flexbe.
Достижение целей к конвенту Сzeqvesria (август 2017)
-
Реализация задатчика
MoveJointStateдля дискретного позиционного управления в угловой СК. Как дополнительная опция желателен фильтр с трапецивидным профилем скорости и контролем времени движения. (Реализованный экспоненциальный 2-ого порядка тоже подходит, но хуже). -
Компонент ROS публикации сообщений от LipMotion.
-
Компонент ROS публикации сообщений от Hydra.
-
Состояние FlexBe, реализующее слежение за заданной точкой в пространстве по сообщения LipMotion за счет задатчика
FollowJointStateдля глаз и головы. -
Состояние FlexBe, позиционирующее конечность в заданную позу за счет запроса к
move_group. Необходима URDF модель с фиктивными суставами на концах ног. -
Состояние FlexBe для детектирования жестов LipMotion: ничего нет, рука, жест приветствия и выдачи координат объекта.
Цели первого этапа проекта (ноябрь 2016)
КОНЦЕПЦИЯ УСТАРЕЛА
- Обеспечить следующие возможности:
- Свобдная походка на основе кинематической модели робота. (Управление с джойстика).
- Управление движение головы и взглядом с джойстика.
- Смена базовых поз (стоит, сидит, лежит) по команде с джойстика.
- Воспроизведение анимаций (синхронное движение робота, глаз, вопрозведение звука) по команде с джойстика.
- Обучение новым анимациям путем задания последовательности поз и правки полученных файлов.
- Базовое описание управляющего ПО (англ.)
- Описание конструкции 2-ого прототипа (англ./рус.).
Возможности из пункта 1 достаточны для "контроллируемых" и отрепетированный демонстраций робота с оператором. Пункт 2 и 3 необходимы для возможности повторения проекта.
Достижения целей первого этапа (ноябрь 2016)
Базовое описание управляющего ПО выражется в оформлении пакетов ROS и компонент OROCOS: сообщения и интерфейс, компонент, краткие README файлы с описанием пакета.
Описание конструкции 2-ого прототипа (англ./рус.). Вероятно, можно оформить как отдельный пост со списком оборудования, фотографиями, схемами подключения перефирии к контроллеру. Необходимость обсуждается.
Достижение целей по функциональности
Здесь перечислен минимальный набор пакетов и компонент для реализации функциональности первого этапа.
-
Журналирование событий.
-
Драйвер приводов Herkulex и компонент модуль обращения приводов.
-
Агрегатор.
-
Подсистема переключения задатчиков.
- Серверная часть: алгоритм вытеснения.
- Клиентская часть: алгоритм вытеснения, поддержка
actionlib, шаблоны задатчиков.
-
Обратная кинематика (модель робота, интерфейс ообщений, интерфейс операций, позиция и скорость).
-
Задатчики:
- Свободная походка шагом (произвольное направление движения, плавное сопряжение со стартовой позой).
- Проигрывание анимаций (компонент проигрывания анимации, средство сохранения текущий позы в качестве контрольной точки анимации).
- Модули перехода в базовые позы (стоять, сидеть, лежать).
- Управление движением головы и ноги с джойстика (независимые задатчики, в основном для отладки)
-
Компонент трансляция команд с джойстика в обращения к подситемам управления движением и глазами.
-
Подсистема уравления глазами.
-
Развертка системы управления роботом в разных конфигурациях (на самом роботе/для симуляции, 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)
(Пока грубый набросок, надо выделить этапы и разбросать людей).
-
Введение динамической модели и упругости звеньев.
-
Интеграция
MoveIt. -
Удобный интерфейс для задания анимаций.
-
Сопряжение походок и поз.
-
Рысь, переход на рысь.
-
Отслеживание положения робота в пространстве (одометрия, гироскоп).
-
Прокладка траектории в пространстве.
-
Камера, выделение объектов, слежение за объектами.
-
Автономное поведение (ИИ).