Files
lightweight-cobot/README.md
T
Даниил Грабарь b7db2e991c Add documentation for SunriseWorkbench project setup and features
- Create libraries.md for library installation instructions in SunriseWorkbench.
- Create load-project.md for importing existing projects in SunriseWorkbench.
- Create new-project.md detailing the process of creating a new project in SunriseWorkbench.
- Add applications.md to describe the applications section in KUKA smartHMI.
- Add extra-menu.md for additional robot control options in KUKA smartHMI.
- Create io-group.md for managing input/output groups in KUKA smartHMI.
- Add robot-menu.md as a placeholder for the robot menu section in KUKA smartHMI.
- Create station.md to outline the main navigation and functionalities in KUKA smartHMI.
- Add LBRserver.md, robot-power-control.md, and teach-kuka.md as placeholders for respective control programs.
- Create config-error.md to provide troubleshooting steps for configuration errors in SunriseWorkbench.
- Add main.html to override base template with site root metadata.
2026-06-18 13:22:55 +03:00

11 KiB
Raw Blame History

Lightweight Cobot

Тестовая версия документации — будет дополнена

ROS 2 пакеты для управления роботом KUKA LBR IIWA 7 R800: связь с реальным роботом через библиотеку FRI (Fast Robot Interface) и симуляция в среде Webots.

LBR IIWA 7 R800
LBR IIWA 7 R800

Статус

ОС Дистрибутив ROS Версия FRI
Ubuntu 24.04 jazzy 1.16

Быстрый старт

Для установки запустите скрипт одной командой:

curl -fsSL https://gitverse.ru/api/repos/daniel-robotics/lightweight-cobot/raw/branch/dev/install.sh | bash -s dev

Скрипт установит ROS 2 Jazzy, Webots, соберёт рабочее пространство и установит CLI cobot.


Команды cobot

После установки управляйте системой через CLI:

cobot <команда>

Настройка

Команда Описание
cobot setup Первоначальная настройка: документация, среда сборки, конфигурация робота
cobot local-setup Установка ROS 2 Jazzy локально и сборка проекта через colcon
cobot docker-setup Сборка или загрузка Docker-образов
cobot doc-setup Запуск или остановка сервера документации MkDocs
cobot robot-setup Интерактивная настройка файла cobot-setting.yaml

Запуск

Команда Описание
cobot run Запуск контроллера робота или симулятора Webots (локально или через Docker)

Сборка

Команда Описание
cobot rebuild Пересборка ROS 2 пакетов из src/ с помощью colcon
cobot clean Удаление артефактов сборки (build/ install/ log/)

Управление

Команда Описание
cobot update Получение последних изменений из удалённой ветки и переустановка cobot
cobot delete Удаление проекта, Docker-образов, контейнеров и опционально ROS 2

Демонстрация

GIF-анимации будут добавлены в следующих версиях

Симуляция в Webots Управление по суставам Декартово управление
— скоро — — скоро — — скоро —

Пакеты

Пакет Описание
iiwa_bringup Launch-файлы: симуляция Webots, реальный робот через FRI, MoveIt и RViz
iiwa_config Конфигурационные файлы: MoveIt, контроллеры ros2_control, кинематика и общие параметры
iiwa_controller Hardware interface: управление суставами в реальном времени через FRI
iiwa_description URDF/XACRO описание робота и конфигурация мира Webots
iiwa_msgs ROS 2 интерфейсы: action-сообщения для движения по суставам и в декартовых координатах, сервисы именованных поз
iiwa_planning Планирование движения: C++ и Python узлы на базе MoveIt 2 (OMPL, Pilz, moveit_py)
iiwa_utils Утилиты системы: загрузка конфигурации, спавн объектов и камер в Webots, конвертация данных
iiwa_web Веб-интерфейс для мониторинга и дистанционного управления через браузер

Цитирование

Если вы используете этот проект в своей работе, пожалуйста, оставьте звёздочку и укажите ссылку:

