roboforum.ru

Технический форум по робототехнике.
Текущее время: 17 фев 2025, 08:59

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 66 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: Использование Navigator Tool Kit
СообщениеДобавлено: 22 окт 2009, 09:41 
Не в сети
Аватара пользователя

Зарегистрирован: 06 июн 2007, 15:19
Сообщения: 1016
Откуда: Украина, Лисичанск
ФИО: Дмитрий Еремеев
=DeaD= писал(а):
Ну вот и первый успех с адаптацией навигатора под другое шасси, правда пока коряво ездит, но уже ездит.

А вот как демку записать я не понял - вроде должен класть файл в каталог с .dat-файлом, но там его нету :pardon:

Поэтому пока только фотка :)


Поздравляю! Вот только, хотелось бы видео поглядеть :)

Насчёт видео:
При записи демонстрационного ролика, видео кодируется кодеком "XviD". Если этот кодек у тебя не установлен, скачать пакет с кодаками можно здесь:

K-Lite Codec Pack Full 5.2.0

После активизации опции "Главное меню/Распознавание/Записать демонстрацию в AVI файл" приложение Recognition.exe стартует запись видео и отображает путь к файлу видео в окне «Информационное окно». Там будет напечатано приблизительно следующее: «Стартовал процесс записи демонстрации (файл: D:\Document and Settings\EDV\AVM\avm_demo.avi).», соответственно ролик нужно там и поискать.

Если что-то надумаете менять в записи демонстрационного ролика, тогда можно попробовать модифицировать метод «CMainWnd::OnWriteAVIdemo» (файл: Navigator\src\RecognitionApp\RecognitionApp.cpp):

Код:
// Обработчик "Запись демонстрационного фильма"
void CMainWnd::OnWriteAVIdemo(wxCommandEvent& event)
{
   wxString FileName = mDataDir + _T("avm_demo.avi");
   if(event.IsChecked() && gStopWriteDemo) {
      CvSize plImgSize = gpRcgPipeline->GetImgSize();
      CvSize ImgSize;
      ImgSize.width  = 320;
      ImgSize.height = (ImgSize.width*plImgSize.height)/plImgSize.width;
      
      wxRemoveFile(FileName);

      gOutAVI = cvCreateVideoWriter(FileName.ToAscii(), CV_FOURCC('x','v','i','d'), 25.0, ImgSize, 1 );
      if(!gOutAVI) {
         gOutAVI = cvCreateVideoWriter(FileName.ToAscii(), -1, 25.0, ImgSize, 1 );
      }
      gOutImg = cvCreateImage( ImgSize, 8, 3 );
      
      gpRcgPipeline->Comment(wxString::Format(_T("Resolution: %ux%u"),
                           plImgSize.width, plImgSize.height));
      gStopWriteDemo = false;
      wxLogMessage(wxString::Format(_MST("\nDemo writing process is started (file: %s)."),FileName));
   } else {
      gStopWriteDemo = true;
      m_Timer.Start(3000, true);
   }
}


Опять таки, если ролик по-прежнему не удаётся записать, тогда можно попробовать скомпилировать Recognition.exe с отладочной информацией, и по шагам поглядеть куда происходить (не происходит) запись ролика, постараться выяснить причину (потому как у меня ролики пишутся).


Если сразу нужно, что бы разрешение захвата было 320x240 (а не 640x480 как сейчас), тогда нужно модифицировать вот это место в программе (файл: Navigator\src\RecognitionApp\RecognitionApp.cpp):

Код:
// Инициализация захвата
wxSize CRecognitionPipeline::InitCapture(int aCamIdx, TCaptureSettings aCaptSet)
{
  ...
         static VidFormat vidFmt = { 640, 480, 30.0};
         // Установка настроек видео захвата по умолчанию
         cvcamSetProperty(mCamIdx, CVCAM_PROP_SETFORMAT, &vidFmt);
  ...
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование Navigator Tool Kit
СообщениеДобавлено: 22 окт 2009, 10:46 
Не в сети

Зарегистрирован: 11 сен 2008, 17:18
Сообщения: 873
Откуда: Москва
прог. языки: Delphi
ФИО: Владислав
=DeaD= писал(а):
Ну вот и первый успех с адаптацией навигатора под другое шасси, правда пока коряво ездит, но уже ездит.

А вот как демку записать я не понял - вроде должен класть файл в каталог с .dat-файлом, но там его нету :pardon:

Поэтому пока только фотка :)

