roboforum.ru

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

Использование Navigator Tool Kit

Re: Использование Navigator Tool Kit

EDV » 22 ноя 2010, 19:14

Код: Выделить всёРазвернуть
OpenCV GUI Error Handler
---------------------------
Sizes of input arguments do not match (Size of input data do not match to actual settings)
in function CvAssociativeMemory::ReadPackedData, d:\edv\3dvision.prj\avm_prj_rcgmxclst\src\recognitionlib_ver0.5\AssociativeMemory.h(2614)

Press "Abort" to terminate application.
Press "Retry" to debug (if the app is running under debugger).
Press "Ignore" to continue (this is not safe).


Похоже, скомпилировали вот эти исходники (http://edv-detail.narod.ru/Navigator_src.zip)?

Если да, то тогда нужно удалить в папке вашего пользователя файл «avm.dat».

На моём компьютере этот файл, к примеру, вот здесь находится: «D:\Documents and Settings\EDV\AVM\avm.dat».

Версия старая, так что сбои случаются. Я сейчас на AVM Navigator переключился, можете его с RoboRealm попробовать скачать (попользоваться 30 дней бесплатно).

Re: Использование Navigator Tool Kit

EDV » 18 фев 2011, 23:47

Здравствуйте, я пытаюсь повторить то, что описано в данной статье
Столкнулся с проблемой в wxWidgets, а именно с отсутствием некоторый статических библиотек.
Если описывать проблему более конкретно, то я модифицировал исходники кода программы RobotControler, но для ее сборки необходима wxWidgets, и ее библиотеки. После скачивания wxWidgets я попытался билдить необходимые библиотеки. В общем у меня не получилась только одна папка VC_LIB\MSW, вот вопрос: как ее правильно пробилдить и подключить к MSVS?

Папка VC_LIB\MSW не появилась, потому что не все компоненты библиотеки wxWidgets были скомпилированы.

Вначале открываем .\wxWidgets\build\msw\wx.dsw и выбираем в Visual Studio -> Build\Batch Build... и в появившемся диалоговом окне выбираем все компоненты списка, затем жмём Rebuild All. Тоже самое проделываем с проектом .\wxWidgets\build\msw\wx_dll.dsw

Re: Использование Navigator Tool Kit

1ALEKS1 » 17 апр 2011, 01:59

Доброе время суток, я тоже решил попробывать повторить ваш проект но уже столкнулся со трудностями, купил танчик такойже как и на примере Модель: "Huan QI NO.516-10", собрал плату, и накоонецто решил проверить будет ли он регирывать на нажатые клавиши вперёд назад и так далие, запустил програму RobotController, начил подовать сигналы вперед назад, а он вообще не реагирует,я сначало подумал что не правильно плату собрал, но потом оказалась проблема не в плате, проверил осциллографом импульсы которые выдает компорт, и те которые танчик они оказались разные :), полчается с компорты выходит сначала: пауза, потом десять импульсов и так далие, а у меня на танчике наоборот сначало шесть импулсов потом пауза и так дальше, неподскажете где в програме RobotController прописуються импулсы, я имиею ввиду 5 ms 4.7 ms, зарание спасиба за ответ.

Re: Использование Navigator Tool Kit

1ALEKS1 » 17 апр 2011, 23:02

Доброе время суток, я тоже решил попробывать повторить ваш проект но уже столкнулся со трудностями, купил танчик такой же как и на примере Модели "Huan QI NO.516-10", собрал плату, и накоонец-то решил проверить будет ли он реагировать на нажатые клавиши вперёд-назад и так далее, запустил программу RobotController, начал подавать сигналы вперед-назад, а он вообще не реагирует.Я сначало подумал, что не правильно плату собрал, но потом оказалась, что проблема не в плате, проверил осциллографом импульсы которые выдает компорт, и те которые на танчике, они оказались разные :). Полчается с компорта выходит сначала-пауза, потом десять импульсов и т.д., а у меня на танчике наоборот сначало шесть импульсов, потом пауза и т.д. Не подскажете, где в программе RobotController прописуются импульсы (я имиею ввиду 5 ms 4.7 ms).
Зарание спасиба за ответ.

Re: Использование Navigator Tool Kit

1ALEKS1 » 17 апр 2011, 23:10

Доброе время суток, я тоже решил попробывать повторить ваш проект но уже столкнулся со трудностями, купил танчик такой же как и на примере Модели "Huan QI NO.516-10", собрал плату, и накоонец-то решил проверить будет ли он реагировать на нажатые клавиши вперёд-назад и так далее, запустил программу RobotController, начал подавать сигналы вперед-назад, а он вообще не реагирует.Я сначало подумал, что не правильно плату собрал, но потом оказалась, что проблема не в плате, проверил осциллографом импульсы которые выдает компорт, и те которые на танчике, они оказались разные :). Полчается с компорта выходит сначала-пауза, потом десять импульсов и т.д., а у меня на танчике наоборот сначало шесть импульсов, потом пауза и т.д. Не подскажете, где в программе RobotController прописуются импульсы (я имиею ввиду 5 ms 4.7 ms).
Зарание спасиба за ответ.

