|
|
1 month ago | |
|---|---|---|
| Assets | 1 month ago | |
| Packages | 1 month ago | |
| ProjectSettings | 1 month ago | |
| .gitattributes | 1 month ago | |
| .gitignore | 1 month ago | |
| .gitmodules | 1 month ago | |
| COLCON_IGNORE | 1 month ago | |
| README.md | 1 month ago | |
README.md
Развертывание симуляции зоны ЧС в Unity
1. Установка UnityHub
Установка лаунчера подробно описано на официальном сайте. Дублирую информацию:
1.1 Проверяем наличие или устанавливаем при необходимости утилиту curl:
sudo apt install curl
1.2 Добавляем публичный ключ для подписи
sudo install -d /etc/apt/keyrings
curl -fsSL https://hub.unity3d.com/linux/keys/public | sudo gpg --dearmor -o /etc/apt/keyrings/unityhub.gpg
1.3 Добавляем репозиторий Unity Hub (только для x86_64/amd64)
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/unityhub.gpg] https://hub.unity3d.com/linux/repos/deb stable main" | sudo tee /etc/apt/sources.list.d/unityhub.list
1.4 Устанавливаем приложение
sudo apt update
sudo apt install unityhub
2. Установка Unity
Заходим в Unityhub и во вкладке Installs нажимаем Install Editor. В появившимся окне выбираем Unity 6.0, проверяем, достаточно ли свободного места на диске, никакие дополнительные модули не ставим и подтверждаем установку. При необходимости модули можно будет доставить потом.
3. Развертывание симуляции
- Склонировать симуляцию из Git‑репозитория в любую удобную папку на диске:
git clone --recurse-submodules https://git.robofob.ru/sirius/sirius_unity_sim.git
Если репозиторий уже был склонирован без модуля, то выполнить:
git submodule init
git submodule update
- Скачиваем модели мира Industrial_Zone_Modular_Pack и разархивируем ее в папку
Assets. Должна получится струткураAssets/Industrial_Zone_Modular_Pack - В UnityHub добавляем проект
Add new projectи выбираем папкуsirius_unity_sim. - Открываем проект и ждем процесса компиляции проекта. Unity не сможет скомпилировать некоторые скрипты и из-за этого предложит перейти в режим
Safe Mode. Соглашаемся. - После открытия программы устанавливаемя дополнительные пакеты для организации свзяи ROS+Unity:
- Через меню
Window > Package managerвыбрать разделUnity Registryи установить библиотекуMathematics,Burst - Через интерфейс "+" выбрать
Add package from git URL...и ввести прикрепленные ниже ссылки- ROS-TCP-Connector - перессылка сообещинй из ROS в Unity и обратно
https://github.com/Unity-Technologies/ROS-TCP-Connector.git?path=/com.unity.robotics.ros-tcp-connector. - Visualizations - визуализация данных ROS-сообщений в Unity в реальном времени
https://github.com/Unity-Technologies/ROS-TCP-Connector.git?path=/com.unity.robotics.visualizations - URDF-Importer
https://github.com/Unity-Technologies/URDF-Importer.git?path=/com.unity.robotics.urdf-importer#v0.5.2
- ROS-TCP-Connector - перессылка сообещинй из ROS в Unity и обратно
- Через меню
- Если не все ошибки были исправленны, то выходим из режима
Safe Mode > Exit Safe Mode. Во вкладкеRobotics > ROS Settingsпереключаем на протоколROS2и ждем компиляции проекта. После компиляции оставшихся скриптов не должно возникнуть никаких критических ошибок.
4. ROS2: установка дополнительных пакетов
Рабочим воркспейсом будем считать ~/sirius_ws.
- В
sirius_ws/srcклонируем пакет ROS TCP Endpoint:
cd ~/sirius_ws/src
git clone -b main-ros2 https://github.com/Unity-Technologies/ROS-TCP-Endpoint.git
- Собираем workspace из его корня командой
cd ~/sirius_ws
colcon build --symlink-install
5. Запуск симуляции
- На стороне ROS2 запускает TCP-сервер:
ros2 run ros_tcp_endpoint default_server_endpoint --ros-args -p ROS_IP:=127.0.0.1
- В Unity запускаем симуляцию нажав кнопку
Play(внешний вид: ▶) на панели инструментов (чуть выше окна просмотра сценыScene/ игрового окнаGame). В верхнем левом углу игрового окна будет отображаться плашка с указанием IP-адреса и индикацией состояния подключения (внешний вид: ⇄): если стрелки красного цвета - соединения нет, если синего - есть. Ошибки работы симуляции будут выводиться в собственную консоль Unity. Для прекращения работы симуляции повторно нажмите кнопкуPlay.
Во время симуляции можно изменять параметры скриптов, положение объектов и другие элементы, но после ее завершения все изменения автоматически откатятся к начальному состоянию.
🚨 Известные проблемы и их решения
Проблема импорта текстур
При импроте текстур и материалов может возникнуть конфликт при рендеринге: предметы на сцене будут ярко розового цвета. Для устранения этой проблемы перейдите в строке меню наверху:
Edit > Render Pipeline > Universal Render Pipeline > Upgrade Project Materials to URP Materials или Upgrade Selected Project Materials to URP Materials (второй вариант доступен при предварительном выборе проблемных текстур перед вызовом контекстного меню).
Ошибка компиляции библиотеки URDF-Importer DllNotFoundException: libdl.so
Полный текст ошибки:
DllNotFoundException: libdl.so assembly:<unknown assembly> type:<unknown type> member:(null)
Assimp.Unmanaged.UnmanagedLibrary+UnmanagedLinuxLibraryImplementation.NativeLoadLibrary (System.String path) (at <d40f2b0ad6814d4c8094142d8473733f>:0)
Assimp.Unmanaged.UnmanagedLibrary+UnmanagedLibraryImplementation.LoadLibrary (System.String path) (at <d40f2b0ad6814d4c8094142d8473733f>:0)
Assimp.Unmanaged.UnmanagedLibrary.LoadLibrary (System.String libPath) (at <d40f2b0ad6814d4c8094142d8473733f>:0)
Assimp.Unmanaged.UnmanagedLibrary.LoadLibrary () (at <d40f2b0ad6814d4c8094142d8473733f>:0)
Assimp.AssimpUnity.InitializePlugin () (at ./Library/PackageCache/com.unity.robotics.urdf-importer@4ed58f8d00fe/Runtime/UnityMeshImporter/Plugins/AssimpNet/AssimpUnity.cs:147)
Чтобы устранить эту ошибку, выполните следующие шаги:
- Проверить наличие файла
libdl.so.2в директории/usr/lib/x86_64-linux-gnu. - Если имеется, то добавить ссылку командой
sudo ln -s /usr/lib/x86_64-linux-gnu/libdl.so.2 /usr/lib/libdl.so. - Если нет то найти и модифицировать команду из п.2.
- Повторно открыть проект.