roboforum.ru

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

Библиотека прогр. модулей + примеры проектов с их использов.

Вопросы не попавшие в другие категории.

Библиотека прогр. модулей + примеры проектов с их использов.

Сообщение =DeaD= » 15 дек 2007, 23:25

Вот что еще подумалось необходимо для JumpStart'a в робототехнике:

1. Выбор нескольких сред разработки под которые в первую очередь будут реализовываться программные модули из которых можно будет быстро собрать необходимый набор для реализации конкретных задач. Тщательное прописание всех вопросов установки этих сред и работы с ними.

2. Под каждую из этих сред разработки в вики выкладываются либо указания как использовать сторонние программные модули, либо пишутся программные модули "собственного приготовления", которые можно использовать для разработки своего робота. Никаких приоритетов собственным модулям отдаваться не должно - только объективная конкуренция, если одно из решений по всем показателям не превосходит другое - выкладываются все варианты.

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

Первый программный модуль общего использования - уже готовый OpenCV для ПК.

Дальше надо смотреть типовые библиотеки работы с периферией AVR и выкладывать программные модули для них. Контроллер движения с ПИД-регулятором для AVR опять же.

Я попробую оформить в виде программных модулей свой детектор визуальных QCode-маяков.

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

Вот такие грандиозные мысли, кто что скажет?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Библиотека прогр. модулей + примеры проектов с их использов.

Сообщение avr123.nm.ru » 15 дек 2007, 23:37

Хорошо.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: Библиотека прогр. модулей + примеры проектов с их использов.

Сообщение Digit » 16 дек 2007, 03:26

грандиозно! это не в плюс, а в минус ;) мне кажется, слишком сложно реализовать. хотя в целом достаточно интересно
злой полицейский
Аватара пользователя
Digit
 
Сообщения: 3339
Зарегистрирован: 27 ноя 2004, 00:42
Откуда: совсем Москва
ФИО: Григорий

Re: Библиотека прогр. модулей + примеры проектов с их использов.

Сообщение Vooon » 16 дек 2007, 03:42

чтож, идея интересная.

есть пара замечаний/идей

на вики-странице модуля пишем краткую информацию
+ ссылку на оф. сайт (если не свой модуль)
+ ссылку на cvs/svn/zip модуля (svn предпочтительней)
+ ссылку на документацию (для своих модулей предлагаю использовать doxygen, размещать на робофоруме буду)

создам репозитарий svn://roboforum.ru/public

вики не лучшее место для хранения исходников.

сейчас разбираюсь с ViewVC
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Библиотека прогр. модулей + примеры проектов с их использов.

Сообщение =DeaD= » 16 дек 2007, 09:43

Vooon писал(а):чтож, идея интересная.

есть пара замечаний/идей

на вики-странице модуля пишем краткую информацию
+ ссылку на оф. сайт (если не свой модуль)
+ ссылку на cvs/svn/zip модуля (svn предпочтительней)
+ ссылку на документацию (для своих модулей предлагаю использовать doxygen, размещать на робофоруме буду)

создам репозитарий svn://roboforum.ru/public

вики не лучшее место для хранения исходников.

сейчас разбираюсь с ViewVC

А как с этим репозитанием работать? Веб-интерфейс или клиента надо будет ставить? Вообще не думаю что так всё сразу попрет, что без репозитария не обойдемся... его же нужно когда куча народу одновременно хотят одно и то же править... хотя фиг знает... :)

Добавлено спустя 17 минут 34 секунды:
Digit писал(а):грандиозно! это не в плюс, а в минус ;) мне кажется, слишком сложно реализовать. хотя в целом достаточно интересно

А что именно сложно реализовать? Выложить 2 описания готовых программных пакетов и 5 своих функций? :)
Я же не обещал выложить исходники искусственного интеллекта или программные модули из которых за вечер можно собрать робота уровня победителя Grand Challenge. :wink:
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Библиотека прогр. модулей + примеры проектов с их использов.

Сообщение Vooon » 16 дек 2007, 09:53