Re: Использование Navigator Tool Kit

EDV » 18 апр 2011, 00:33

Я тоже решил попробывать повторить ваш проект но уже столкнулся со трудностями, купил танчик такой же как и на примере Модели "Huan QI NO.516-10", собрал плату, и накоонец-то решил проверить будет ли он реагировать на нажатые клавиши вперёд-назад и так далее, запустил программу RobotController, начал подавать сигналы вперед-назад, а он вообще не реагирует.Я сначало подумал, что не правильно плату собрал, но потом оказалась, что проблема не в плате, проверил осциллографом импульсы которые выдает компорт, и те которые на танчике, они оказались разные . Полчается с компорта выходит сначала-пауза, потом десять импульсов и т.д., а у меня на танчике наоборот сначало шесть импульсов, потом пауза и т.д. Не подскажете, где в программе RobotController прописуются импульсы (я имиею ввиду 5 ms 4.7 ms).

Расставил побольше комментариев в тексте подпрограммы формирования импульсов COM порта, думаю теперь будет понятнее:

Код: Выделить всёРазвернуть
// Поток передачи команд роботу
void CmdTransmitting(void*)
{
   timeBeginPeriod(1);

   // Делитель счётчика времени
   LARGE_INTEGER Count;
   LARGE_INTEGER Frequency;
   QueryPerformanceFrequency (&Frequency);
   __int64 Tf = Frequency.QuadPart/1000000;

   hCOMPort = CreateFile(_T("\\\\.\\COM1"),GENERIC_READ | GENERIC_WRITE, 0,
                              NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
   // Устанавливаем сигнал COM порта DTR=0
   EscapeCommFunction(hCOMPort, CLRDTR);

   for(;;) {

      if(!memchr(&gCmdArray, TRUE, sizeof(TCmdArray))) { Sleep(1); continue; }

      for(int i=0; i<cCmdLoop; i++) {

         #define csTime 670  // Время короткого импульса (670 mks ~= 0.7 ms)
         #define cbTime 1990 // Время длинного импульса (1990 mks ~= 2.0 ms)

         // Формируем пачку импульсов команды
         for(int j=0; j<cCmdTotal+1; j++) {
            // Запоминаем время начала формирования сигнала
            QueryPerformanceCounter(&Count);

            // Читаем кодовую последовательность импульсов из массива
            BOOL s = (!j)?TRUE:gCmdArray.Cmd[j-1];

            // Устанавливаем сигнал COM порта DTR=1 (начало импульса)
            EscapeCommFunction(hCOMPort, SETDTR);
            
            // Держим паузу 2.0 ms для единицы, и 0.7 ms для нуля
            if(s && j < cCmdTotal) { Sleep(1); }
            
            if(j) { Pause((s)?cbTime:csTime, Tf, Count.QuadPart); }

            // Запоминаем время начала формирования сигнала
            QueryPerformanceCounter(&Count);
            // Устанавливаем сигнал COM порта DTR=0 (конец импульса)
            EscapeCommFunction(hCOMPort, CLRDTR);

            // Держим паузу 0.7 ms для единицы, и 2.0 ms для нуля
            if(!s && j < cCmdTotal) { Sleep(1); }

            Pause((s)?csTime:cbTime, Tf, Count.QuadPart);
         }

         // Пауза (4.3 ms) перед повторной выдачей пачки импульсов
         QueryPerformanceCounter(&Count);
         EscapeCommFunction(hCOMPort, SETDTR);
         Sleep(4);

         if(memchr(&gCmdArray, TRUE, sizeof(TCmdArray))) { i=0; }

         Pause(4300, Tf, Count.QuadPart);
      }
      // Устанавливаем сигнал COM порта DTR=0
      EscapeCommFunction(hCOMPort, CLRDTR);
   }
}


Для снятия временных диаграмм использовал вместо осциллографа звуковой вход и программу звукового редактора “Cool edit“. Что бы приёмник радиоуправляемой модели «купился» на имитацию, которую генерирует программа – сигналы должны быть схожи. Я для подгонки записывал в начале оригинальные осциллограммы с помощью “Cool edit“, затем записывал имитацию, полученную программой, а затем в режиме “multi track” ставил одну диаграмму под другой и сравнивал их. Когда было уже более или менее схоже, приёмник модели начал воспринимать имитируемые команды.


cron
Rambler\'s Top100 Mail.ru counter