[FreeCAD] Создание и экспорт разметки для сборки сцен #87

Open
opened 2023-06-18 18:59:45 +03:00 by ius.mark.alex · 19 comments
ius.mark.alex commented 2023-06-18 18:59:45 +03:00 (Migrated from gitlab.com)

Сценарий использования

  1. Инженер размечает позиции захвата для деталей - задаёт тип захвата, позиционирует захват, задаёт расстояние между пальцами захвата в случае с параллельным захватом
  2. Инженер с помощью нашего верстака экспортирует позицию захвата в json в папку сборки
  3. Модуль генерации траекторий формирует траекторию для операции сборки. Если в операции задействована позиция захвата, то он генерирует с ней.
  4. Сцена конфигурируется с камерой, роботом, захватом с деталью и деталью, закреплённой на полу. Для начала формируем базовую сцену, в которой детали уже готовы для контактных взаимодействий.
  5. Программист запускает сцену, в которой деталь захвачена, и проверяет операцию сборки с другой деталью.

Способы задания точек для формирования подсборок:

  1. (текущий) Создание LCS-объектов из assembly4 для каждого отдельного тела. Плюсы: уже работает; минусы:
    а) долго/трудоёмко - нужно для каждой смежной детали поставить LCS
    б) не очень точно - координаты сбиваются из-за разницы относительного (LCS задаются независимо от остальных деталей и можно "промахнуться") и абсолютного (позиции относительно начала коодинат) позиционирования в сборке.
  2. Задать одну точку в подсборке и потом её преобразовать в отдельные две точки без преобразования координат. То есть сначала генерируется последовательность сборки. Это позволяет установить связи между деталями - какая деталь за какой следует (последовательность сборки).

Обсудили на совещании 01.11.2023:

  1. Достаточно ли будет fixed joint для подсборок? На данном этапе решили что достаточно.
  2. Стандартные алгоритмы распознавания могут не подойти для сборок - нейросеть будет в каждой сборке может распознавать все предыдущие подсборки.
  3. Координата детали (локальное начало координат) не влияет на распознавание объекта/позиции. Поэтому для соединения деталей в URDF можно использовать Placement из CAD. Все joint'ы будут типа "fixed" относительно начала координат.
  4. Позиции захвата нужно будет задавать относительно глобальной точки координат.
  5. ИТОГО: нужно экспортировать подсборки в URDF, где детали в них будут соединены fixed-joint'ами в позициях относительно общего начала координат (параметр Placement).

Что сделать

  • @ius.mark.alex Обсудить с @IDONTSUDO формат
  • @ius.mark.alex Реализовать экспорт позиций захвата (grasp_pose) и монтажа (spawn_pose)
  • @IDONTSUDO Реализовать экспорт URDF с fixed joint между деталью (child) и захватом (parent)
  • Нужен модуль формирования сцены, где будет учитываться рабочая зона манипулятора, чтобы нельзя было поставить деталь за пределами рабочей зоны - https://gitlab.com/robossembler/robossembler-ros2/-/issues/74
  • @solid-sinusoid Создать базовую сцену, где робот, захват и пол. - https://gitlab.com/robossembler/robossembler-ros2/-/issues/82
**Сценарий использования** 1. Инженер размечает позиции захвата для деталей - задаёт тип захвата, позиционирует захват, задаёт расстояние между пальцами захвата в случае с параллельным захватом 2. Инженер с помощью нашего верстака экспортирует позицию захвата в json в папку сборки 3. Модуль генерации траекторий формирует траекторию для операции сборки. Если в операции задействована позиция захвата, то он генерирует с ней. 4. Сцена конфигурируется с камерой, роботом, захватом с деталью и деталью, закреплённой на полу. Для начала формируем базовую сцену, в которой детали уже готовы для контактных взаимодействий. 5. Программист запускает сцену, в которой деталь захвачена, и проверяет операцию сборки с другой деталью. **Способы задания точек для формирования подсборок**: 1. (текущий) Создание LCS-объектов из assembly4 для каждого отдельного тела. Плюсы: уже работает; минусы: а) долго/трудоёмко - нужно для каждой смежной детали поставить LCS б) не очень точно - координаты сбиваются из-за разницы относительного (LCS задаются независимо от остальных деталей и можно "промахнуться") и абсолютного (позиции относительно начала коодинат) позиционирования в сборке. 2. Задать одну точку в подсборке и потом её преобразовать в отдельные две точки без преобразования координат. То есть сначала генерируется последовательность сборки. Это позволяет установить связи между деталями - какая деталь за какой следует (последовательность сборки). **Обсудили на совещании 01.11.2023**: 1. Достаточно ли будет fixed joint для подсборок? На данном этапе решили что достаточно. 2. Стандартные алгоритмы распознавания могут не подойти для сборок - нейросеть будет в каждой сборке может распознавать все предыдущие подсборки. 3. Координата детали (локальное начало координат) не влияет на распознавание объекта/позиции. Поэтому для соединения деталей в URDF можно использовать Placement из CAD. Все joint'ы будут типа "fixed" относительно начала координат. 4. Позиции захвата нужно будет задавать относительно глобальной точки координат. 5. **ИТОГО**: нужно экспортировать подсборки в URDF, где детали в них будут соединены fixed-joint'ами в позициях относительно общего начала координат (параметр Placement). **Что сделать** - [x] @ius.mark.alex Обсудить с @IDONTSUDO формат - [ ] @ius.mark.alex Реализовать экспорт позиций захвата (grasp_pose) и монтажа (spawn_pose) - [ ] @IDONTSUDO Реализовать экспорт URDF с fixed joint между деталью (child) и захватом (parent) - [ ] Нужен модуль формирования сцены, где будет учитываться рабочая зона манипулятора, чтобы нельзя было поставить деталь за пределами рабочей зоны - https://gitlab.com/robossembler/robossembler-ros2/-/issues/74 - [ ] @solid-sinusoid Создать базовую сцену, где робот, захват и пол. - https://gitlab.com/robossembler/robossembler-ros2/-/issues/82
ius.mark.alex commented 2023-06-18 18:59:45 +03:00 (Migrated from gitlab.com)

