Вопрос или проблема
Я пытаюсь настроить реальное время ядра (Preempt_RT) для робота Franka Emika. Мой компьютер работает на Nvidia, и я прочитал, что Nvidia и Linux RT не совместимы. Кроме того, я использую Windows Subsystem for Linux WSL2.
Вот вывод моей uname -r
:
root@ece-cdw-ts10:~# uname -r
5.10.16.3-microsoft-standard-WSL2
Я попробовал:
curl -SLO https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.10.16.tar.xz
curl -SLO https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.10.16.tar.sign
curl -SLO https://www.kernel.org/pub/linux/kernel/projects/rt/5.10/patch-5.10.16-rt30.patch.xz
curl -SLO https://www.kernel.org/pub/linux/kernel/projects/rt/5.10/patch-5.10.16-rt30.patch.sign
но это не работает.
Я настоятельно рекомендую использовать мини-ПК (Intel NUC, Jetson Nano или фактически AI Companion от Franka, разработанный именно для этой цели!) между главным контроллером робота Franka и вашим рабочим ПК с графической картой NVIDIA. Я использую такую конфигурацию уже некоторое время (в моем случае с базовым NVIDIA Jetson Nano), и это значительно упростило мою жизнь.
Ответ или решение
Для настройки реального времени (Real Time) ядра (Preempt_RT) для робота Franka Emika на вашей системе с NVIDIA и Windows Subsystem for Linux (WSL2) следует учитывать несколько важных аспектов.
1. Понимание ограничений WSL2
WSL2 использует ядро Linux, но оно работает внутри виртуализированного окружения, предоставленного Microsoft, что ограничивает ваш доступ к более низким уровням системы. Это означает, что вы не сможете запустить модифицированное ядро, такое как Preempt_RT, в среде WSL2. WSL2 предназначен в основном для разработки и тестирования, и возможности настоящего реального времени в нем отсутствуют.
2. Использование реального Linux окружения
Чтобы использовать реальное ядро с поддержкой реального времени, вам необходимо создать или использовать виртуальную машину (VM) с полноценной установкой Linux или использовать отдельный физический компьютер. Рассмотрите возможность использования таких дистрибутивов, как Ubuntu, Fedora или любой другой, который поддерживает сборку и установку настроенных ядер.
3. Аппаратные соображения
Если вы планируете работать с NVIDIA, важно учитывать, что совместимость чипов NVIDIA с реальным временем может вызвать проблемы. Некоторые пользователи сообщают о конфликтах между драйверами NVIDIA и режимами реального времени. Поэтому рекомендуется использовать альтернативные решения:
- Мини-ПК: Используйте Intel NUC или аналогичный устройством, которые достаточно мощные и имеют поддержку реального времени.
- Jetson Nano: Очень популярный вариант для проектов с использованием AI и робототехники. Он поддерживает CUDA и предлагает некоторые возможности реального времени при использовании соответствующих настроек ядра.
4. Настройка ядра Preempt_RT
Если вы решили использовать физическую машину или виртуальную машину, вот шаги для настройки ядра Preempt_RT:
-
Скачайте исходный код ядра. Например, можете использовать команды
curl
, но не забывайте проверять, актуальна ли версия, с которой вы работаете. -
Примените патчи Preempt_RT:
xz -d patch-5.10.16-rt30.patch.xz patch -p1 < patch-5.10.16-rt30.patch
-
Соберите ядро:
make menuconfig # Настройте параметры под ваши требования make -j$(nproc) # Соберите ядро sudo make modules_install sudo make install
-
Настройте загрузчик. Убедитесь, что ваше новое реальное ядро загружается при старте системы.
-
Перезагрузите систему и проверьте, что ядро загружается корректно с помощью
uname -r
.
Заключение
Использование WSL2 для приложений, требующих работы в реальном времени, является проблематичным. Поэтому настоятельно рекомендуется подготовить полноценное окружение с Linux, предпочтительно на отдельном компьютере или виртуальной машине. Это обеспечит необходимую производительность и стабильность для работы с роботами, такими как Franka Emika.