Есть у меня одно очень дав­нее увле­че­ние - радио­управ­ля­е­мые вер­то­леты. С неко­то­рых пор увле­че­ние из обла­сти меч­та­ний пере­шло в металл и пла­стик. Нало­мав неко­то­рое коли­че­ство дров, при­шел к выводу, что нужно как-то тре­ни­ро­ваться без ущерба для семей­ного бюд­жета, иначе увле­че­ние пре­вра­тится в без­дон­ную бочку, пожи­ра­ю­щую финансы с огром­ной ско­ро­стью. Нужен симулятор.

Прой­дясь по про­сто­рам интер­нета, нашел только один достой­ный кан­ди­дат на уста­новку. Это симу­ля­тор радио­управ­ля­е­мых вер­то­ле­тов «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» будем заби­рать с тре­нер­ского разъ­ема пере­дат­чика и пода­вать на вход мик­ро­фона зву­ко­вой карты. Спа­яем кабель из под­руч­ных средств. Схема кабеля такова:
PPM Cable

Под­клю­чаем кабе­лем пере­дат­чик к ком­пью­теру, вклю­чаем пере­дат­чик и про­буем послу­шать посту­па­ю­щий сиг­нал. Для этого в про­грамме «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» с про­стей­шим интер­фей­сом:
TXPPM

Теперь все это про­буем запу­стить. При уста­новке пакета «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», но пока им далеко до финала. А с воз­рос­шей доступ­но­стью недо­ро­гих радио­управ­ля­е­мых вер­то­ле­тов, такой симу­ля­тор имел бы очень много поклон­ни­ков и разработчиков.