=DeaD= писал(а):(1) А как с этим репозитанием работать? Веб-интерфейс или клиента надо будет ставить? (2) Вообще не думаю что так всё сразу попрет, что без репозитария не обойдемся... (3) его же нужно когда куча народу одновременно хотят одно и то же править... хотя фиг знает... :)

  1. клиент нужен для полноценной работы, веб только для просмотра и слива архивов (пока не запущен).
  2. удобно иметь возиожность откатиться к старой версии.
  3. заблуждение, удобно использовать даже одному человеку, у меня например исходники робофорума лежат под контролем svn - удобно, больше не приходится держать кучу бекапов как со старым форумом.
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Библиотека прогр. модулей + примеры проектов с их использов.

Сообщение =DeaD= » 16 дек 2007, 10:58

Vooon писал(а):
=DeaD= писал(а):(1) А как с этим репозитанием работать? Веб-интерфейс или клиента надо будет ставить? (2) Вообще не думаю что так всё сразу попрет, что без репозитария не обойдемся... (3) его же нужно когда куча народу одновременно хотят одно и то же править... хотя фиг знает... :)

  1. клиент нужен для полноценной работы, веб только для просмотра и слива архивов (пока не запущен).
  2. удобно иметь возиожность откатиться к старой версии.
  3. заблуждение, удобно использовать даже одному человеку, у меня например исходники робофорума лежат под контролем svn - удобно, больше не приходится держать кучу бекапов как со старым форумом.

Ну давайте попробуем :)

Добавлено спустя 36 минут 32 секунды:
Давайте еще определимся со средой разработки - под что пишем в основном библиотеки.

Младшие МК:

С младшим 8-битными МК вроде всё ясно - AVR, начиная с ATMega8 (на ATTiny не размениваемся, памяти все равно ни для каких "библиотек" там не хватит :))
Язык - очевидно С/С++.
Среда разработки - предлагаю WinAVR, потому что воровать не надо и библиотек под неё уже немало.

Средние МК (ARM*):

Тут пока можно вообще проблем оставить, либо кто-то возьмется тянуть эту тему. Пока не видел особой нужды у начинающих в этих микроконтроллерах/микропроцессорах.

КПК:

Тут тоже для меня пока темный лес. Нужен специалист.

ПК:

Язык - очевидно С/С++;

По поводу ОС - предлагается действовать по возможности как OpenCV - сразу писать основные библиотеки и под винды и под линукс (как минимум то, что не связано с периферией - в том числе типы использовать так как это делают разработчики OpenCV).

Однако не факт что всё пройдет гладко. Поэтому предложение для проектов по возможности использовать платформу C++ Builder. Если у кого противопоказания или есть мысли по этому поводу - обязательно говорите.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Библиотека прогр. модулей + примеры проектов с их использов.

Сообщение Vooon » 16 дек 2007, 11:23

по средам:

для avr - avr-gсс (С компилятор) или avr-g++ (C++ компилятор, я сейчас больше использую этот) - все это есть в WinAVR'е
сейчас я осваиваю С++, вот исходник для работы с USART'ом svn://roboforum.ru/Vooon/public/usart
работает как с младшими мегами (с одним УАСПП) так и со старшими.
определяет два namespace'a usart0 и usart1 а также константы для задания скоростей.
сильно настраивается макросами.

для ARM/AVR32 тоже есть порты GCC, WinARM

для PC С/С++, очень желательно чтоб были совместимыми с GCC
хотя для задач не требующих большой скорости удобно использовать Python
кстати его интерпретатор можно встроить в свою программу на С/С++, и можно встроить
свой код на C/C++/OCaml в питон. пример - библиотека PIL
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Библиотека прогр. модулей + примеры проектов с их использов.

Сообщение =DeaD= » 16 дек 2007, 11:33

Vooon писал(а):по средам:

для avr - avr-gсс (С компилятор) или avr-g++ (C++ компилятор, я сейчас больше использую этот) - все это есть в WinAVR'е
сейчас я осваиваю С++, вот исходник для работы с USART'ом svn://roboforum.ru/Vooon/public/usart
работает как с младшими мегами (с одним УАСПП) так и со старшими.
определяет два namespace'a usart0 и usart1 а также константы для задания скоростей.
сильно настраивается макросами.

Итого WinAVR принимается. Если не будет серьезных возражений. Кто нибудь сможет написать хорошую инструкцию по установке?

Vooon писал(а):для ARM/AVR32 тоже есть порты GCC, WinARM

То есть тут скорее всего WinARM, но не думаю что нужно спешить.

Vooon писал(а):для PC С/С++, очень желательно чтоб были совместимыми с GCC
хотя для задач не требующих большой скорости удобно использовать Python
кстати его интерпретатор можно встроить в свою программу на С/С++, и можно встроить
свой код на C/C++/OCaml в питон. пример - библиотека PIL

Совместимость библиотек с GCC будем требовать. Вопрос как проверять быстро эту совместимость, скажем, под C++ Builder'ом, или ставить второй компилятор рядом? И Python чем вообще хорош по отношению к С++? Лучше наверное под С++ писать всё, чем расползаться на несколько языков. К тому же если выбирать второй язык - то скорее всего надо будет java брать, там хоть кросс-платформенность. Хотя OpenCV в Java нету, порты только пишутся.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Библиотека прогр. модулей + примеры проектов с их использов.

Сообщение Vooon » 16 дек 2007, 11:41

удобен для быстрого прототипирования, более нагляден.
приведу свою програмку - генерирует набор битмапов для шрифта.
пока не готова на "все сто" ну и несколько корявая - первый опыт работы с изображениями

Код: Выделить всёРазвернуть
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import Image, ImageDraw, ImageFont

_FONTDIR="/usr/share/fonts/truetype/freefont/"
_SW=(150,150,150)


class GenBitmaps:
   def __init__(self, font, size, charlist=u""" !"#$%\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXTZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¢£¤¥§¨«°±²³´µ¶¹º»¼½¾×÷ЁАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяё""", pwd="./"):
      self.size = size
      self.font = font
      self.charlist = [x for x in charlist]
      self.charlist.sort()
      self.pwd = pwd

   def _get_start(self, im):
      (w,h) = im.size
      for wi in range(w):
         for hi in range(h):
            i = im.getpixel((wi,hi))
            #print "%3dx%3d - "%(wi,hi), i, _SW < i
            if not _SW < i:
               return wi
      return 0
         
   def _get_end(self, im):
      (w,h) = im.size
      for wi in range(w-1,0,-1):
         for hi in range(h):
            i = im.getpixel((wi,hi))
            #print "%3dx%3d - "%(wi,hi), i, _SW < i
            if not _SW < i:
               return wi+2
      return w-1

   def _gen_bitmap(self, im):
      out = []
      (w,h) = im.size
      (s,e) = (self._get_start(im), self._get_end(im))
      w = e-s
      for hi in range(h):
         o = []
         for wi in range(s,e):
            o.append((not _SW < im.getpixel((wi,hi))))
         out.append(o)
      return (w, out)

   def _gen_comment(self, bitmap):
      (w, bt) = bitmap
      out = "/* charwidth: %d\n" % w
      for l in bt:
         out += " * ["
         for b in l:
            if b:
               out += '*'
            else:
               out += ' '
         out += "]\n"
      out += " */\n"
      return out

   def main(self):
      font = ImageFont.truetype(_FONTDIR+self.font, self.size)
      for ch in self.charlist:
         im = Image.new('RGB', (20,20), 0xffffff)
         draw = ImageDraw.Draw(im)
         (w,h) = draw.textsize(" %s " % ch, font=font)
         if ch == ' ':
            (w,h) = draw.textsize("%s" % ch, font=font)
         del draw
         im = im.resize((w,h))
         draw = ImageDraw.Draw(im)
         draw.text((0,0), " %s " % ch, 0, font=font)
         im.save("%schr%03x.png" % (self.pwd, ord(ch)))
         #print "%02dx%02d - %schr%03x.png" % (w, h, self.pwd, ord(ch))



if __name__ == "__main__":
   bmps = GenBitmaps("FreeSansBold.ttf", 15, pwd="./img/")
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Библиотека прогр. модулей + примеры проектов с их использов.

Сообщение =DeaD= » 16 дек 2007, 11:42

По 8-битным микроконтроллерам получается надо описывать рабочее место, что нужно, чтобы вести разработку:

1. Создание прошивки;
2. Симулирование выполнения прошивки на МК;
3. Загрузка прошивки в МК и тестирование её на железе;
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Библиотека прогр. модулей + примеры проектов с их использов.

