Как и мно­гие дру­гие гики, я все‑таки стал обла­дате­лем AR.Drone — пожалуй, наибо­лее популяр­ного квад­рокоп­тера, который мас­сово про­дает­ся по все­му миру в самых обыч­ных магази­нах и управля­ется со смар­тфо­на по Wi-Fi. Что из это­го выш­ло — читай в сегод­няшней колон­ке.
 

Просто летать скучно

Пос­ле при­обре­тения квад­рокоп­тера (дро­на) быс­тро при­ходит неожи­дан­ное понима­ние: прос­то летать на нем не так уж и инте­рес­но. В смыс­ле вна­чале, конеч­но, есть инте­рес, но лич­но у меня ско­рее спор­тивный — научить­ся с ним управлять­ся, чувс­тво­вать, как он лета­ет, понять его огра­ниче­ния и про­чее. Но к в общем‑то бес­смыс­ленным полетам с пер­вых минут хочет­ся добавить какого‑то содер­жания.

Пер­вое, что при­ходит на ум, — нацепить на дрон камеру вро­де GoPro и пос­нимать нор­маль­ную кар­тинку (а не то уны­лое сами‑зна­ете‑что, которое выда­ет встро­енная камера). Надо ска­зать, что AR.Drone не очень‑то для это­го пред­назна­чен (поэто­му если хочешь сни­мать, то луч­ше сра­зу смот­реть на какие‑то дру­гие модели). Нап­ример, я тут же упер­ся в те огра­ниче­ния по даль­нос­ти, которые соз­дает управле­ние по Wi-Fi с телефо­на. Что­бы это как‑то обой­ти, я стал брать с собой инвертер в машину и под­клю­чать к нему точ­ку дос­тупа с неп­лохими антенна­ми, замет­но уве­личи­вающи­ми рас­сто­яние, на котором мож­но управлять дро­ном, хотя мно­гие вооб­ще впа­ивают отдель­ный ради­омо­дуль, что­бы AR.Drone’ом мож­но было управлять с обыч­ного 8-каналь­ного пуль­та.

Де­лать съем­ку «с воз­духа» — это пря­мо кру­то, совер­шенно осо­бые впе­чат­ления, но надо­едает и это. Сегод­ня же я тебе хочу рас­ска­зать о сво­ей новой забаве, которую пред­лага­ет AR.Drone, — его прог­рамми­рова­нии.

 

AR.Drone изнутри

Что зна­чит «прог­рамми­ровать дрон»? Тут надо понимать, что AR.Drone — это, по сути, малень­кий компь­ютер, в котором зашита прог­рамма для управле­ния четырь­мя дви­гате­лями коп­тера. Если опи­сать кон­фиг крат­ко, это будет:

  • мо­дуль Wi-Fi, через который осу­щест­вля­ется управле­ние;
  • 1 ГГц CPU, 125 Mб Memory;
  • две камеры (одна впе­реди, одна вни­зу);
  • Linux (BusyBox);
  • ав­томати­чес­кое «зависа­ние» на задан­ной позиции (исполь­зует­ся аль­тиметр и опти­чес­кое сле­жение за положе­нием).

Со­ответс­твен­но, у него есть про­шив­ка, которая при­нима­ет коман­ды управле­ния по Wi-Fi, — и за счет это­го осу­щест­вля­ется управле­ние коп­тером. Понят­но, что если коман­ды мож­но передать с помощью при­ложе­ния для смар­тфо­на, то это мож­но сде­лать и дру­гими спо­соба­ми.

Уве­рен, что есть и дру­гие под­ходящие для прог­рамми­рова­ния коп­теры, но комь­юни­ти полюби­ли AR.Drone за неп­лохую начин­ку, адек­ватную цену и прос­тоту покуп­ки запас­ных час­тей по все­му миру.

 

Как управлять?

Дро­ном мож­но управлять AT-коман­дами, но это низ­кий уро­вень. Как это обыч­но быва­ет, для про­токо­ла быс­тро появ­ляют­ся обер­тки для раз­ных язы­ков прог­рамми­рова­ния — они в изо­билии пред­став­лены на GitHub. На наиболь­шее раз­витие получил фрей­мворк NodeCopter, написан­ный на Node.js.

