roboforum.ru

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

Робот DemoVisionRobot с техническим зрением

Ответить

Re: Робот-игрушка (дипломный проект)

=DeaD= » 31 янв 2010, 23:18

8Кб это дофига :) синус с точностью 2° это всего 45 значений, а если вспомнить, что его производная это косинус - так получится за 2 шага взять синус с точностью наверное порядка 0.5°.

Re: Робот-игрушка (дипломный проект)

Duhas » 01 фев 2010, 12:15

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

Re: Робот-игрушка (дипломный проект)

Angel71 » 01 фев 2010, 22:44

artymen, мммммммммммм, "моя предложить, ваша отказаться" :) чем больше вариантов решения у вас есть, тем больше шанс выбрать наиболее подходящий
а lpc на 60МГц, эт ни много и не мало, мне такие камушки уже не подходят (я на sam7s, жутко "тесно"). :oops: сейчас считаю, что минимум это cortex3 с thumb2. да и... и думаю, а может всё-таки ну его, "пару баксов сверху" и уже сразу взять двухядерный atom. можно будет и линух и винду запускать, памяти прилично, производительность неплохая, дотнет без проблем запустить можно

Re: Робот-игрушка (дипломный проект)

artymen » 02 фев 2010, 14:34

=DeaD=, 2 градуса это слишком грубо, да и памяти на деле окажется далеко не 8 кб, тут вон printf требует стека в 4 кб, но впрочем printf не влезет во флеш даже. я тут все перечитал, и оказалось, что я сильно ошибся в предварительных расчетах, оказывается времени у меня проццессорного на вычисления достаточно много, так что, думаю, проблем не возникнет.
Duhas, я, конечно не спец, в поисковых методах, но само название громко кричит о том, что это оооочень долго, а уж тем более по сравнению с прямым вычислением. ладно бы, если бы речь шла о каких то неопределенностях, системах уравнений, интегралах и многокритериальной оптимизации функций...
Angel71, вариантов асболютно никаких нету, все выбрано и работа идет полным ходом :)

Тут вот еще неприятности неожиданно возникли с операциями с плавающей точкой. Бился, бился... выяснилось, что это Proteus глючит (с ошибкой вылетает, когда я прохожу опредленную ассмеблерную инструкцию). Я как то бился с протеусом, у меня не работала схема, которую я собрал в нем по схеме из даташита, как положено, с резисторами и прочей обвязкой. Потом тупо подклчюил все безо всякой обвязки, напрямую, и заработало, вот вам и симулятор электроники. Ну, думаю, хоть программы в микроконтроллерах он симулирует корректно, т.е. как отладчик рабоатет нормально, но теперь очевидно, что он во всем косячит.
Пора переходить к отладке в железе, программатор к которому все еще болтается неизвестно где во владении нашей замечательной почты россии...

Re: Робот-игрушка (дипломный проект)

=DeaD= » 02 фев 2010, 14:45

2artymen: Ключевая мысль в моём сообщении была - "производная косинуса - синус". Отсюда немедленно получаем существенно большую точность.

Re: Робот-игрушка (дипломный проект)

artymen » 02 фев 2010, 15:51

Эммм, производная это волшебная палочка, которая повышает точность ? Что-то похожее на вечный двигатель. Мне проще в деда мороза поверить :)

Re: Робот-игрушка (дипломный проект)

boez » 02 фев 2010, 16:33

Ну кому ж не хочется поверить в деда мороза :) Но повышение порядка аппроксимации действительно помогает.

Кстати, Dead, а что это за аппроксимация получится? Вроде как не совсем кусочно-линейная, потому как для кусочно-линейной нужны коэффициенты, равные производной в некоторой точке _внутри_ интервала (x_i,x_i+1), а не на конце.

Наверное надо взять f(x) = f(x_i)+(x-x_i)*f'(x_i), где x_i - это ближайшая к x из всех точек (0<=i<=N) в которых мы знаем значение функции (ну то есть построим таблицу значений ф-и и первой призводной в серединах интервалов сетки) - получится какая-то вообще говоря разрывная хрень, но всяко лучше ступенек.

ПыСы: надо тех выучить, чтоб формулы на форуме писать красиво.
Последний раз редактировалось boez 02 фев 2010, 16:56, всего редактировалось 1 раз.

Re: Робот-игрушка (дипломный проект)

MiBBiM » 02 фев 2010, 16:36

