• Авторизация


Обьяснительная записка. 25-03-2007 06:58 к комментариям - к полной версии - понравилось!


Я - Окря Ниров, стыдоба рода человеческого, перед мониторами своих читателей покорно извиняюсь за неотвечание на комментарии и неведение записей в течение прошлой недели.

Во вторник вечером мне обьявили о срочной командировке в город Мемфис штата Теннесси, последовавшей на следующий день.

Как и обычно, командировка продолжалась всего один день. Хозяин нашей фирмы на собственном самолёте отпилотировал нас утром в Мемфис, отвёз на место встречи, и к восьми вечера мы были дома.

В этот раз я не фотографировал, как раньше, самолётик и отказался сидеть на месте второго пилота, что считается у нашего начальства формой морального поощрения за успехи в работе.

Весь полёт в обе стороны, не напрягаясь, читал книгу, но почему-то, очень устал.
До сегодняшнего вечера не чувствовал себя в силах предаваться виртуальным блого-Уханьям.

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

К слову. о работе.

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

Хотя начальство и прикупило большую, дорогущую программную систему Unigraphics UG NS-4 для программирования различных станков, рассчитывая на то, что я её приспособлю для наших шлифовальных станков, я всё продолжаю пользоваться своими программами.

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

У меня же есть уже сложившаяся технология и соответствующие программые утилиты.

Уже пару месяцев мои програмистские, творческие интересы занимает проблема
ВЫГЛАЖИВАНИЯ ТОЧЕК ПОВЕРХНОСТИ В ТРЁХМЕРНОМ ПРОСТРАНСТВЕ.

С общетеоретической точки зрения - эта задача давным-давно известна, но как сдедать программу для моих приложений?
У меня имеется немало идей и соображений, а вот осуществить и завершить времени не хватает.

Проблема, в двух словах, простая.

Имеется большое, но ограниченное множество точек - таблица,
которая в каждой точке (x,y) задаёт значение высоты поверхности, скажем Z.

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

Если это хоть кого-нибудь заинтересует, я был бы рад обсудить.

Если нет, то всё-равно продолжу, как уже привык, барахтаться один.
вверх^ к полной версии понравилось! в evernote
Комментарии (21):
blackash 25-03-2007-11:16 удалить
заинтересовать-то заинтересовало, но мне еще учиться и учиться, чтобы хотя бы вникнуть в условие=)
Лихоман 25-03-2007-12:35 удалить
Задача интересная и почетная.
Даю тебе освобождение от лиру на необходимое для ее решения время.
Успехов!!
Verkhunoff 25-03-2007-16:19 удалить
Я конечно дико извиняюь, но боюсь что Вы нечётко сформулировали ТЗ, ибо в том виде как оно звучит – решений масса и все простейшие. Во первых, насколько мне известно, пока ещё никто не отменял ни интегрирование ни дифференцирование. Проинтегрировать оно конечно изящнее, однако дифференцировать кривую хоть и немного громоздко, зато, скажем так.. нагляднее. И делаем выборку.. Да какую угодно на самом-то деле, ибо мощности любого проца с лихвой хватит для любых нужд. Во вторых существуют алгоритмы реализующие функцию Котельникова. Самое изящное, на мой взгляд решение. И ресурсов не требует, и точность ну просто несусветная будет. В третьих существует воз и маленькая тележка алгоритмов реализующих дельта-сигма модуляцию. Опять же – делаем мелкую выборку и дело в шляпе. Ну а четвёртых.. А в четвёртых, и это самое главное!, поскольку как Вы говорите всё это нужно для станков с ЧПУ, то можно сказать что там реализована передискретизация. Аппаратно, программно – не суть. А чаще и так и так). Очень высоких порядков! Или в ваших станках проц работает на килогерцах???) Если станок буквально всего по трём точкам заданных в координате Z не строит ну просто идеальную кривую (на любом линейном размере в пределах диапазона подачи суппорта или стола), то эта функция просто незадействована.
val_2001 25-03-2007-23:18 удалить
Да, данная высокая математика мне уже не под силу,се-таки работа накладывает свой отпечаток на мозги, и они забывают, то что им кажется не нужно. Это грустно сознавать и хочется с этим бороться, но некогда. Успехов в твоих делах
Уважаемый verkhunoff, спасибо за по-настоящему предметный ответ
и ссылки на возможные пути решений.