Сообщение Vooon » 16 дек 2007, 11:51

кстати инсталл WinAVR-a прост - обычный setup.exe
ставится и работает отлично.

что касается симулирования то тут нужно советовать авр-студию, сказать про протеус и вмлаб

прошивание - тут кому что больше нравится, стоит сказать о uisp/avrdude/avreal и о гуевых cvavr, pony prog
я пользуюсь uisp'ом с altera byte blaster - переключаться в вин не всегда охота, да и оболочку cipproga считаю неудобной, кокда тебе надо просто зашить микру.
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Библиотека прогр. модулей + примеры проектов с их использов.

Сообщение =DeaD= » 16 дек 2007, 12:08

Vooon писал(а):кстати инсталл WinAVR-a прост - обычный setup.exe
ставится и работает отлично.

что касается симулирования то тут нужно советовать авр-студию, сказать про протеус и вмлаб

прошивание - тут кому что больше нравится, стоит сказать о uisp/avrdude/avreal и о гуевых cvavr, pony prog
я пользуюсь uisp'ом с altera byte blaster - переключаться в вин не всегда охота, да и оболочку cipproga считаю неудобной, кокда тебе надо просто зашить микру.

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

Вот что-то типа такого: [[Рабочее место для разработки в WinAVR]]
Чтобы новичек мог с понятными затратами как денег, так и времени, за 1 вечер начать разработку под AVR.

Добавлено спустя 5 минут 22 секунды:
PS: Про питон - ну я бы не сказал, что я уже увидел чем этот язык хорош для робототехники :) про быстрое прототипирование - не увидел пока особых приемов, позволяющих делать это быстрее чем в С++ при наличии там навыков. А потом где-нибудь уткнуться в производительность - не хотелось бы. Другое дело если использовать Python как скриптовой язык внутри С++ для целей изменения подпрограммы действий уже в ходе выполнения основной программы - тут может и нашлось бы ему интересное применение.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Библиотека прогр. модулей + примеры проектов с их использов.

Сообщение Vooon » 16 дек 2007, 12:23

как я говорил - ничто не мешает реализовать критичные места на C/C++ и встроить в интерпретатор.
быстрое прототипирование - то что язык лаконичен, вот небольшой примерчик:

есть массив, нужно его представить как строку 0,0,...,0
причем исключить из него числа 2 < x < 6
решение:

Код: Выделить всёРазвернуть
>>> m=(0,1,2,3,4,5,6,7,8,9)
>>> m
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
>>> ', '.join([str(n) for n in m if not 2<n<6])
'0, 1, 2, 6, 7, 8, 9'
>>>
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Библиотека прогр. модулей + примеры проектов с их использов.

Сообщение =DeaD= » 16 дек 2007, 12:34

Vooon писал(а):как я говорил - ничто не мешает реализовать критичные места на C/C++ и встроить в интерпретатор.
быстрое прототипирование - то что язык лаконичен, вот небольшой примерчик:

есть массив, нужно его представить как строку 0,0,...,0
причем исключить из него числа 2 < x < 6
решение:

Код: Выделить всёРазвернуть
>>> m=(0,1,2,3,4,5,6,7,8,9)
>>> m
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
>>> ', '.join([str(n) for n in m if not 2<n<6])
'0, 1, 2, 6, 7, 8, 9'
>>>

А как с распространенностью этого языка, где его преподают как один из основных?
Сколько человек им владеет, сколько уже проектов на нем выполнено для робототехники?
Не знаю как у вас, а у меня нет желания осваивать еще один язык программирования, к тому же вы сами выше говорите, что С/С++ все равно придется учить, чтобы критичные места реализовывать на нем, уж и не говорю про то что под AVR все равно на С/С++ писать надо будет. Поэтому пока не вижу особых причин на Питон закладываться.

PS: а про конкретные пример - так в Перле например регулярные выражения тоже чего стоят. Не будем же мы перл пользовать? :) К тому же, как показывает практика, такие извороты обычно приводят только к плохой читабельности кода и одноразовому его характеру (править такой "прототипный код" - проще застрелиться или переписать :) - в том числе это касается однобуквенных имен переменных :))
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

След.

Вернуться в Обо всём

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

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