Нужно же сделать деинтерлейс. На фотке содержится два кадра, в чётных строках кадр А в нечётных кадр Б. А вот в веб камерах прогрессивная развёртка.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование Navigator Tool Kit
СообщениеДобавлено: 22 окт 2009, 11:07 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Вечером попробую видео записать.

Деинтерлейс не понял - попробую найти где выключается, я его явно не включал :pardon:

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование Navigator Tool Kit
СообщениеДобавлено: 22 окт 2009, 21:12 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
А вот и видео:


Добавлено спустя 8 минут 21 секунду:
Для адаптации потребовалось выставить нужный СОМ-порт и скорость:
Код:
mhCOMPort = CP_OpenCOMPort(11, CBR_115200, ODDPARITY, 8, 1);


И заполнить функцию драйвера шасси:
Код:
void CMainWnd::OnTimer(wxTimerEvent& WXUNUSED(event))
{
   // Коды команд робота
   enum {
      cmLEFT = 0,     // Влево
      cmBACKWARDS,    // Назад
      cmFORWARD,      // Вперёд
      cmRIGHT,        // Вправо
      cmTURRET_RIGHT, // Башня вправо
      cmFIRE,         // Залп
      cmTURRET_LEFT,  // Башня влево
      cmPOWER         // Включить/выключить питание
   };

   char* cmd="\n";
   int cmdsize=1;

   cmdsize=25;
   cmd="S40 0D 01 05E4 11 05DC P\n";

   int dir=0;
   int acc=0;
   int tur=0;

   for(int i=0; i<cKeyTotal; i++) {
      if(gpKeyArray->Key[i]) {
         switch(i) {
            case cmFORWARD:

               acc=1;

               break;

            case cmLEFT:

               dir=-1;

               break;

            case cmRIGHT:

               dir=1;

               break;

            case cmBACKWARDS:

               acc=-1;

               break;

            case cmTURRET_LEFT:

               tur=-1;

               break;

            case cmTURRET_RIGHT:

               tur=1;

               break;

            case cmFIRE:

               break;

            case cmPOWER:

               break;
         }
      }
   }

   if(tur==1){
      cmdsize=25;
      cmd="S40 0D 01 05FF 11 05FF P\n";
   };

   if(tur==-1){
      cmdsize=25;
      cmd="S40 0D 01 05BF 11 05BF P\n";
   };

   if(acc==1){
      cmdsize=25;
      cmd="S40 0D 01 060F 11 05AC P\n";
      if(dir==-1) cmd="S40 0D 01 05DF 11 05BC P\n";
      if(dir==1) cmd="S40 0D 01 05FF 11 05DC P\n";
   };

   if(acc==-1){
      cmdsize=25;
      cmd="S40 0D 01 05AF 11 060C P\n";
      if(dir==-1) cmd="S40 0D 01 05DF 11 05FC P\n";
      if(dir==1) cmd="S40 0D 01 05BF 11 05DC P\n";
   };

   // Послать команду сервоконтроллеру в COM порт
   CP_WriteCOMPort(mhCOMPort, cmd, cmdsize);

   mpIndicator->SetKeyArray(gpKeyArray);
}

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование Navigator Tool Kit
СообщениеДобавлено: 22 окт 2009, 21:27 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
Вот не хочешь использовать готовую либу! :)

Добавлено спустя 33 секунды:
Магические строки пишешь.

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование Navigator Tool Kit
СообщениеДобавлено: 22 окт 2009, 21:47 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
"Magic people, voodoo people" :D

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование Navigator Tool Kit
СообщениеДобавлено: 23 окт 2009, 09:54 
Не в сети
Аватара пользователя

Зарегистрирован: 06 июн 2007, 15:19
Сообщения: 1016
Откуда: Украина, Лисичанск
ФИО: Дмитрий Еремеев
Плохо распознаёт :(
Я ещё вчера заметил, что у тебя в AVM выставлен ключевой размер 160x80 – это не очень хорошо для распознавания. Алгоритм AVM начинает искать образ начиная 75% от начального ключевого размера. Всё что меньше, найти не сможет. Нужно в начале (когда задаёшь ключевой размер для AVM) обучать на размер окна по умолчанию 80x80 (примерно как у меня в готовом файле с обученными данными Go.dat), а потом, следующие обучения можно и на других размерах делать, как показано в примере:



У меня то видал, как танчик гонял за мной по всем комнатам, как реактивный :) Его даже помехи с радиокамеры не сбивали с толку. А у тебя робот едва видит маркер, так что нужно переучить, или использовать мои обученные данные.