Извините, что в изложенном мною виде техническое задание выглядит нечётко.

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

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

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

Мне нужно шлифовать поверхность коленного протеза бедренной кости, как можно глаже.

Поверхность задана не математически, а в виде компьютерной парасолид-модели.
Разумеется, что парасолид-модель состоит из ограниченного набора вполне теоретических поверхностей.
Пожалуй, что самым надёжным было бы, при построении маршрута шлифовального круга по шлифуемой поверхности,
расчётным путём определять нужные точки, манипулируя этими теоретическими поверхностями.
Тем более, что рабочая поверхность шлифовального камня является поверхностью тора.
Вот картинка №1.
[699x528]
Мне показалось слишком громоздким в моих условиях строить подходящую теорию и компьютерную программу.

Я просто, пользуясь программной средой Solid Edge, двигаю шлифовальный круг так, чтобы итеративным методом нащупать
подходящие точки соприкосновения с поверхностью.

К сожалению, такие точки, соприкосновения торической поверхности шлифовального круга с обрабатываемой поверхностью,
не всегда однозначно или точно определяются. Например, таких точек может быть несколько.
В этом случае, моя программа, немного помотылявшись, выбирает некую приблизительную точку и движется дальше.

В результате, после сканирования поверхности, продолжающегося несколько часов (иногда до двенадцати) получается набор
от 60 до 90 тысяч точек для программы шлифования поверхности.

Как видно по картинке №1, деталь вращается на своём штивте, а шлифовальный круг вращается сам по себе и,
при этом шлифовальный круг может лишь приближаться к детали и удаляться.
Таким образом, мы имеем трёхмерную цилиндрическую систему координат.
Однако, вид системы координат суть не важен.
Проследовав по детали один оборот, круг сдвигается на шажёк по оси Z. Затем деталь совершает следующий круг и т.д.

Программы, которые я формирую в результате своего прощупывания дедалей, вполне удовлетворительны.
Чистота поверхности зависит от
- сдвига по Z,
- углового шага поворота детали и
-параметра допустимой ошибки по X.
(Хочу заметить, что в сегодняшнем изложении я поменял мествми X и Z.. Это ближе к реальной ситуации.)

К сожалению, иногда бывает так, что отдельные точки слегка выпадают из гладкости.
Это видно после шлифовки.
Я сделал программу, которая проверяет гладкость точек вдоль одного оборота, пользуясь тем, что Вы называете
дифференцирование, то есть двойными разностями, отнесёнными к угловому шагу.
Эта программа в полуавтоматическом режиме вылавливает и выправляет нехорошие точки.
Однако программа не работает тогда, когда неровность оказывается между соседними точками для разных Z.

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

С вашей подсказки я отыскал статьи по Теореме Котельникова:
http://rus.625-net.ru/audioproducer/2000/08/rev1.htm
http://www.proza.ru/texts/2004/08/10-37.html
Поразмыслю.
А сейчас пришли гости и обещают убить (жена), если срочно не пойду к столу.
Verkhunoff 26-03-2007-03:30 удалить
А промодулировать управляющую команду по каналу Z в интервале 2/5-3/5 и привязать её (модуляцию) через функцию.. ну, на худой конец, хотя бы среднего арифметического – к координатам точек поверхности на соседних “шажках”, то бишь к каналу Х? Или даже просто – взять, да и брутально промодулировать без привязки. Это если не лезть в поверхности двойной кривизны, а то можно было бы считать от трёх точек – двух на одном шажке и одной на другом. Тогда мы получим совершенно классический.. Вобщем думаю понятно. Останется только синхронизировать подачи по всем координатам. Через того же Котельникова, к примеру.
Verkhunoff 26-03-2007-10:17 удалить
tetka_1917, фу на Вас! Полагаю что ёрничание здесь неуместно.
saint_today 26-03-2007-14:02 удалить
Окря_Ниров,я бы с удовольствием вникла бы в решение задачи но в виду абсолютно гуманитарных наклонностей могу лишь с трепетом взирать на мудрые разговоры об ЭТОМ))
хочу посидеть на месте второго пилота(
Исходное сообщение blackash
заинтересовать-то заинтересовало, но мне еще учиться и учиться, чтобы хотя бы вникнуть в условие=)

Яна! Журналист должен во всё вникать. Такая планида.
Если бы я был журналист, то я бы тоже вникнул.
Исходное сообщение tetka_1917
УБИЛ!

