Добавлены 3д объекты в виртуальный мир (молотки 5шт)
This commit is contained in:
@@ -107,11 +107,68 @@ Python overlays, а pytest не загружает внешние плагины
|
||||
сенсора дополнительно смещена на `[0, 0.014, 0.027]` м: передняя плоскость
|
||||
находится за корпусом толщиной 26 мм. Это геометрическое приближение,
|
||||
исключающее измерение собственного корпуса, а не заводская калибровка.
|
||||
Сцена использует нулевую гравитацию и суставной position controller для
|
||||
удержания позы и выполнения команд с ограниченной скоростью.
|
||||
Сцена использует гравитацию `[0, 0, -9.81]` м/с². У робота включена полная
|
||||
компенсация гравитации и суставной position controller для удержания позы и
|
||||
выполнения команд с ограниченной скоростью. Свободный инструмент подчиняется
|
||||
гравитации и контактам.
|
||||
При нулевых углах суставов фланец и камера инструмента направлены вверх.
|
||||
Для осмотра стола этой камерой задайте соответствующую рабочую позу в `robot.joints`.
|
||||
|
||||
## Случайный молоток на столе
|
||||
|
||||
В `configs/scene.yaml` перечислите допустимые имена файлов без расширений:
|
||||
|
||||
```yaml
|
||||
tools:
|
||||
allowed: [hammer1, hammer3, hammer5]
|
||||
seed: null
|
||||
```
|
||||
|
||||
При построении сцены равновероятно выбирается **ровно один** молоток из списка.
|
||||
Он остаётся тем же объектом в течение запуска. `allowed: [hammer2]` всегда
|
||||
выбирает второй молоток. Список не может быть пустым; повторы, неизвестные имена
|
||||
и отсутствующие OBJ/MTL отклоняются при чтении конфигурации. Файлы загружаются
|
||||
из `iiwa_genesis_description/tools/hammer/`. Конфиги без раздела `tools`
|
||||
используют все пять молотков.
|
||||
|
||||
При `seed: null` выбор модели, положения и поворота производится заново при
|
||||
каждом запуске; случайный выбор может повторить предыдущую модель. Целое
|
||||
неотрицательное число, например `seed: 17`, повторяет выбор и начальную позу.
|
||||
Этот seed независим от `scene.seed`, используемого симуляцией и камерами.
|
||||
Выбранное имя выводится в терминале и используется как имя сущности Genesis.
|
||||
|
||||
Молоток лежит на свободной стороне стола: весь его контур находится внутри
|
||||
`X=[0.06, 0.58]`, `Y=[-0.48, 0.48]` м в системе стола, за пределами монтажной
|
||||
пластины и бортиков. Положение учитывает `table.position` и `table.euler`.
|
||||
Нижняя точка появляется на 5 мм выше столешницы (локальная высота 0.800 м),
|
||||
затем инструмент опускается на неё под действием гравитации. Область рассчитана
|
||||
на поставляемый стол; произвольные начальные позы руки, пересекающие эту область,
|
||||
могут сразу привести к контакту с инструментом.
|
||||
|
||||
Импорт учитывает Y-up экспорт Blender `(X, Y, Z) → (X, -Z, Y)` и смещения
|
||||
молотков в исходной Blender-сцене; OBJ/MTL не изменяются. Масштаб остаётся 1:1.
|
||||
Все детали одного OBJ образуют одно свободное твёрдое тело с шестью степенями
|
||||
свободы. Коллизии строятся по выпуклым частям геометрии с разложением вогнутых
|
||||
участков, а не по одному охватывающему параллелепипеду. Молоток может падать,
|
||||
сдвигаться, вращаться и сталкиваться со столом и роботом.
|
||||
|
||||
Плотность 3000 кг/м³ и коэффициент трения 0.65 — начальные приближения;
|
||||
масса и инерция вычисляются по геометрии. Для точного цифрового двойника нужно
|
||||
отдельно откалибровать распределение массы и параметры контакта. Управление
|
||||
захватом и сценарии захвата этим изменением не добавляются.
|
||||
|
||||
В текущих MTL отсутствуют `map_Kd` и другие текстурные карты: процедурные
|
||||
материалы Blender не переносятся через такой OBJ-экспорт. Genesis загружает
|
||||
доступные MTL; для сохранения древесных волокон и других текстур их нужно
|
||||
запечь в изображения и экспортировать с материалами.
|
||||
|
||||
Проверка реальных контактов всех пяти OBJ со столом (может требовать несколько
|
||||
минут на первичное разложение мешей и компиляцию):
|
||||
|
||||
```bash
|
||||
IIWA_GENESIS_SMOKE=1 uv run pytest tests/test_tool_physics.py
|
||||
```
|
||||
|
||||
## Камеры и запись
|
||||
|
||||
Это **приближение D455**, использующее профиль из согласованного плана:
|
||||
|
||||
Reference in New Issue
Block a user