roboforum.ru

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

Как из дешевого китайского танчика сделать робоплатформу

Re: Как из дешевого китайского танчика сделать робоплатформу

blindman » 29 апр 2009, 12:02

если все прочее под Linux собирается - лучше wxWidgets, и желательно поновее

Re: Как из дешевого китайского танчика сделать робоплатформу

=DeaD= » 29 апр 2009, 12:11

Я тоже за кроссплатформенность! :)

Re: Как из дешевого китайского танчика сделать робоплатформу

EDV » 29 апр 2009, 12:19

OpenCV – многоплатформенная, так что я тоже за wxWidgets, вот только не знаю, как здешним разработчикам, удобно компилировать будет? Дискомфорт не будет создавать? Эту библиотеку (wxWidgets) ведь придётся отдельно выкачивать, инсталлировать, компилировать, настраивать пути к заголовочным файлам и библиотекам.

А вот в MFC ничего такого делать не придётся, он входит в инсталляционный пакет самой среды Microsoft Visual Studio 6.0.

Re: Как из дешевого китайского танчика сделать робоплатформу

Duhas » 29 апр 2009, 12:33

я думаю те кому оно надо и не на такие "жертвы" пойдут :crazy:

Re: Как из дешевого китайского танчика сделать робоплатформу

blindman » 29 апр 2009, 12:42

На самом деле вопрос не в том,насколько удобно использовать wxWidgets, а в том, сможет ли автор предоставить свои закрытые библиотеки скомпилированные под Linux

Re: Как из дешевого китайского танчика сделать робоплатформу

EDV » 29 апр 2009, 13:37

Хороший вопрос :)
Пока что AVM SDK есть только под Windows, но потенциально исходники можно скомпилировать и под Linux (потому что они завязаны только на OpenCV).
Последний раз редактировалось blindman 29 апр 2009, 13:41, всего редактировалось 1 раз.
Причина: Излишнее цитирование!

Re: Как из дешевого китайского танчика сделать робоплатформу

=DeaD= » 29 апр 2009, 14:06

blindman писал(а):На самом деле вопрос не в том,насколько удобно использовать wxWidgets, а в том, сможет ли автор предоставить свои закрытые библиотеки скомпилированные под Linux

Это не главный вопрос, как мне кажется, даже если не сможет - можно будет написать потом другой модуль под линукс, который этим же функционалом обладает, именно по этому я и прошу сделать унифицированный интерфейс не привязанный к этой библиотеке, а то завтра EDV выйдет из игры и перестанет поддерживать библиотеку, а всем остальным после этого только с нуля всё начинать.

Re: Как из дешевого китайского танчика сделать робоплатформу

EDV » 12 май 2009, 08:52

Я начал разработку программы «Навигатор» и у меня готовы первые результаты.

Кто сказал, что управлять «зрячим» роботом очень сложно?

Посмотрите, на что способен мизерный кусочек кода (алгоритм управления роботом) плюс технология AVM.

