Добавлено управление роботом
This commit is contained in:
@@ -17,7 +17,7 @@ uv run python run_scene.py --config configs/scene.yaml
|
||||
|
||||
```bash
|
||||
uv sync --extra cpu --locked
|
||||
uv run --extra cpu python run_scene.py --headless --steps 4 --save-frames
|
||||
uv run --extra cpu python run_scene.py --backend cpu --headless --steps 4 --save-frames
|
||||
uv run --extra cpu pytest
|
||||
```
|
||||
|
||||
@@ -35,6 +35,46 @@ uv run pytest
|
||||
IIWA_GENESIS_SMOKE=1 uv run pytest tests/test_genesis_smoke.py
|
||||
```
|
||||
|
||||
Для управления во время viewer-запуска добавьте `--interactive`, а для
|
||||
отдельного окна управления — `--control-window` (их можно использовать вместе):
|
||||
|
||||
```bash
|
||||
uv run python run_scene.py --viewer --control-window
|
||||
```
|
||||
|
||||
Окно содержит выбор режима, семь полей суставов A1..A7, шесть Cartesian-полей
|
||||
`x y z roll pitch yaw`, ползунок скорости 0–100%, а также Send, Stop и Close.
|
||||
Скорость ограничивает каждый сустав по его velocity limit из выбранного URDF;
|
||||
100% использует полный limit, а 0% и кнопка Stop отменяют движение и удерживают
|
||||
текущую целевую позу. Ошибка запуска окна не останавливает сцену.
|
||||
|
||||
При `--interactive` в терминале выберите режим и отправляйте команды; terminal
|
||||
команды используют скорость 100%, а `set` использует выбранный режим:
|
||||
|
||||
```text
|
||||
mode joints
|
||||
set 0 0.2 0 1.0 0 0 0
|
||||
mode cartesian
|
||||
set 0.35 0 0.55 0 1.57 0
|
||||
```
|
||||
|
||||
В режиме joints значения — A1..A7 в радианах; в режиме cartesian —
|
||||
`x y z roll pitch yaw`. После выбора режима можно вводить и только числа, без `set`.
|
||||
|
||||
Cartesian-поза задаётся для TCP в системе координат базы робота (метры и
|
||||
радианы), а не в мировой системе. Также доступны однострочные формы
|
||||
`joints ...`, `cartesian ...`, `help` и `quit`. Для Cartesian-команд Genesis
|
||||
решает IK и плавно ведёт суставы к целевой позе через position controller.
|
||||
Для сцены без захвата используется `link7`, с захватом — `tcp`.
|
||||
Команды вне суставных limits и решения IK с ошибкой положения больше 0,5 мм
|
||||
или ориентации больше 0,005 рад отклоняются; предыдущее движение продолжается.
|
||||
Stop удерживает последнюю отправленную контроллеру суставную цель.
|
||||
За один шаг обрабатывается до 16 сообщений из каждой очереди ввода, чтобы
|
||||
поток команд не блокировал физику. В прочитанной порции `quit` имеет приоритет
|
||||
и завершает цикл до обработки GUI и следующего шага. Stop отменяет ожидающие
|
||||
движения терминала и предшествующие ему GUI-команды в этой порции; GUI-команды
|
||||
после Stop выполняются не раньше следующего шага.
|
||||
|
||||
Headless по умолчанию выполняет 120 шагов, viewer работает до закрытия окна,
|
||||
Ctrl+C или Q/Esc в окне кадров. `output.preview` включает окна RGB и глубины.
|
||||
Превью работает в отдельном процессе: оконные циклы OpenCV и Genesis не мешают
|
||||
@@ -43,7 +83,8 @@ Ctrl+C или Q/Esc в окне кадров. `output.preview` включает
|
||||
30 FPS — частота по времени симуляции; реальная скорость зависит от оборудования.
|
||||
Headless всё равно требует рабочий OpenGL/EGL для RGB. Используется EGL, если
|
||||
`PYOPENGL_PLATFORM` не задан пользователем. GPU требует совместимого драйвера;
|
||||
`backend: cpu` выбран для переносимого первого запуска. Системный драйвер и
|
||||
в текущем `configs/scene.yaml` выбран `backend: gpu`. Для запуска на CPU
|
||||
передайте `--backend cpu` или выберите `scene.backend: cpu`. Системный драйвер и
|
||||
библиотеки OpenGL предоставляются ОС, их uv не устанавливает.
|
||||
Обычные тесты проверяют URDF, конфигурацию и математику; opt-in smoke-тесты
|
||||
реально строят оба мира и сохраняют RGB-D на CPU/EGL. Первичная компиляция
|
||||
@@ -66,8 +107,8 @@ Python overlays, а pytest не загружает внешние плагины
|
||||
сенсора дополнительно смещена на `[0, 0.014, 0.027]` м: передняя плоскость
|
||||
находится за корпусом толщиной 26 мм. Это геометрическое приближение,
|
||||
исключающее измерение собственного корпуса, а не заводская калибровка.
|
||||
Нулевая гравитация удерживает выбранную позу без контроллера: v1 предназначена
|
||||
для осмотра сцены и получения изображений, а не динамического управления.
|
||||
Сцена использует нулевую гравитацию и суставной position controller для
|
||||
удержания позы и выполнения команд с ограниченной скоростью.
|
||||
При нулевых углах суставов фланец и камера инструмента направлены вверх.
|
||||
Для осмотра стола этой камерой задайте соответствующую рабочую позу в `robot.joints`.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user