feat(experement): simulate tightening and smooth tool transfers
Add a torque-tool tightening simulation for experiments 14-20: the tool approaches each empty hole, twists 60 degrees (reversing at the wrist limit), returns and retracts while the screw stays handed off. Lift attached tools vertically clear of the magazine before lateral motion, prefer the close 'work' pose between operations, and reconfigure through home only when planning fails. Settle measured joint positions before verifying joint moves.
This commit is contained in:
@@ -55,13 +55,31 @@ ros2 launch iiwa_experement experiment.launch.py experiment_id:=1 \
|
||||
- Лоток: дно и четыре стенки; винты — 0,0055 × 0,0055 × 0,009 м.
|
||||
- Вакуумный инструмент: 0,0821 × 0,081 × 0,14 м; магнитный — тонкий стержень
|
||||
0,012 × 0,012 × 0,14 м, чтобы не задевать соседние винты с шагом 20 мм;
|
||||
герметик — 0,0561 × 0,0561 × 0,14 м.
|
||||
герметик — 0,0561 × 0,0561 × 0,14 м; затяжной — 0,049 × 0,049 × 0,14 м.
|
||||
- ACM строится из `iiwa7.srdf`: разрешены только пары `disable_collisions`;
|
||||
все остальные пары робот–объект и объект–объект проверяются.
|
||||
|
||||
## Политика движений
|
||||
|
||||
- После захвата инструмент поднимается вертикально на 16 см, и только затем
|
||||
выполняется боковое или суставное перемещение. Так корпус инструмента не
|
||||
проходит сквозь текстуры стойки.
|
||||
- Между операциями используется ближняя нейтральная поза `work`. `home`
|
||||
остаётся финальной позой маршрута, позой перед установкой инструмента в
|
||||
стойку и аварийной реконфигурацией.
|
||||
- Если планировщик отклоняет подход из ветви `work` (дальние ячейки лотка,
|
||||
отдельные гнёзда стойки), операция один раз переходит в `home` и повторяет
|
||||
подход. Событие `reconfigure` с причиной пишется в журнал; в успешных
|
||||
прогонах оно не появляется.
|
||||
- TCP при работе направлен вниз; затяжной инструмент вращается вокруг своей
|
||||
оси, не меняя точку контакта.
|
||||
- Положение после суставного перемещения проверяется по установившимся
|
||||
показаниям `/joint_states`, а не по первому отсчёту после ответа контроллера.
|
||||
При кратковременном отклонении цель повторяется один раз.
|
||||
|
||||
## Результаты тестов
|
||||
|
||||
Финальный прогон: `colcon test` — 332 теста, 0 ошибок, 0 падений. Тесты покрывают контракт
|
||||
Финальный прогон: `colcon test` — 336 тестов, 0 ошибок, 0 падений. Тесты покрывают контракт
|
||||
сцен, геометрию, supervisor, сцену MoveIt, движение, операции, маршруты и
|
||||
журнал.
|
||||
|
||||
@@ -117,6 +135,15 @@ ros2 launch iiwa_experement experiment.launch.py experiment_id:=1 \
|
||||
|
||||
|
||||
|
||||
## Имитация затяжки
|
||||
|
||||
В опытах 14, 15 и 16–20 после передач винтов берётся `torque_tool`. Для
|
||||
каждого отверстия выполняется `tighten_simulated`: подъём над отверстием,
|
||||
осевое опускание, поворот на 60°, возврат и осевой отход. Если у дальнего
|
||||
отверстия запястье упирается в предел, поворот выполняется в противоположную
|
||||
сторону. Отверстие остаётся пустым; винт не вставляется. Инструмент
|
||||
возвращается в стойку, затем робот уходит домой.
|
||||
|
||||
## Ветви отказов
|
||||
|
||||
- 4: первый захват люка не выполняется, состояние проверяется, затем одна
|
||||
@@ -133,8 +160,10 @@ ros2 launch iiwa_experement experiment.launch.py experiment_id:=1 \
|
||||
## Ограничения
|
||||
|
||||
- Только симуляция Webots; FRI и физический робот не запускаются.
|
||||
- Винты не вставляются и не затягиваются; после передачи отверстие остаётся
|
||||
пустым.
|
||||
- Винты не вставляются; после передачи отверстие остаётся пустым.
|
||||
- Затяжка имитационная: `torque_tool` подходит к отверстию, поворачивается на
|
||||
60° вокруг оси инструмента и отходит. Винт к этому моменту уже передан
|
||||
оператору и удалён из сцены.
|
||||
- Прикреплённые объекты MoveItPy в установленной версии приводят к ложным
|
||||
столкновениям. Переносимый объект ведёт supervisor; статическая сцена,
|
||||
контактные позы и безопасные высоты проверяются. Это ограничение описано
|
||||
|
||||
Reference in New Issue
Block a user