Код: Выделить всёРазвернуть
if(gpCmdArray) {
   bool MvFrw = gpCmdArray->Cmd[cmFORWARD];
   bool MvBkw = gpCmdArray->Cmd[cmBACKWARDS];
   bool MvLft = gpCmdArray->Cmd[cmLEFT];
   bool MvRht = gpCmdArray->Cmd[cmRIGHT];
   bool TrLft = gpCmdArray->Cmd[cmTURRET_LEFT];
   bool TrRht = gpCmdArray->Cmd[cmTURRET_RIGHT];
   memset(gpCmdArray, 0, sizeof(TCmdArray));

   if(d.ObjTotal) {
      double ScrBase = MIN(apImage->width, apImage->height);
      double ObjBase = MAX(d.ObjRect->width, d.ObjRect->height);
      double ObjZoom = ObjBaseScrBase;
      
      int cXs = apImage->width>>1;
      int cXo = d.ObjRect->x + (d.ObjRect->width>>1);
      int cXd = cXs - cXo;

      if(ObjZoom > 0.6  || (ObjZoom > 0.57 && MvBkw)) { gpCmdArray->Cmd[cmBACKWARDS] = true; }
      if(ObjZoom < 0.30 || (ObjZoom < 0.33 && MvFrw)) { gpCmdArray->Cmd[cmFORWARD]   = true; }

      if(cXd >  40) {
         if(!MvLft && gNvg.TurretBalance > 0) { gpCmdArray->Cmd[cmLEFT] = true; }
         if(!TrLft) {
            gpCmdArray->Cmd[cmTURRET_LEFT] = true;
            gNvg.TurretBalance++;
         }
      }

      if(cXd < -40) {
         if(!MvRht && gNvg.TurretBalance < 0) { gpCmdArray->Cmd[cmRIGHT] = true; }
         if(!TrRht) {
            gpCmdArray->Cmd[cmTURRET_RIGHT] = true;
            gNvg.TurretBalance--;
         }
      }
   } else {
      // Выравнивание башни
      if(gNvg.TurretBalance) {
         if(gNvg.TurretBalance > 0) {
            gpCmdArray->Cmd[cmTURRET_RIGHT] = true;
            gNvg.TurretBalance--;
         } else {
            gpCmdArray->Cmd[cmTURRET_LEFT] = true;
            gNvg.TurretBalance++;
         }
      }
   }
}


В двух словах, алгоритм управления пытается выровнять положение башни и корпуса робота на центр самого первого распознанного объекта в списке трекинга и если объект находится далеко, то приблизится, а если слишком близко, то откатится назад.

Я добавил два видеоролика, демонстрирующих процесс навигации:

http://rapidshare.de/files/47125315/Navigate1.avi.html
http://rapidshare.de/files/47125331/Navigate2.avi.html

Экран разделён на две части, слева то, что видит робот, а справа запечатлен общий план. В левом нижнем углу, расположен индикатор команд, которые выдаёт алгоритм управления. Расположение индикаторов соответствую расположению кнопок в диалоговом окне драйвера управления роботом.

Изображение

В ближайшее время я планирую подготовить и опубликовать на «Робофоруме» исходные тексты программы «Recognition.exe», в которой будет реализован режим навигации робота.

Re: Как из дешевого китайского танчика сделать робоплатформу

=DeaD= » 12 май 2009, 09:03

Может хотя-бы на RuTube\YouTube? А то порнобаннеры смотреть перед роботами как-то стрёмно по минуте.

Re: Как из дешевого китайского танчика сделать робоплатформу

EDV » 12 май 2009, 09:07

Сейчас попробую залить…

Re: Как из дешевого китайского танчика сделать робоплатформу

Snable » 12 май 2009, 09:25

Определенно круто) Вот это уже серьезные вещи) :good:

Re: Как из дешевого китайского танчика сделать робоплатформу

EDV » 12 май 2009, 10:18

Записал видео на YouTube:


Re: Как из дешевого китайского танчика сделать робоплатформу

=DeaD= » 12 май 2009, 10:41

Прикольно :) хотя с точки зрения использования этого на практике - не ясно зачем :)

Нет планов естественные маяки попробовать? Могу помочь с математикой под них, если нужно.

Re: Как из дешевого китайского танчика сделать робоплатформу

EdGull » 12 май 2009, 11:16

зато я знаю как на практике применить...

Re: Как из дешевого китайского танчика сделать робоплатформу

EDV » 12 май 2009, 11:26

Основная цель этого эксперимента – выяснить, способна ли AVM управлять роботом (по скорости, по помехам типа размазывание изображения при движении). И похоже, что у AVM получается управлять роботом. Так что теперь, можно попробовать усложнить задачу навигации. Я постараюсь подготовить и опубликовать исходные тексты программы «навигатора», что бы все желающие имели возможность поучаствовать в разработке алгоритмов навигации. Для управления роботом «навигатор» будет использовать драйвер управления, так что если у кого то робплатформа будет отличатся от используемой мною, то им будет достаточно модифицировать программу драйвера под свой робот без изменений в программе «навигатора».


Rambler\'s Top100 Mail.ru counter