2012
GNU/Linux и симулятор радиоуправляемого вертолета
Есть у меня одно очень давнее увлечение - радиоуправляемые вертолеты. С некоторых пор увлечение из области мечтаний перешло в металл и пластик. Наломав некоторое количество дров, пришел к выводу, что нужно как-то тренироваться без ущерба для семейного бюджета, иначе увлечение превратится в бездонную бочку, пожирающую финансы с огромной скоростью. Нужен симулятор.
Пройдясь по просторам интернета, нашел только один достойный кандидат на установку. Это симулятор радиоуправляемых вертолетов «Heli-X». Симулятор написан на «Java», существует под «Windows», «MacOS X» и, конечно же, под «GNU/Linux». Он работает как под «x86-32», так и под «x86-64». Симулятор платный, но позволяет, с некоторыми ограничениями, пользоваться собой и бесплатно. Симулятор так же имеет и бесплатную версию с базовыми возможностями, которых вполне достаточно, чтобы потренироваться. После нескольких часов в данном симуляторе можно легко и непринужденно поднимать в воздух реальную модель. Научиться висеть точно получиться.
Симулятор «Heli-X» имеет множество площадок для тренировки, большое число моделей вертолетов. Позволяет добавлять в сцены различные элементы, такие как ящики, пилоны и шары. Имеет возможность записи полета, онлайновой игры. Имеет режим прогулки на трехмерных площадках. Так же есть несколько режимов тренировки: висение, удержание хвоста, воронка, авторотация, сбивание воздушных шариков (мое любимое), транспортировка груза, висение в клетке, собирание шаров в корзину, лассо, тренировка реакции, тренировка отказа хвоста и прочее. Каждая тренировка имеет массу опций. По моему скромному мнению, физика полета в симуляторе очень реалистичная. После получаса тренировки в симуляторе, я запускаю реальную модель и не чувствую дискомфорта в управлении. Руки делают все тоже, что они делали и в симуляторе.
Симулятор «Heli-X» не очень требователен к ресурсам компьютера. Пойдет даже на встроенном видео, если процессор достаточно мощный.
Установка предельно проста. Скачиваем соответствующий архив из раздела загрузки. Распаковываем архив, куда нам удобно. Можно удалить каталог «Java» - он не используется. Делаем все файлы «.sh» исполняемыми.
# wget http://www.heli-x.info/41/HELI-X41.zip
# unzip HELI-X41.zip
# cd ./HELI-X41
# rm -rf ./Java
# chmod 755 *.sh
Как я уже говорил, симулятор использует виртуальную java-машину. Я перепробовал несколько виртуальных java-машин, доступных в используемых мной дистрибутивах «GNU/Linux». Наибольшую производительность удалось получить с помощью пакета «dev-java/sun-jre-bin» для «Gentoo». В «Ubuntu» пакет «sun-java6-jre» можно установить из отдельного репозитория «ppa:flexiondotorg/java».
Далее устраним проблемы со звуком в симуляторе. В «Gentoo» должен быть установлен пакет «media-libs/openal», в «Ubuntu» - «libopenal1». Переходим в каталог «./libs/joal/linux-i586» - для «x86-32», и «./libs/joal/linux-amd64» - для «x86-64», и удаляем файл «libopenal.so».
# rm ./libs/joal/*/libopenal.so
Вместо файла «libopenal.so» делаем символическую ссылку на файл из системы.
Для «Gentoo x86-32» выполняем:
# ln -s /usr/lib/libopenal.so.1 ./libs/joal/linux-i586/libopenal.so
Для «Gentoo x86-64»:
# ln -s /usr/lib/libopenal.so.1 ./libs/joal/linux-amd64/libopenal.so
Для «Ubuntu x86-32»:
# ln -s /usr/lib/i386-linux-gnu/libopenal.so.1 ./libs/joal/linux-i586/libopenal.so
Для «Ubuntu x86-64»:
# ln -s /usr/lib/x86_64-linux-gnu/libopenal.so.1 ./libs/joal/linux-amd64/libopenal.so
Симулятор запускается командой: для «x86-32» - «runHELI-X.sh», для «x86-64» - «runHELI-X64.sh».
Теперь самое время подключить аппаратуру к компьютеру. Самый простой способ - приобрести любой USB-кабель для симулятора «FMS», например такой «USB Simulator Cable All in One».
А можно попробовать подключить передатчик через микрофонный вход, спаяв простейший кабель и установив соответствующее программное обеспечение. Про это и расскажу подробнее.
Сигнал «PPM» будем забирать с тренерского разъема передатчика и подавать на вход микрофона звуковой карты. Спаяем кабель из подручных средств. Схема кабеля такова:
Подключаем кабелем передатчик к компьютеру, включаем передатчик и пробуем послушать поступающий сигнал. Для этого в программе «alsamixer» включим на воспроизведение канал «Mic», а на запись канал «Capture». При этом будет слышен среднечастотный шум. Если пошевелить стики на передатчике, то тональность шума будет меняться. Переходим к установке программного обеспечения.
Мне удалось найти программу «TXPPM», преобразующую сигнал «PPM», поступающий с передатчика на линейный вход звуковой карты, в системный джойстик. У меня шестиканальный передатчик, так что в системе получился шестиосевой джойстик.
Я расскажу про установку «TXPPM» в «Gentoo GNU/Linux». Для других дистрибутивов есть соответствующие пакеты на главной странице проекта.
Я сделал новые ебилды «games-simulation/txppm» и «games-simulation/txppm-modules» и поместил их в свой оверлей. Подключите оверлей и выполните установку пакетов.
# emerge txppm
Пакет «games-simulation/txppm» имеет use-флаг «gtk». Без использования этого флага будет собрана консольная утилита «ppm2tx», с использованием - графическая утилита «ppm2tx» с простейшим интерфейсом:
Теперь все это пробуем запустить. При установке пакета «games-simulation/txppm-modules» будет создан модуль ядра «tx». Подгружаем модуль:
# modprobe tx
При этом в системе будут созданы два устройства: «/dev/input/jsX» и «/dev/tx». При этом устройство «/dev/tx» должно быть доступно пользователю на запись. За это отвечает правило в файле «/etc/udev/rules.d/100-txppm.rules»
Запускаем утилиту «ppm2tx» в сеансе пользователя. Если это консольная утилита, то она имеет два аргумента. Первый - номер звукового устройства, второй - использование микширования каналов.
Запустим утилиту без аргументов и увидим список доступных звуковых устройств для первого аргумента. Второй аргумент может быть трех значений:
0 - без микширования
1 - использовать CCPM-микширование
2 - использовать CCPM-микширование для передатчиков «Spektrum»
Если «ppm2tx» - графическая утилита, то выбор звукового устройства и тип микширования можно выполнить непосредственно в ней, после чего нажать кнопку «Start».
После запуска утилиты «ppm2tx», можно посмотреть в системе работу джойстика. Не забудьте выполнить его калибровку с помощью «jscal».
Все, теперь вертолетом в симуляторе можно управлять.
Пока что симулятор «Heli-X» не имеет русификации, но я над этим работаю. Как только закончу - обязательно все выложу.
Ну и в заключении хотелось бы обратить внимание сообщества на полное отсутствие свободных симуляторов радиоуправляемых вертолетов под «GNU/Linux». Первые попытки делают в этом направлении авторы свободного самолетного симулятора «CRRCSIM», но пока им далеко до финала. А с возросшей доступностью недорогих радиоуправляемых вертолетов, такой симулятор имел бы очень много поклонников и разработчиков.