а формула выводится из самых основ матана :)
LaTeX: \Delta y = f'(x)\Delta x + \alpha(\Delta x)
LaTeX: y(x+\Delta x) - y(x) \approx f'(x)\Delta x
LaTeX: y(x+\Delta x) = y(x) + f'(x)\Delta x
или в нашем случае
LaTeX: sin(x+dx) = sin(x) + cos(x)\Delta x
LaTeX: sin(x+dx) = sin(x) + sin(\pi/2-x)\Delta x
P.S> boez, вот статья http://physics.nad.ru/latex.html - просто идеальный справочник, тег у нас
Код: Выделить всёРазвернуть
[tex][/tex]

Re: Робот-игрушка (дипломный проект)

=DeaD= » 02 фев 2010, 17:13

artymen писал(а):Эммм, производная это волшебная палочка, которая повышает точность? Мне проще в деда мороза поверить :)

Наверное лучше верить в смысл производной. Ну да ладно, не хотите не надо. :)

Добавлено спустя 1 минуту 16 секунд:
boez писал(а):Кстати, Dead, а что это за аппроксимация получится? Вроде как не совсем кусочно-линейная, потому как для кусочно-линейной нужны коэффициенты, равные производной в некоторой точке _внутри_ интервала (x_i,x_i+1), а не на конце.

Ну блин, вы даёте. Смысл производной в точке какой вообще?

Добавлено спустя 20 секунд:
Такое ощущение что в школе все математику прогуливали напрочь :)

Re: Робот-игрушка (дипломный проект)

artymen » 02 фев 2010, 19:59

Ах вы про аппроксимацию, так это псевдоповышение точности :) Я все же постараюсь избежать этого. По моим подсчетам у меня будет около 700 тыс. тактов на вычисления, приведенные мною на предыдущей странице. Даже пускай будут сложные команды, которые выполняются 2 такта, да еще куча прыжков, пускай 3, то получится около 200 тыс. команд. Думаю, этого достаточно. :)

Re: Робот-игрушка (дипломный проект)

=DeaD= » 02 фев 2010, 21:25

700 тыс тактов на те вычисления? Это с какой точностью? 50 знаков после запятой?

Re: Робот-игрушка (дипломный проект)

artymen » 03 фев 2010, 09:13

С точностью типа double. Мне все равно, какая большая она будет, главное чтобы не меньше желаемой.

Re: Робот-игрушка (дипломный проект)

=DeaD= » 03 фев 2010, 09:21

Всё равно - почти миллион тактов это очень много.

Добавлено спустя 4 минуты 6 секунд:
artymen писал(а):Ах вы про аппроксимацию, так это псевдоповышение точности :)

Интересно, что в ней "псевдо"? Есть математическая формула, по ней можно оценить точность и т.п.
Особенно хорошо, что вторая производная sin/cos тоже неслабо ограничена :)

А для повышения точности, если уж это волнует, хорошо угол искать напрямую из пары (x,y), а не через только известный cos(a), т.к. в районе 0 этот косинус очень уж мерзко себя ведет :)

В общем надо брать и писать библиотеки, а то вы реально и Core 2 Duo сможете загрузить такими вычислениями :)

Re: Робот-игрушка (дипломный проект)

artymen » 03 фев 2010, 10:12

Интересно, что в ней "псевдо"? Есть математическая формула, по ней можно оценить точность и т.п.
А то, что точность единожды измеренной величины никакими способами невозможно повысить - информация потеряна. Можно как угодно над этой величиной глумиться: брать от нее производные, интегралы, делить, умножать, облучать рентгеном, плясать с бубном, но получим мы лишь другую интерпретацию, у которой может появиться куча знаков после запятой, но ошибочно полагать, что мы повысили точность. Оценить можно, повысить нельзя.
В общем надо брать и писать библиотеки, а то вы реально и Core 2 Duo сможете загрузить такими вычислениями
Обладая миллионом тактов, я позволю себе роскошь воспользоваться возможностями, предоставляемыми компилятором и стандартными библиотечными математическими функциями. Мне еще столько всего предстоит сделать, что мне еще не хватало свои библиотеки писать. Так дойдем до того, что я свою ось напишу для компа, с которого будет вестись ручное управление роботом.

Re: Робот-игрушка (дипломный проект)

=DeaD= » 03 фев 2010, 11:03

В общем не понял я в чем паника, тогда, если миллион тактов есть :).


cron
Rambler\'s Top100 Mail.ru counter