А вот что в твоей деме:


Вложения:
avm_info1.gif
avm_info1.gif [ 9.18 КиБ | Просмотров: 2879 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование Navigator Tool Kit
СообщениеДобавлено: 23 окт 2009, 10:14 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
А как можно этот размер ключевой менять? В настройках или просто окно захвата образа меньше рисовать?
При обучении образ желательно двигать или держать неподвижным?

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование Navigator Tool Kit
СообщениеДобавлено: 23 окт 2009, 10:29 
Не в сети
Аватара пользователя

Зарегистрирован: 06 июн 2007, 15:19
Сообщения: 1016
Откуда: Украина, Лисичанск
ФИО: Дмитрий Еремеев
>>А как можно этот размер ключевой менять?

Ключевой размер для AVM выставляется в начале работы с приложением Recognition.exe (когда сохранённых данных ещё нет) или по вызову пункта меню «Распознавание/Установить ключевой размер (создать)». Затем выбираем (визуально, двигая курсором) ключевой размер окна для AVM.

Желательно для начала размер окна не менять, а так и оставить его 80x80 (просто переместить его в нужную позицию для последующего обучения на первый объект).

>>При обучении образ желательно двигать или держать неподвижным?

Желательно, что бы в кадре было видно как можно больше объекта и как можно меньше фона (для AVM всё, что попало в кадр, всё и есть объект, и фон тоже).

Так как AVM неинвариантна к повороту, то в процессе обучения необходимо показать объект под разными углами (под которыми потенциально потом может видеть объект камера уже после обучения).

Если с первого раза не успели показать объект под всеми нужными углами, то можно повторно выбрать пункт «Изучить объект», после чего выбрать тот же самый объект из списка и продолжить обучение AVM на него.


Последний раз редактировалось EDV 23 окт 2009, 10:38, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование Navigator Tool Kit
СообщениеДобавлено: 23 окт 2009, 10:38 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Ок, понял, вечером устрою еще один пробный заезд.

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование Navigator Tool Kit
СообщениеДобавлено: 23 окт 2009, 11:42 
Не в сети
Аватара пользователя

Зарегистрирован: 06 июн 2007, 15:19
Сообщения: 1016
Откуда: Украина, Лисичанск
ФИО: Дмитрий Еремеев
Желательно, использовать входное изображение (с камеры) разрешением 320x240. На таком изображении можно получить максимальное быстродействие AVM.

Чтобы переключиться на 320x240, нужно выбрать пункт меню «Настройки\ Формат захвата изображения» или поменять в исходниках программы (файл: Navigator\src\RecognitionApp\RecognitionApp.cpp):

Код:
// Инициализация захвата
wxSize CRecognitionPipeline::InitCapture(int aCamIdx, TCaptureSettings aCaptSet)
{
  ...
         static VidFormat vidFmt = { 640, 480, 30.0};
         // Установка настроек видео захвата по умолчанию
         cvcamSetProperty(mCamIdx, CVCAM_PROP_SETFORMAT, &vidFmt);
  ...
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование Navigator Tool Kit
СообщениеДобавлено: 23 окт 2009, 11:54 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Ок, понял, переключу на 320х240.

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование Navigator Tool Kit
СообщениеДобавлено: 23 окт 2009, 19:56 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
На порядок лучше :Yahoo!: - сделал 320х240 разрешение и 80х80 размер образа:

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование Navigator Tool Kit
СообщениеДобавлено: 23 окт 2009, 20:35 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
А почему такая разница в работе аглоритма по разрешению экрана? На 320*240 можно сказать идеально работает...

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование Navigator Tool Kit
СообщениеДобавлено: 23 окт 2009, 20:38 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Неее, разница не из-за разрешения экрана, а из-за правильной настройки распознавалки - сделали ей окно 80х80 вместо 160х80 + обучил на большей дистанции, а то там ограничение по уменьшению масштаба при поиске и вроде всё ок.

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 66 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO