Реальное время ядра для Nvidia и WSL2

Вопрос или проблема

Я пытаюсь настроить реальное время ядра (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:

  1. Скачайте исходный код ядра. Например, можете использовать команды curl, но не забывайте проверять, актуальна ли версия, с которой вы работаете.

  2. Примените патчи Preempt_RT:

    xz -d patch-5.10.16-rt30.patch.xz
    patch -p1 < patch-5.10.16-rt30.patch
  3. Соберите ядро:

    make menuconfig  # Настройте параметры под ваши требования
    make -j$(nproc)  # Соберите ядро
    sudo make modules_install
    sudo make install
  4. Настройте загрузчик. Убедитесь, что ваше новое реальное ядро загружается при старте системы.

  5. Перезагрузите систему и проверьте, что ядро загружается корректно с помощью uname -r.

Заключение

Использование WSL2 для приложений, требующих работы в реальном времени, является проблематичным. Поэтому настоятельно рекомендуется подготовить полноценное окружение с Linux, предпочтительно на отдельном компьютере или виртуальной машине. Это обеспечит необходимую производительность и стабильность для работы с роботами, такими как Franka Emika.

Оцените материал
Добавить комментарий

Капча загружается...