Видео экстензометр

4f5abc7e6dfe86845d9a97826769c1f9.jpg

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

Где-то через пол — года, вникнув в суть работы, уже появились первые версии программ, под управлением которых, машины стали «оживать».

Программа для управления испытательной машиной и анализа полученных данных

Программа для управления испытательной машиной и анализа полученных данных

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

В некоторых типах испытаний для проведения более точного измерения линейной деформации при разрыве требовалась установка УИДа (устройство измерения деформации) на образец.

bc98739604de490e751a18cb2762d3e7.jpg

Механический УИД представлял из себя, два захвата в виде прищепок, установленных на образец в зоне удлинения. Прищепки соединялись с тросиками, проходящими через ролики на валах энкодеров. На концах тросиков был закреплен противовес чтобы нивелировать вес захватов и механические сопротивления в механизме УИДа.

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

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

Изначально хотелось проверить и посмотреть на сколько это вообще реализуемо с моим уровнем умения программировать. Программировал я в то время на Delphi (возможно кто-то еще помнит эту среду разработки) и не сказать, что сильно хорошо, но я учился.

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

Конечно основная задача заключалась в том, чтобы получать расстояние между двумя метками в непрерывном видео потоке. Далее к этой программе надо было подцепить видео поток, и вот тут я столкнулся с первыми проблемами, как это реализовать. В итоге нашел одну библиотеку компоненты которой позволяли работать с видео. Прикрутил видео к своей программке, с эмитировал образец с метками, прописал простенький алгоритм покадрового поиска метки в кадре по RGB значениям. И в ходе испытаний программка стала подвисать, так как обрабатывал кадр попиксельно и даже при разрешении web камеры 640×480 точек все тормозило.

d2c71b7bb7ef05d7e6436b00b4670b33.jpg

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

Далее возникла необходимость эмитировать испытание. Для этого пришлось изготовить стенд, отдаленно напоминающий разрывную машину. В то время у меня появился небольшой станок с ЧПУ портального типа, на нем я нарезал детали из орг. стекла и собрал макет. Макет включал в себя возможность зажимать резиновый образец и растягивать его, а также платформу для установки веб камеры с возможностью перемещения с целью увеличения измеряемого диапазона и фокусного расстояния.

3D модель испытательного макета

3D модель испытательного макета

e33257f21a9bbfc4281eda88a22e5b19.jpg

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

Последняя версия программы

Последняя версия программы

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

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

Написание данной статьи спровоцировано случайно найденным скриншотом программы и фотографий макета.   

Habrahabr.ru прочитано 14795 раз