Собс­твен­но, для прог­рамми­рова­ния дро­на надо уста­новить в сис­теме сам Node.js и модуль NodeCopter:

$ npm install ar-drone

Да­лее под­клю­чаем­ся, как обыч­но, к дро­ну по Wi-Fi, исполь­зуя стан­дар­тное при­ложе­ние FreeFlight, и мож­но прис­тупать к управле­нию коп­тером с ноут­бука.

Вот прос­той при­мер пря­мо с сай­та NodeCopter:

var arDrone = require('ar-drone');
var client = arDrone.createClient();
client.takeoff();
client
.after(5000, function() {
this.clockwise(0.5);
})
.after(3000, function() {
this.animate('flipLeft', 15);
})
.after(1000, function() {
this.stop();
this.land();
});

Сох­рани его в файл и выпол­ни — ты уви­дишь, как дрон взле­тает, вра­щает­ся по часовой стрел­ке, дела­ет, если батарея дос­таточ­но заряже­на, так называ­емые flip (перево­рачи­вание) и садит­ся. Сра­зу даю малень­кий хинт: если коп­тер дела­ет что‑то не так, то есть один надеж­ный спо­соб его оста­новить. Рез­ко пой­мать его и перевер­нуть — в этом слу­чае сра­баты­вает триг­гер внеш­татной ситу­ации, и он вык­люча­ется.

Пер­вое, что я хотел авто­мати­зиро­вать, — это взлет коп­тера и соз­дание панора­мы. Идея прос­тая: взле­теть, наб­рать нуж­ную высоту и совер­шить обо­рот 360 гра­дусов, делая сним­ки, которые поз­же мож­но скле­ить. Для это­го пот­ребова­лось лишь нем­ного изме­нить тот при­мер, который я при­вел выше, добавив в вызовы для соз­дания фотог­рафии (изоб­ражения я получал с помощью модуля ar-drone-png-stream). Как поз­же выяс­нилось, эта идея приш­ла не толь­ко мне, поэто­му есть даже готовый модуль, который называ­ется ardrone-panorama. И да, работа­ет он луч­ше моего :).

 

Что можно сделать?

Да­лее я рас­ска­жу, что еще мож­но сде­лать с помощью AR.Drone, исполь­зуя наработ­ки комь­юни­ти.

Во­обще, что­бы прог­рамми­ровать логику, тебе нуж­но обра­баты­вать изоб­ражение с камеры дро­на. Для это­го мож­но исполь­зовать либо ar-drone-png-stream, который я уже упо­мянул, либо node-dronestream (под­ходит для видео). Есть даже про­ект copterface, который рас­позна­ет лица, исполь­зуя биб­лиоте­ку node-opencv. Адап­тируя эту идею, мож­но сде­лать бес­пилот­ник, который будет летать над тол­пой и искать нуж­ных людей.

Осо­бое нап­равле­ние, которое популяр­но в комь­юни­ти, — раз­работ­ка раз­личных инс­тру­мен­тов для управле­ния дро­ном. Мож­но управлять из бра­узе­ра (drone-browser), жес­тами (ipad-ardrone-controller), джой­сти­ком от PlayStation 3 (node-drone-joystick) или даже Kinect’ом (drone-kinect). Ког­да ко мне при­едет мой Oculus Rift или Google Glass, я обя­затель­но сде­лаю управле­ние с помощью этих очков вир­туаль­ной реаль­нос­ти. Хотя навер­няка и такие про­екты уже есть.

Ме­ня же всег­да боль­ше тяготи­ла воз­можность сде­лать авто­ном­ную сис­тему, которая бы сама выпол­няла какую‑то задачу. К сожале­нию, я еще не купил себе спе­циаль­ный GPS-набор, с помощью которо­го AR.Drone может летать по задан­ным точ­кам и воз­вра­щать­ся к мес­ту стар­та, если потеря­ет связь с пуль­том. Но я уже успел поиг­рать­ся со спе­циаль­ным модулем ardrone-autonomy, спе­циаль­но пред­назна­чен­ным для прог­рамми­рова­ния авто­ном­ных полетов.

Ко­роче говоря, в AR.Drone’е я нашел клас­сную плат­форму для экспе­римен­тов. И если у тебя есть что тут рас­ска­зать, напиши мне :).

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии