# TeachKuka **TeachKuka** — приложение SunriseWorkbench для ручного обучения робота KUKA LBR iiwa. С его помощью оператор может без написания траектории в коде вручную переместить робот, сохранить нужную позицию, а также записать и повторить последовательность движений. Программа использует гравитационную компенсацию: после её включения робот становится лёгким для ручного ведения и удерживает положение, в которое его поставил оператор. Это удобно для быстрого обучения простых операций, проверки рабочей зоны и подготовки повторяемого движения. Исходный код программы находится в проекте по пути [`src/iiwa_sunrise/src/TeachKuka.java`](https://github.com/Daniel-Robotic/lightweight-cobot/blob/dev/src/iiwa_sunrise/src/TeachKuka.java). Файл можно открыть или скачать для добавления в Sunrise-проект. !!! warning "Безопасность" Перед запуском убедитесь, что рабочая зона свободна, а робот не выполняет другое движение. При воспроизведении траектории постоянно контролируйте положение робота и не запускайте программу рядом с людьми или объектами, если их перемещение может привести к травме или повреждению оборудования. ## Настройка инструмента В коде программы инструмент подключается к фланцу робота через аннотацию: === "java" ```java @Named("tool1") private Tool _gripper; ``` `tool1` — замените на имя своейго инструмента. Проверить инструмент и его параметры можно в Sunrise Workbench: 1. Откройте проект робота. 2. Перейдите в **Object Templates**. 3. Найдите инструмент, установленный на роботе. 4. Проверьте его имя и раздел **Load data**. 5. Укажите это имя вместо `tool1` в аннотации `@Named(...)` класса `TeachKuka`. 6. Убедитесь, что масса, центр тяжести и инерционные параметры соответствуют реальному захвату. !!! warning "Корректная модель нагрузки" Программа может запуститься и с неправильными параметрами нагрузки, но гравитационная компенсация будет работать неточно. Из-за этого робот может вести себя слишком тяжело, самопроизвольно смещаться или некорректно удерживать положение. Выполните калибровку массы и центра тяжести инструмента, чтобы избежать повреждений оборудования. ## Запуск и главное меню После запуска `TeachKuka` робот сначала перемещается в положение **Home**. Перед входом в любой рабочий режим он проходит через Home и переходит в заданную рабочую позицию. Инструмент из `@Named(...)` предварительно прикрепляется к фланцу робота. Найти и запустить программу можно в разделе [Приложения](../features/applications.md) на smartPAD. В этом разделе также описаны состояния приложений и порядок их активации. ![Выбор TeachKuka в разделе приложений](../../assets/programms/teach_kuka/apps.png) На smartHMI появляется меню **Выберите режим работы**: | Пункт меню | Назначение | |---|---| | **Режим 1: Позиция** | Ручное ведение робота и получение координат выбранной позиции. | | **Режим 2: Траектория** | Запись, воспроизведение и повтор траектории движения. | | **Выход** | Завершение программы и возврат робота в Home. | При выборе режима **Позиция** робот становится доступен для ручного перемещения. В режиме **Траектория** программа записывает движения робота, чтобы затем их повторить. Пункт **Выход** завершает выполнение программы и возвращает робот в Home. ![Выбор режима работы TeachKuka](../../assets/programms/teach_kuka/choose-mode.png) ## Режим 1: захват позиции После выбора режима программа переходит в рабочую позицию, проверяет модель нагрузки и включает гравитационную компенсацию. Теперь робот можно перемещать рукой. Он будет следовать за оператором и оставаться в установленном положении. В меню режима доступны следующие действия: | Действие | Что происходит | |---|---| | **Получить позицию** | В журнал выводятся координаты фланца `X/Y/Z` в миллиметрах, ориентация `A/B/C` в градусах и положения суставов в градусах и радианах. | | **Назад** | Гравитационная компенсация отключается, движение останавливается, тормоз активируется. | Окно выбора действий режима **Позиция** показано ниже. Кнопка **Получить позицию** выводит в журнал положение робота в декартовом пространстве (`X/Y/Z`, `A/B/C`), а также положения суставов в градусах и радианах. Кнопка **Назад** возвращает к предыдущему шагу и переводит робота в рабочую позицию `(0, 0, 0, -1.57, 0, 1.57, 0)`. ![Окно режима ручного перемещения](../../assets/programms/teach_kuka/move-mode.png) Видео ниже показывает пример ручного ведения робота в этом режиме: ## Режим 2: запись и воспроизведение траектории После входа в режим программа очищает предыдущую запись, включает гравитационную компенсацию и начинает сохранять текущие положения суставов робота. Новая точка записывается каждые 100 мс. Запись ограничена 3000 точками — это примерно 5 минут движения. После достижения лимита программа останавливает запись и сообщает об этом в журнале. ### Действия режима | Действие | Что происходит | |---|---| | **Повторить траекторию** | Запись останавливается, робот переходит к начальной точке и воспроизводит сохранённую траекторию. После завершения начинается новая запись. | | **Рестарт** | Текущая траектория удаляется, после чего сразу начинается новая запись. | | **Назад** | Запись и гравитационная компенсация останавливаются, режим завершается. | После того как робот был перемещён по нужной траектории, выберите **Повторить траекторию**. Программа переведёт робота в рабочую позицию `(0, 0, 0, -1.57, 0, 1.57, 0)`, а затем воспроизведёт записанное движение. Если во время обучения была допущена ошибка, нажмите **Рестарт**: текущая запись будет сброшена и начнётся заново. Кнопка **Назад** возвращает к предыдущему пункту меню и переводит робота в рабочую позицию. ![Окно режима записи траектории](../../assets/programms/teach_kuka/traj-mode.png) ### Воспроизведение Перед началом воспроизведения программа делает паузу две секунды, чтобы оператор успел отойти от робота. Затем робот переходит к первой записанной точке и повторяет движение через SmartServo с относительной скоростью 20%. Во время воспроизведения программа проверяет внешние суставные моменты. Если момент на любом суставе превышает порог 6 Н·м, робот удерживает текущую позицию и временно приостанавливает траекторию. После освобождения пути воспроизведение продолжается с остановленной точки. !!! note "Ограничение функции обнаружения препятствий" Контроль внешнего момента помогает остановить траекторию при неожиданном сопротивлении, но не заменяет штатные функции безопасности KUKA. Оператор должен постоянно контролировать рабочую зону. Видео ниже показывает пример записи и воспроизведения траектории: ## Завершение работы При выходе из главного меню программа останавливает активные потоки записи и гравитационной компенсации, отменяет активное движение и возвращает робота в положение **Home**. После этого приложение завершает работу.