Приложение на PyQt6 для управления манипулятором KUKA KR10 R900 в симуляторе CoppeliaSim. Проект предназначен для обучения студентов и школьников: знакомство с управлением промышленным роботом, изучение алгоритмов прямой и обратной кинематики, написание собственных алгоритмов управления.
- Python 3.14 или новее
- PyQt6
- numpy (последняя версия, 2.x)
- Симулятор CoppeliaSim
(V-REP) и файл сцены
kuka_world.ttt - Нативная библиотека Remote API для вашей ОС (см. раздел «Remote API»)
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt- Запустите CoppeliaSim.
- Откройте сцену
kuka_world.ttt. - Запустите приложение:
python main.pyПри успешном подключении приложение само запустит симуляцию и покажет видеопоток с камеры. Если симулятор не запущен, окно откроется в режиме «офлайн» — элементы управления будут заблокированы.
qt_ya_project/
├── main.py # точка входа
├── pyproject.toml # метаданные пакета
├── requirements.txt # зависимости
├── kuka_app/
│ ├── config.py # конфигурация приложения
│ ├── main_window.py # главное окно (PyQt6)
│ ├── ui/dialog.ui # интерфейс (Qt Designer)
│ └── robot/
│ ├── kuka_consts.py # константы и пределы суставов
│ ├── sim_control.py # обёртка над CoppeliaSim Remote API
│ ├── ball_kinematic.py # кинематика полёта мяча
│ ├── kinematics.py # обратная кинематика (учебная модель)
│ └── vendor/ # вендорные модули Remote API
│ ├── sim.py
│ ├── simConst.py
│ └── remoteApi.{so,dll,dylib}
├── tests/ # юнит-тесты
└── kuka_world.ttt # сцена симулятораДля связи с симулятором используется библиотека Remote API. Разные ОС требуют разных файлов:
| ОС | Файл |
|---|---|
| Linux | remoteApi.so |
| Windows | remoteApi.dll |
| macOS | remoteApi.dylib |
Поместите нужный файл в каталог kuka_app/robot/vendor/ (или в
lib_remote_api/ на уровень выше). sim.py ищет библиотеку автоматически.
python -m pytest tests/- Set new position — установить манипулятор в позицию из полей A1..A6.
- Zero position — нулевая позиция манипулятора.
- Master position — стартовая позиция манипулятора.
- Set new position (слева) — установить мяч в выбранную позицию (ракетка / центр KUKA / слева / справа).
- Push ball — запустить мяч (поле «Start speed» — скорость, «Angle» — угол).
- START — место для собственных алгоритмов (обработчик
on_button7_clicked). - Close — закрыть приложение и остановить симуляцию.
Ползунки A1..A6 задают углы суставов в градусах и синхронизированы с полями.