changed due date to June 22, 2023

changed due date to June 22, 2023
ius.mark.alex commented 2023-06-18 18:59:45 +03:00 (Migrated from gitlab.com)

assigned to @ius.mark.alex

assigned to @ius.mark.alex
movefasta commented 2023-06-24 23:31:51 +03:00 (Migrated from gitlab.com)

changed title from Создание и экспорт разметки для сборки сцен to {+[FreeCAD] +}Создание и экспорт разметки для сборки сцен

changed title from **Создание и экспорт разметки для сборки сцен** to **{+[FreeCAD] +}Создание и экспорт разметки для сборки сцен**
ius.mark.alex commented 2023-06-24 23:50:30 +03:00 (Migrated from gitlab.com)

marked the checklist item Экспорт информации as completed

marked the checklist item **Экспорт информации** as completed
movefasta commented 2023-08-25 17:29:20 +03:00 (Migrated from gitlab.com)

changed the description

changed the description
movefasta commented 2023-08-25 18:31:34 +03:00 (Migrated from gitlab.com)

changed the description

changed the description
movefasta commented 2023-08-25 18:35:52 +03:00 (Migrated from gitlab.com)

changed the description

changed the description
ius.mark.alex commented 2023-08-26 14:41:14 +03:00 (Migrated from gitlab.com)

@solid-sinusoid, пример указания информации о захватных позициях в детали. Запрашиваю обратную связь
bolt.json

{
    "grippers": [
        {
            "gripper_name": "Gripper01",
            "positions": [
                {
                    "open_wight": 60,
                    "position": {
                        "x": 0,
                        "y": 0,
                        "z": 80
                    },
                    "orientation": {
                        "euler": {
                            "yaw": 0,
                            "pitch": 0,
                            "roll": 0
                        },
                        "quaternion": [
                            0.0,
                            0.0,
                            0.0,
                            1.0
                        ]
                    }
                }
                
            ]
        }
    ]
}
@solid-sinusoid, пример указания информации о захватных позициях в детали. Запрашиваю обратную связь bolt.json ```json { "grippers": [ { "gripper_name": "Gripper01", "positions": [ { "open_wight": 60, "position": { "x": 0, "y": 0, "z": 80 }, "orientation": { "euler": { "yaw": 0, "pitch": 0, "roll": 0 }, "quaternion": [ 0.0, 0.0, 0.0, 1.0 ] } } ] } ] } ```
ius.mark.alex commented 2023-08-26 14:43:34 +03:00 (Migrated from gitlab.com)

@solid-sinusoid, @movefasta
Для хранения инфформации о роботах и захватах предлагаю вот такую структуру документов

изображение

@solid-sinusoid, @movefasta Для хранения инфформации о роботах и захватах предлагаю вот такую структуру документов ![изображение](/uploads/b027e86601e82335def520d69ec704f5/изображение.png)
solid-sinusoid commented 2023-08-28 15:32:26 +03:00 (Migrated from gitlab.com)

всё окей, но наверное стоит отсортировать roll, pitch, yaw по такому порядку и всё. И тогда наверное и кватернион можно в формате структуры хранить, а не массива. Там порядок будет x, y, z, w. Позиция с углом поворота называется позой, возможно стоит сделать поправку на это. Например не positions, а poses

всё окей, но наверное стоит отсортировать roll, pitch, yaw по такому порядку и всё. И тогда наверное и кватернион можно в формате структуры хранить, а не массива. Там порядок будет x, y, z, w. Позиция с углом поворота называется позой, возможно стоит сделать поправку на это. Например не positions, а poses
solid-sinusoid commented 2023-08-28 15:50:49 +03:00 (Migrated from gitlab.com)

Робота и гриппер лучше хранить в формате xacro в виде макроса, чтобы его включать в итоговый мир с роботом

Робота и гриппер лучше хранить в формате xacro в виде макроса, чтобы его включать в итоговый мир с роботом
ius.mark.alex commented 2023-08-29 13:07:34 +03:00 (Migrated from gitlab.com)

marked the checklist item @ius.mark.alex Обсудить с @IDONTSUDO формат as completed

marked the checklist item **@ius.mark.alex Обсудить с @IDONTSUDO формат** as completed
movefasta commented 2023-08-29 16:49:37 +03:00 (Migrated from gitlab.com)

changed the description

changed the description
movefasta commented 2023-08-31 16:40:36 +03:00 (Migrated from gitlab.com)

marked this issue as related to #110

marked this issue as related to #110
movefasta commented 2023-11-01 16:34:27 +03:00 (Migrated from gitlab.com)

changed the description

changed the description
movefasta commented 2023-11-01 17:01:53 +03:00 (Migrated from gitlab.com)

changed the description

changed the description
movefasta commented 2023-11-15 15:06:06 +03:00 (Migrated from gitlab.com)

unassigned @ius.mark.alex

unassigned @ius.mark.alex
ius.mark.alex commented 2024-03-20 17:31:57 +03:00 (Migrated from gitlab.com)

mentioned in merge request !77

mentioned in merge request !77
ius.mark.alex commented 2024-03-20 17:37:19 +03:00 (Migrated from gitlab.com)

mentioned in merge request !78

mentioned in merge request !78
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: robossembler/framework#87
No description provided.