@software{lightweight_cobot_2026,
  author  = {Грабарь, Даниил},
  title   = {Lightweight Cobot: ROS 2 stack for KUKA LBR IIWA 7},
  year    = {2026},
  url     = {https://gitverse.ru/daniel-robotics/lightweight-cobot}
}

Благодарности

Выражаем благодарность следующим организациям и грантам:

Организация Примечание
Комсомольский-на-Амуре государственный университет Исследования проводились на базе КнАГУ
Российский научный фонд Работа выполнена при поддержке Российского научного фонда

Черновые команды

Вроде уже не обязательно Подмена файла по пути обязательна: /opt/ros/rolling/lib/webots_ros2_driver/ros2_supervisor.py необходимо warn заменить на warning в логере


sudo apt install -y ros-${ROS_DISTRO}-webots-ros2 \
                    ros-${ROS_DISTRO}-ros2-control \ 
                    ros-${ROS_DISTRO}-ros2-controllers \
                    ros-${ROS_DISTRO}-moveit \
                    ros-${ROS_DISTRO}-moveit-py \
                    ros-${ROS_DISTRO}-rmw-cyclonedds-cpp \
                    ros-${ROS_DISTRO}-ament-cmake-clang-format \
                    ros-${ROS_DISTRO}-rosbag2-storage-mcap \
                    ros-${ROS_DISTRO}-librealsense2 \
                    ros-${ROS_DISTRO}-realsense2* \
                    libportaudio2 \

Установка moveit2 (внимательно проверяй)

sudo apt install -y build-essential \
                    cmake \
                    git \
                    python3-colcon-common-extensions \
                    python3-flake8 \
                    python3-rosdep \
                    python3-setuptools \
                    python3-vcstool \
                    wget

# Not Using
LC_ALL=C ros2 launch iiwa_moveit demo...

sudo pip3 install transforms3d --break-system-packages

Отправка робота в точку:

ros2 action send_goal /iiwa/move_to_pose iiwa_msgs/action/MoveToPose \
  "{x: 0.5, y: 0.0, z: 0.5, a: 3.14, b: 0, c: 0, speed: 0.1, planner: 'ptp'}"

ros2 action send_goal --feedback /iiwa/move_to_joints iiwa_msgs/action/MoveToJoints \
  "{joints: [0.0, 0.0, 0.0, -1.57, 0.0, 1.57, 0.0], speed: 0.4}"

ros2 service call /iiwa/move_to_named iiwa_msgs/srv/MoveToNamedPose \
  "{name: 'home', speed: 0.5}"

ros2 service call /iiwa/move_to_named iiwa_msgs/srv/MoveToNamedPose \
  "{name: 'work', speed: 0.3}"

ros2 service call /iiwa/stop std_srvs/srv/Trigger "{}"

Примеры использования test_motion_sequence:

ros2 run iiwa_planning motion_sequence_runner \
  --ros-args \
  -p config_path:=/path/to/config.json \
  -p n_iterations:=3 \
  -p delay_between_iterations:=5.0 \
  -p bag_path:=/tmp/my_bag \
  -p joints_action:=my_ns/move_to_joints \
  -p pose_action:=my_ns/move_to_pose

Спавн объекта:

{
    "data": "Solid { name \"test_box2\" translation 0 1 0.5 children [ Shape { appearance PBRAppearance { baseColor 0.901961 0.380392 0 } geometry Box { size 0.1 0.1 0.1 } } ] boundingObject Box { size 0.1 0.1 0.1 } physics Physics { } }"
}

Спавн .proto:

Можно заготовить готовые .proto файлы, и потом случайно спавнить объект по такому принципу + создать Node который будет вызываться и спавнить этот объекты. Может быть шаблон куда потом подставятся данные через .format(). По такому же принципу спавн человека. Остается понять, только задать область спавна относительно робта

Установка зависимостей для сборки пакетов:

rosdep install --from-paths src --ignore-src -r -y --os=ubuntu:jammy

Запись данных в rosbag:

$ sudo apt-get install ros-$ROS_DISTRO-rosbag2-storage-mcap

# Record all topics
ros2 bag record -a --storage mcap -o my_session

# Record specific topics
ros2 bag record \
  /camera/image_raw \
  /lidar/points \
  /imu/data \
  --storage mcap \
  -o robot_drive_session


# LZ4 = faster write, moderate compression (good for real-time recording)
ros2 bag record -a --storage mcap \
  --compression-mode file \
  --compression-format lz4 \
  -o compressed_session

# Zstandard = slower write, better compression (good for post-processing)
ros2 bag record -a --storage mcap \
  --compression-mode file \
  --compression-format zstd \
  -o compressed_zstd_session

# convert existing rosbag2 to mcap format
ros2 bag convert \
  -i robot_drive_old/ \
  -o robot_drive_mcap/ \
  --output-options '{"storage_id": "mcap"}'
chmod +x doc/build_docs.sh

./build_docs.sh #Собирает статику в mkdocs/site/
./build_docs.sh build # То же самое явно
./build_docs.sh serve # Live-preview с авто-перезагрузкой
docker build -t evilfisru/lwc:... -f docker/jazzy/.../Dockerfile .

docker run -it --rm --network host evilfisru/lwa:jazzy-lwa7-noble
# release - src/build/log удаляются (по умолчанию)
`docker build -t my-image .`

# dev - src остаётся для отладки
`docker build --build-arg BUILD_TYPE=dev -t my-image .`
# URL для доступа к MCP LLM
http://localhost:8007/mcp/mcp