roboforum.ru

Технический форум по робототехнике.

KINECT

Re: KINECT

lorry » 17 мар 2014, 15:13

Это уже писалось, но повторюсь здесь еще раз.
Настраиваем Visual Studio C++ под работу с сенсором.
Загружаем Visual Studio 2012, создаем новый проект в C++, затем консольное приложение win32, нажимаем "Далее", ставим галочку "Пустой проект", затем "Готово". Теперь нужно прописать пути для библиотек KINECT. В свойствах проекта выбираем "Каталоги VC++". В "каталоги включения" добавляем путь "$(KINECTSDK10_DIR)\inc" и "$(FTSDK_DIR)inc" В "каталоги библиотек" нужно добавить путь "$(KINECTSDK10_DIR)\lib\x86"

Для того, чтобы визуализировать полученные от сенсора данные будем использовать библиотеку OpenCV. Для этого необходимо:

1. скачать библиотеку на оф.сайте OpenCV, последняя версия на сегодня 2.4.8, ссылка - http://opencv.org/

2. распаковать библиотеку в корень диска C:\

3. настроить переменные окружения вашего компьютера
Переменные среды:
а) Windows 7 – Пуск(Start Menu), правой кнопкой на Мой Компьютер (Computer) -> Свойства
(Properties) -> Дополнительные параметры системы (Advanced system settings) -> Переменные среды (Environment Variables) -> Системные переменные
б) Создать новую системную переменную. Имя переменной: "OPENCV_DIR". Значение переменной "c:\opencv"
в) Создать ещё одну переменную. Имя: "OPENCV_VER". Значение переменной: версия OpenCV, если версия 2.4.8, то значение "248"
г) Найти переменную path -> и в неё добавить:
для x86: %OPENCV_DIR%\build\x86\vc11\bin
для x64: %OPENCV_DIR%\build\x64\vc11\bin

Перезагрузить ПК.
При обновлении OpenCV необходимо менять значение переменной "OPENCV_VER"

4. прописать пути к библиотеке в вашем проекте C++
В Visual Studio 2012 в свойствах проекта.
Каталоги VC++ -> Добавить в:

Каталоги включения:
$(OPENCV_DIR)\build\include
$(OPENCV_DIR)\build\include\opencv
$(OPENCV_DIR)\build\include\opencv2

Каталоги библиотек:
$(WindowsSdkDir)lib
для x86: $(OPENCV_DIR)\build\x86\vc11\lib
для x64: $(OPENCV_DIR)\build\x64\vc11\lib

Каталоги исходного кода:
$(OPENCV_DIR)\modules\core\src
$(OPENCV_DIR)\modules\imgproc\src
$(OPENCV_DIR)\modules\highgui\src
Безымянный.jpg

Компоновщик -> Ввод -> Добавить в:

Дополнительные зависимости:

Для Debug:
Kinect10.lib
opencv_core$(OPENCV_VER)d.lib
opencv_imgproc$(OPENCV_VER)d.lib
opencv_highgui$(OPENCV_VER)d.lib
opencv_ml$(OPENCV_VER)d.lib
opencv_video$(OPENCV_VER)d.lib
opencv_features2d$(OPENCV_VER)d.lib
opencv_calib3d$(OPENCV_VER)d.lib
opencv_objdetect$(OPENCV_VER)d.lib
opencv_contrib$(OPENCV_VER)d.lib
opencv_legacy$(OPENCV_VER)d.lib
opencv_flann$(OPENCV_VER)d.lib

Для Release:
opencv_calib3d$(OPENCV_VER).lib
opencv_contrib$(OPENCV_VER).lib
opencv_core$(OPENCV_VER).lib
opencv_features2d$(OPENCV_VER).lib
opencv_flann$(OPENCV_VER).lib
opencv_gpu$(OPENCV_VER).lib
opencv_haartraining_engine.lib
opencv_highgui$(OPENCV_VER).lib
opencv_imgproc$(OPENCV_VER).lib
opencv_legacy$(OPENCV_VER).lib
opencv_ml$(OPENCV_VER).lib
opencv_nonfree$(OPENCV_VER).lib
opencv_objdetect$(OPENCV_VER).lib
opencv_photo$(OPENCV_VER).lib
opencv_stitching$(OPENCV_VER).lib
opencv_superres$(OPENCV_VER).lib
opencv_ts$(OPENCV_VER).lib
opencv_video$(OPENCV_VER).lib
opencv_videostab$(OPENCV_VER).lib
Безымянный.jpg


C++ -> Предварительно откомпеированные заголовки -> Предварительно откомпелированный заголовок - изменить значение на "Не использовать предварительно скомпелированные заголовки"
Безымянный.jpg


Итак, мы подключили сенсор KINECT к компьютеру через USB порт, установили KinectSDK, настроили переменные среды Windows, настроили среду программирования Visual Studio 2012 для работы с сенсором и работы с OpenCV. На экране вашего компьютера должна быть открыта Visual Studio с созданным вами консольным приложением win32. Вы можете сохранить этот проект, и использовать его в дальнейшем как заготовку для написания своего приложения.
Наконец, мы дошли до создания программного кода.
Но об этом далее.
Если я что то не понятно описал, или у вас что то не получается, спрашивайте, попробуем разобраться вместе.
Последний раз редактировалось lorry 16 сен 2014, 03:16, всего редактировалось 33 раз(а).

Re: KINECT

Scorpio » 17 мар 2014, 18:28

На всякий случай. Те у кого уже есть кинект для XBox 360, как у меня, тоже могут принять участие в эксперименте. Можно самостоятельно изготовить переходник. Я просто врезался в кинектовский кабель. Скачал драйвера, сенсор установился, как и у автора темы. Работают также тестовые утилиты, за исключением Kinect Strudio (не коннектится).

Re: KINECT

lorry » 18 мар 2014, 15:25

Scorpio писал(а):Работают также тестовые утилиты, за исключением Kinect Strudio (не коннектится).

Чтобы заработала Kinect Strudio необходимо загрузить какой нибудь работающий проект, через него Kinect Strudio подключится и вы сможете увидеть визуальное построение 3D сцены сенсором.

Re: KINECT

Scorpio » 20 мар 2014, 18:20

Ага, заработало. Правда я пока не понял, зачем эта студио. Т.о. можно сделать вывод, что Kinect XBox 360 может быть использован вместо Kinect for Windows за исключением режима приближения ("NEAR MODE"). Последний действительно не работает, что не есть хорошо. Однако, начиная с метра все функционирует. Также можно одеть на кинект специальные приближающие линзы. Кстати, на моем кинекте этикетка точно такая-же, как и на фото Kinect for Windows. Не понятно, как их различать.
На Visual Studio 2010, если кто к нему привык, все проекты из примеров тоже работают.

Re: KINECT

lorry » 20 мар 2014, 23:08

Scorpio писал(а):Ага, заработало. Правда я пока не понял, зачем эта студио.

Kinect Studio нужен, в первую очередь, для отладки вашего проекта. К примеру, вам нужно "отрепетировать" реакцию создаваемой вами программы на какое либо движение человека (в официальной документации пишется "игрока", я думаю, в дальнейшем, для соблюдения совместимости терминологии, также будем употреблять слово "игрок" вместо "человек"). Взмах руки, или прыжок или вообще любое другое перемещение игрока в поле видимости сенсора - реакции на это движение можно "обучить" вашу программу, соответственно вам придется просить кого-то чтобы этот кто то периодически повторял одни и те же движения перед сенсором, пока вы не отладите программу. Это утомительно, а тем более, если рядом нет никого то практически невозможно. Помочь в этом призвана Kinect Studio, в ней есть режим записи и последующего многократного воспроизведения записанного, также можно сохранить запись для последующего применения. Вы один раз записываете нужную вам последовательность движений, а затем просто, гоняя эту запись по кругу оттачиваете программу под ее реакцию на жесты.
Scorpio писал(а):Т.о. можно сделать вывод, что Kinect XBox 360 может быть использован вместо Kinect for Windows за исключением режима приближения ("NEAR MODE"). Последний действительно не работает, что не есть хорошо... Кстати, на моем кинекте этикетка точно такая-же, как и на фото Kinect for Windows. Не понятно, как их различать.

Если честно, то, режим "NEAR MODE" в Kinect for Windows я тоже так и не смог включить, сколько не бился, перерыл весь интернет, всю официальную документацию по сенсору на сайте Microsoft, все делал как там написано, режим не работает, и программа ошибок не выдает, никаких. Вроде код выполняется гладко, а режим не включается. Такое впечатление, что он не реализован или в коробке вместо кинекта под винду, лежит кинект под бокс.
Scorpio писал(а):Однако, начиная с метра все функционирует.

У меня работает с 80 см.
Scorpio писал(а):Также можно одеть на кинект специальные приближающие линзы.

Пробовали мы и линзы. Специально купили, вывод от их использования таков: хрень несусветная. Расстояние они конечно сокращают, примерно на 25-30см., но при этом фигура игрока практически не детектируется, сенсор видит ее только когда игрок находится в центре сцены, шаг влево, шаг вправо - игрок потерян. А когда картинку с сенсора визуализировали, сразу стало понятно в чем дело, все пространство видимости сузилось до совсем небольшой окружности, так что сцена хоть и приблизилась, но при этом сузилась до не допустимых размеров. По этой причине от очков для Kinect пришлось отказаться.
Scorpio писал(а):На Visual Studio 2010, если кто к нему привык, все проекты из примеров тоже работают.

Visual Studio 2010 можно использовать тоже, дело личное.
Последний раз редактировалось lorry 21 мар 2014, 02:42, всего редактировалось 2 раз(а).

Re: KINECT

Scorpio » 21 мар 2014, 00:28

lori писал(а):Kinect Studio нужна, в первую очередь, для отладки вашего проекта.

Да, действительно удобно. Этакий эмулятор кинекта.
Кинекты у нас похоже одинаковые, судя по наклейкам. А линзы действительно отстой, хотя стоят прилично.

Re: KINECT

Vorral » 21 мар 2014, 16:54

lori писал(а):
Scorpio писал(а):Однако, начиная с метра все функционирует.

У меня работает с 80 см.

Это одно из главных отличий Кинекта для винды и для приставки.
Кинект вышел уже очень давно. Я им начал интересовался когда он ещё назывался Project Natal.

Я к тому, что это очень показательно. Вроде этот ресурс самый известный в рунете. Но тут до сих пор предпочитают изучать ИК или ультразвуковые дальномеры и вопросы их самостоятельного изготовления. Пауков из скрепок и прочий детский сад. Не хотелось бы никого обидеть, но на мой взгляд тут нужны толковые программисты. Ведь вся сложность лежит не в пределах механики и электроники, а в алгоритмах обработки полученных данных.
Изменить ситуацию смог бы лишь покупной набор, который включал бы в себя четыре вещи, кинект+неттоп+ардруино плюс главное. Это ПО, которое включало бы в себя управление, навигацию и планировщик событий с набором простых действий.
Вот на этом нужно было концентрироваться Dead'у и компании. Но они как и большинство шли под лозунгом от простого к сложному. И что? Простое(микросхемы, тележки, моторы) уже делают везде.

В общем в первую очередь нужно учиться обрабатывать данные с кинекта. Иначе ждать Project Tango.

Re: KINECT

Scorpio » 21 мар 2014, 17:57

Программистов тут крутых хватает. Мне кажется, что дело в кризисе идей. Получить и обработиать данные с кинекта, думаю, многим тут под силу. Даже 3Д карту построить и гонять по ней тележку. Вопрос в том, куда на этой тележке ехать и зачем?

Re: KINECT

lorry » 22 мар 2014, 03:08

Мне думается еще дело в том, что не все и не всегда готовы поделиться своими наработками, и происходит это по разным причинам, кому то жалко время тратить на написание статей (а это действительно КУЧА времени), кто то просто писать не умеет, а кто то ни с кем делиться не хочет. Поэтому и получается, что никакого прогресса нет. Кто то, что то сделал и сидит как собака на сене, сам ни с кем делиться не хочет, а в ответ от "коллективного разума" идей не получает. Ведь все как происходит? Начинаешь публиковать, народ начинает реагировать, писать, отвечать. Во многих случаях, конечно, просто флудят, но ведь и массу толковых идей подают, а порой и в нужную сторону направляют. Посидишь, подумаешь, сделаешь корректировку в проекте в соответствии с новыми идеями, и снова это выложишь. А народ тебе на это новые соображения подкидывает и т.д. Вот так и появляются интересные и законченные проекты - благодаря общению и открытости. А иначе, как написал Vorral, так и будем роботов из скрепок собирать. Посмотрите на заграничных партнеров, какие проекты там делаются! А мы все на месте топчемся из за своей глупости и снобизма.
А еще проблема в вечной нехватке средств на приобретение модулей. Хорошие сенсоры, контроллеры, механизмы и т.п. и стоят хорошо, а дешевые не позволяют решать серьёзные задачи в силу своей ограниченной функциональности.
Последний раз редактировалось lorry 22 мар 2014, 10:25, всего редактировалось 1 раз.

Re: KINECT

dccharacter » 22 мар 2014, 06:42

Scorpio писал(а):Программистов тут крутых хватает. Мне кажется, что дело в кризисе идей. Получить и обработиать данные с кинекта, думаю, многим тут под силу. Даже 3Д карту построить и гонять по ней тележку. Вопрос в том, куда на этой тележке ехать и зачем?

согласен

Re: KINECT

Scorpio » 22 мар 2014, 09:06

lori писал(а): так и будем роботов из скрепок собирать.

А вот за скрепышей обидно. Это своего рода робоискусство.

Re: KINECT

lorry » 22 мар 2014, 10:19

:) ю
Последний раз редактировалось lorry 22 мар 2014, 10:46, всего редактировалось 4 раз(а).

Re: KINECT

Madf » 22 мар 2014, 10:33

lori писал(а):Мне думается еще дело в том, что не все и не всегда готовы поделиться своими наработками, и происходит это по разным причинам, кому то жалко время тратить на написание статей (а это действительно КУЧА времени), кто то просто писать не умеет, а кто то ни с кем делиться не хочет.

Список весьма не полный. Писать/выкладывать можно не хотеть ещё потому:

- приходят "умники" критиковать код (скромность);
- насилие над желаемым и действительным (появляется некто и начинает излагать свои "хотелки" и требовать их реализацию);
- да и просто отсутствие тактичности и благодарности за потраченное время и желание помочь.

Re: KINECT

lorry » 22 мар 2014, 10:45

Scorpio писал(а):А вот за скрепышей обидно. Это своего рода робоискусство.

Не хотел обидеть никого, простите.
Хотел сказать о нашей лени, снобизме, закрытости, закостенелости и т.д., и т.п., и т.о...., и не желании расти. Ведь, смотрите, кто то начинает публиковать свой проект, и что? Почитайте комментарии к нему. Такое порой понапишут! Диву даешься! Человек старается, трудится, хочет поделиться, не ради выгоды, а ради того, чтобы другие могли воспользоваться, а там ... :lol: :ROFL: :D :) :P :crazy: 8) , вместо :good: :beer: . Грустно как то порой становится :sorry: , и обидно за робото-строителей. Может я и не прав в чём то, но правда, ребята, неужели мы так уж слабы, что не можем делать крутых вещей! Да ведь можем!!! И не хуже чем евро-китае-американцы. Чуть больше Любви (с большой буквы), понимания и терпения.
Еще раз прошу прощения если обидел.
Scorpio, я знаю, где вы живете, не обижайтесь, но у нас в России., в плане построения робототехники, все немножко грустно :( К сожалению

Re: KINECT

Scorpio » 22 мар 2014, 21:58

Там, где я живу (Латинская Америка) в плане роботов гораздо грустнее, чем в России :)


Rambler\'s Top100 Mail.ru counter