...и надпись написал...
Исходное сообщение Лихоман
Задача интересная и почетная.
Даю тебе освобождение от лиру на необходимое для ее решения время.
Успехов!!

Спасибо, Э! Ты ведь не единственная женщина, кто даёт мне освобождение от лиру.
Задача большая и мне, похоже, век свободи не видать.
Исходное сообщение val_2001
Да, данная высокая математика мне уже не под силу,се-таки работа накладывает свой отпечаток на мозги, и они забывают, то что им кажется не нужно. Это грустно сознавать и хочется с этим бороться, но некогда. Успехов в твоих делах

Валя! Не расстраивайся. Я тоже всё забыл.
Жизнь заставит - вспомнишь.
tetka_1917, пусть не отпираеся - гений. гений.
Исходное сообщение verkhunoff
А промодулировать управляющую команду по каналу Z в интервале 2/5-3/5 и привязать её (модуляцию) через функцию.. ну, на худой конец, хотя бы среднего арифметического – к координатам точек поверхности на соседних “шажках”, то бишь к каналу Х? Или даже просто – взять, да и брутально промодулировать без привязки. Это если не лезть в поверхности двойной кривизны, а то можно было бы считать от трёх точек – двух на одном шажке и одной на другом. Тогда мы получим совершенно классический.. Вобщем думаю понятно. Останется только синхронизировать подачи по всем координатам. Через того же Котельникова, к примеру.


Я так и хочу сделать.
Сначала мне нужно будет сформировать таблицу и её сфазировать потому, что количество угловых точек для каждой Z не одинаковое, и начинаются они с разных углов.
Значимая таблица не прямоугольная.
Затем нужно будет проанализировать плавность значений X каждой точки вдоль Z.
К сожалению, в иных угловых сечениях последоваательность разрывается, что увеличивает количество граничных точек.
Затем, предполагаю, для каждой подозрительной точки программу останавливать и выводить на экран четыре плоских графика, в которых эта точка присутствует: вдоль С, вдоль Z и по диагоналям.
С помощью графиков вручную, или полуавтоматически я смогу исправлять нехорошие точки и не портить сильно другие направления.
Но это исправление, а не получение лучшей поверхности.
Если менять всю поверхность, то нужно выбрать точки начала (не границу же) и следить за тем, чтобы не увести куда-нибудь поверхность и не исказить.
Формула Котельникова чертовски интересна и соблазнительна. Похоже, что все эти MP3 базируются на ней.
Но мне ещё об этом нужно поразмыслить.
А вот почему нормировать к 2/5-3/5 ?
Нормальное распределение?
Исходное сообщение Злой_Добрый_Мини_Ёжик
Окря_Ниров,я бы с удовольствием вникла бы в решение задачи но в виду абсолютно гуманитарных наклонностей могу лишь с трепетом взирать на мудрые разговоры об ЭТОМ))
хочу посидеть на месте второго пилота(

Ёжик!
Кажется, Достоевский говорил, что всякий, кто не может обьяснить пятилетнему ребёнку, чем он занимается - шарлатан.

А в самолёте даже первому пилоту почти нечего делать. Управляет-то Автопилот.
blackash, Яна,
это я постараюсь потому, что старый, а ты лучше помолодись.
saint_today 29-03-2007-12:21 удалить
Окря_Ниров,значит,вокруг меня сплошные шарлатаны потому что понимаю я из того что мне пытаются объяснить минимальную часть-к тому же если это что то из разряда вышеописанного =/ хотя может просто я глупый)
и в самолетах сплошные шарлатаны,ну вот зачем тогда давать людям соблазн и делать всяческие места вторых пилотов?донт андерстэнд.
Злой_Добрый_Мини_Ёжик, хотя это сказал не я, но, думаю, что ты в двух первых случаях во многом права.
Что же касается второго пилота, то он нужен на тот случай,
если первый пилот,
неожиданно, запьёт.

А посидеть на месте пилота или, там, президента, хочется обычно по молодости лет.
Мудростью является знание, что
сидеть лучше всего на СВОЁМ месте.


Комментарии (21): вверх^

Вы сейчас не можете прокомментировать это сообщение.

Дневник Обьяснительная записка. | Окря_Ниров - Творчество Окри_Нирова | Лента друзей Окря_Ниров / Полная версия Добавить в друзья Страницы: раньше»