четверг, 18 октября 2012 г.

Собираем ArDrone SDK на OpenSuse 12.2

Уже скоро приедет долгожданный квадрокоптер ArDrone 2.0, и в преддверии этого события я решил посмотреть на официальный SDK для этой машинки. Наибольший интерес для меня вызывает его линуксовая часть.
Всё что касается линукса, и не только него, написано на старом добром Си с не менее старыми и добрыми мейкфайлами. Судя по приложенному гайду для разработчиков (Docs/ARDrone_Developer_Guide.pdf, если вдруг кто-то его не нашёл) разработчики SDK ориентируются на Ubuntu 10.04. С ним всё хорошо, чего я не могу сказать про свой OpenSuse.

Решение, впрочем, очень простое:
  1. Ставим дополнительные пакеты с зависимостями. А Именно: libsdl-devel, libiw-devel, libxml2-devel. Но не исключаю, что вам может понадобиться что-то ещё.

  2. Идём в файлик Examples/Linux/Navigation/Build/Makefile и ищем там строку начинающуюся с переменной GENERIC_LIBS  и дописываем в конец через пробел -lm. Таким образом мы добавляем библиотеку libm к списку библиотек линкера. Без этого маленького довеска билд не идёт, завершаясь сообщением:

    usr/lib64/gcc/x86_64-suse-linux/4.7/../../../../x86_64-suse-linux/bin/ld: /usr/lib64/gcc/x86_64-suse-linux/4.7/../../../../lib64/libiw.so: undefined reference to symbol 'floor@@GLIBC_2.2.5'
    /usr/lib64/gcc/x86_64-suse-linux/4.7/../../../../x86_64-suse-linux/bin/ld: note: 'floor@@GLIBC_2.2.5' is defined in DSO /lib64/libm.so.6 so try adding it to the linker command line
    /lib64/libm.so.6: could not read symbols: Invalid operation
    collect2: error: ld returned 1 exit status 

  3. После проделанных приготовлений переходим, как написано в инструкции, в Examples/Linux и зовём там make. Всё, что получилось, make складывает в Examples/Linux/Build/Release. У меня там: ardrone_navigation,  ardrone.xml,  common,  linux_sdk_demo, sym_ardrone_testing_tool, что вполне соответствует инструкции.

пятница, 12 октября 2012 г.

OpenCV4Android на MIPS архитектуре

Относительно недавно экосистему Android'a пополнили устройства на MIPS архитектуре. В месте с  появлением первых широко доступных устройств поддержка MIPS архитектуры появилась и в официальных NDK и SDK от Google. До этого инструменты для разработчика производитель развивал самостоятельно.
Но речь сейчас не об архитектуре так таковой, а о её поддержке в популярной библиотеке компьютерного зрения OpenCV. Сборка андроидной версии под MIPS была обеспечена ещё летом, но не было ни одного устройства на котором можно было бы "потрогать" полученный результат.
Недавно в руки попал девайс Novo 7 basic с SoC Ingenic JZ4770 на борту. С использованием открытого дерева Android для MIPS и системных библиотек, взятых с устройства, удалось построить плагин для нативной камеры. OpenCV чувствует себя на планшете вполне комфортно, тесты на core часть библиотеки проходят на ура. Примеры с Java камерой и нативной камерой в полном порядке. Кроме того, в OpenCV менеджер была добавлена экспериментальная поддержка этой архитектуры.
Судя по проделанной работе, официальную поддержку MIPS'a можно будет ожидать в будущих релизах библиотеки. Всем же, кому не терпится, могут попробовать библиотеку собрав её из публичного git репозитория.