Mustafa Sarı

Mustafa Sarı hakkında

(Samsun, 26.03.1973, ,İTÜ, Elektronik ve Haberleşme Mühendisliği, Yazılım)

Plastik Boru Kameralı Kalite Kontrolü

Mavis, Plastik enjeksiyon yöntemiyle üretilmiş ürünlerin (kutu, boru vb.) kamerayla kalite kontrol ve ölçümlerinin yapılmasına ilişkin çözümler sunmaktadır. Plastik enjeksiyon sektöründe güvenle çalışan bu uygulamalarımızı zamanla geliştirmekte, yeni yaklaşımlarla desteklemekteyiz.

Plastik boru kalite kontrolüne ilişkin alternatif bir yaklaşım : Polar Transform.

Yukarıdaki resimdekine benzer Plastik boru da;

  • Çapak Kontrolü
  • Çeperde Kesiklik Kontrolü
  • Renk Kontrolü
  • Conta Varlık Kontrolü
  • Enjeksiyon Hataları Kontrolü

gibi kontroller yapılmaktadır. Alternatif bir yöntem olarak; Dairesel şekli açıp yatay düzlemde, dörtgen tipinde bir geometriye dönüştürmek ve bunun üzerinde işlem yapmak işleri çoğu zaman çok daha kolaylaştırır.

Boru yüzeyinin uygun HALCON kodları yardımıyla yatay düzleme transform edilmiş hali

Borudaki kesikliğin bulunması artık gayet kolaylaşmış oldu. Kesikliğin yerinin belirlenmesi :

Son olarak, ters transform ile, gerçek görüntü üzerinde kesikliğin gösterilmesi :

Programın HALCON kodu aşağıdaki gibidir :

read_image (Image, '1c.bmp')
*draw_circle (3600, Row, Column, Radius)
Row := 518
Column := 648
Radius := 374
gen_circle(Circle1, Row, Column, Radius)
gen_circle(Circle2, Row, Column, Radius+100)
difference(Circle2, Circle1, RegionDifference)
reduce_domain(Image, RegionDifference, ImageReduced)
polar_trans_image_ext (ImageReduced, PolarTransImage, Row, Column, rad(0), rad(360), Radius - 5, Radius+125, 2000, 200, 'bilinear')
mean_image(PolarTransImage, ImageMean, 3, 3)
bin_threshold(ImageMean, Region)
difference(ImageMean, Region, RegionDifference1)
connection(RegionDifference1, ConnectedRegions)
select_shape(ConnectedRegions, SelectedRegions, 'area', 'and', 500, 999999)
count_obj(ConnectedRegions, Number)
if (Number > 1)
    select_obj(ConnectedRegions, ObjectSelected1, 1)
    select_obj(ConnectedRegions, ObjectSelected2, 2)
    distance_rr_min(ObjectSelected1, ObjectSelected2, MinDistance, Row1, Column1, Row2, Column2)
    R := Row1 + (Row2-Row1)/2
    C := Column1 + (Column2-Column1) / 2
    dev_set_color('red')
    gen_circle(DCircle, R, C, 30)
    dev_set_color('green')
    disp_cross(3600, R, C, 24, 0)
    polar_trans_region_inv (DCircle, CodeRegionCircular, Row, Column, rad(0), rad(360), Radius-5, Radius+125, 2000, 200, 1280, 1024, 'nearest_neighbor')
    disp_message (3600, 'Çeperde Kesiklik', 'window', 10, 10, 'red', 'true')

    stop()
endif

Projede kullanılan orijinal resmi yüklemek için, galerideki 1c isimli resmi indirebilirsiniz…

million threshold

Yarısı Beyaz, Yarısı Siyah olan zemin üzerinde, gri renkli nesneyi seçmek için hangi threshold tipi en uygundur?

Alternatif bir yaklaşım olarak 2 defa üst üste çalıştırılmış bin_threshold, en etkili sonucu verecektir.

ÜStteki görüntüde, kırmızı dörtgen içindeki alana bin_threshold komutu uygulandığında;

Koyu pixelleri seçecektir. Biz, bu koyu pixeller içindeki, civatayı, yani gri bölgeyi seçmek istiyoruz. Bu durumda, Bu bölgeye 2. defa bin_threshold uygulandığında, gri bölge açık olarak kalacağından, gri bölge dışındaki siyah bölgeyi seçecektir. difference komutu ile siyah bölge dışlanıp, gri bölge seçilir.

En son, filtreleme komutları ile birlikte, tam olarak civata seçilmiş olur.

Tüm programın HALCON kodu aşağıdaki gibidir.


read_image (Image, 'civata.bmp')
draw_rectangle2(3600, Row3, Column3, Phi1, Length11, Length21)
gen_rectangle2 (Rectangle, Row3, Column3, Phi1, Length11, Length21)
reduce_domain (Image, Rectangle, ImageReduced)

bin_threshold(ImageReduced, Region1)
reduce_domain(ImageReduced, Region1, ImageReduced1)
gray_opening_shape(ImageReduced1, ImageOpening1, 1, 1, 'octagon')
bin_threshold(ImageOpening1, Region2)
difference(ImageOpening1, Region2, Region)

connection(Region, ConnectedRegions)
select_shape_std(ConnectedRegions, SelectedRegions, 'max_area', 70)
fill_up(SelectedRegions, RegionFillUp)
closing_circle(RegionFillUp, RegionClosing, 2)
opening_circle(RegionClosing, RegionOpening, 3)
connection(RegionOpening, ConnectedRegions)
select_shape(ConnectedRegions, SelectedRegions, 'area', 'and', 20, 99999)
dev_display(Image)
dev_set_color('green')
dev_display(SelectedRegions)

Ayna Kullanarak Mikro Kamera Yaklaşımı

FactorH otomasyon ile birlikte gerçekleştirilen yeni projede, metal yuva içindeki elektrik soketinin pimlerinin varlık ve pozisyon kontrollerinin yapılması gerekiyordu. Yüksek hassasiyetli ölçüm uygulamaları sıkça gerçekleştirmiş olsak ta, bu projede en büyük sorun, kameranın soketlere direk bakabileceği bir yerleşimin olamamasıydı. L şeklinde dönen bir soketin iç yüzünü hem aydınlatmak, hem de tam karşısından kamera ile bakmak gerekiyordu.

MAVIS olarak, uygun yerleştirilmiş bir ayna ile bu sorunu çözdük. Parçanın karşısına 45 derece açıyla yerleştirilmiş bir ayna ve aynanın da karşısına yine 45 derece açıyla yerleştirilmiş bir kamera ile, tam dik olarak hedef yüzeye bakmak mümkün hale getirildi.

Sonuç olarak; hem ideal aydınlatma koşulları hem de kamera – ayna ikilisinin uygun kullanımı ile, ancak mikro boyuttabir kamera ile alınabilecek görüntü, yüksek çözünürlüklü olarak elde edilmiş oldu. Projenin bundan sonrası, MAVIS VYP yazılımı için gerçekleştirilen rutin bir iş haline geldi.

Motoman Robot için Yeni Parça Tanıtımı

Mavis, Teknodrom firması ile birlikte Kameralı Robot Otomasyonu sistemlerine devam ediyor.

Sistem,

  • kamera ile konveyör üzerinde hareketli parçanın pozisyon ve açı bilgilerinin hesaplanması
  • Parçanın tutulabilirliğinin tes edilmesi ve gripper tutma noktası bulunması
  • Hesaplanan bilgilerin robota iletilmesi
  • Robotun parçayı alıp istenilen yere yerleştirmesi

şeklinde çalışmaktadır. Mavis VYP programı, sınırsız sayıda parça tanıtmaya izin vermektedir.

Yeni tanıtılan parça ve ekran görüntüsü:

Mavis VYP programı, FANUC, Kuka, Denso marka robotlar ile de çalışacak kapasitededir. Haberleşme RS232 ya da Ethernet üzerinden olabilir. Kameraya önce düzgün parça gösterilerek öğretilir, sistem daha sonra aldığı diğer resimlerde bu düzgün parçayı arar ve parça robot tarafından tutulabilecek şekilde ise, koordinatlar robota iletilir.

Barkod Printer, Seri Port, USB, C# üzerine… – 2

makalenin ilk versiyonunda (http://www.mavis.com.tr/blog/?p=233) Barkod printer üzerine genel bir giriş yapmıştık.

Barkod yazıcıya anlayacağı dilden (PPLA, PPLB, ZPL ..) etiket tasarlamanın en kolay yolu, genelde barkod yazıcının kendi CD si ile birlikte gelen tasarım programını kullanmaktır. (PPLA PPLB komutlarını açıklayan PDF dosyayı buradan indirebilirsiniz)  Etiket görsel olarak istenilen şekilde tasarlanır. Yazıcıdan çıktı denemeleri alınır. En ideal etiket tasarımında karar verildikten sonra, yazıcıya gönderilecek dosyanın kaynak kodu elde edilir. Bazı programlarda PPLA / PPLB kodunu göster seçeneği var, bazı programlarda ise bunu yapmak için Windows arabiriminde “Print To File” işaretlenerek, yazıcıya göndereceği veriyi bir dosyaya yazdırması sağlanır.

Yukarıdaki resim, Zebra yazıcılar ile birlikte ücretsiz gelen ZebraDesigner programında Print To File işleminin yapılmasını gösterir. Etiket, görsel olarak istenildiği gibi tasarlanır. Yazıcıya gönderme işleminde, görsel tasarım dışında, baskı tipi (termal transfer, direk baskı – ribon-), renk doygunluğu (density) etiket boy ve boşluk bilgileri gibi başlık (Header) bilgileri de yer alır. Bunları tek tek kodlamak için ciddi bir Programmers Guide hatmedilmelidir. (Kısmen eğlenceli de olsa, çoğu kez zaman kaybından başka bişey de değildir)

“Print To File” seçeneği işaretlenerek oluşturulmuş örnek bir barkod tasarım bilgisi :

Q160,019
q831
rN
S1
D7
ZT
JB
OD
R335,0
N
GW104,104,6,48,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÿÿÿÿÿÿÿÿÿÿ¿
A152,24,2,2,1,1,N,"ZD:01.01.10"
A152,48,2,2,1,1,N,"QC:235-167"
A152,72,2,2,1,1,N,"01.06.2010"
A152,96,2,2,1,1,N,"03L131051BH"
P1

ilk başta yer alan satırlar (1..10 arası) barkodun başlık bilgileri, geri kalan yazılacak verilere ilişkin koordinatlar ve data ları içerir. GW ile başlayan satır, etikette bir grafik olduğunu gösterir. Bu örnekte ben grafik kullandım, çünkü C# içinden  grafiği düzgün bastırabilmek için kodda bazı düzenlemeler yapmak gerekmektedir.

Gerçek hayatta, her barkod üzerindeki bilgiler değişeceği için, etiketin üzerindeki bu bilgileri de değiştirerek yazıcıya göndermek gerekmektedir. Bu yüzden orijinal etiket dosyasını aşağıdaki gibi değiştirdim.

Q160,019
q831
rN
S1
D7
ZT
JB
OD
R335,0
N
GW104,104,6,48,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÿÿÿÿÿÿÿÿÿÿ¿
A152,24,2,2,1,1,N,"*LINE1*"
A152,48,2,2,1,1,N,"*LINE2*"
A152,72,2,2,1,1,N,"*LINE3*"
A152,96,2,2,1,1,N,"*LINE4*"
P1

amacım; ** arasında geçen değişkenleri *LINE1* gibi, program ile RunTime anında değiştirebilmek.

Bunun için, Print To File yaparak elde ettiğim dosyayı, edit edip (not defteri vb. bir programla) yukarıdaki gibi düzenleyerek, bildiğim bir yere (diyelim ki C:\PrnTmp klasörüne) bildiğim bir isimle (mesela Template.prn) kaydedelim.

Şimdi, bu dosyayı okuyup, dinaik olarak değiştirip yazıcıya gönderen C# kodum aşağıdaki gibi olacaktır.

		public void PrintBarcode(String L1, String L2, String L3, String L4)
		{
			String tempFile = "C:\\PrnTmp\\Template.prn";
			String PrinterName = "ZDesigner TLP 2844";
			StreamReader SR = new StreamReader(tempFile, Encoding.Default);
			String all = SR.ReadToEnd();
			SR.Close();

			all = all.Replace("*Line1*", L4);
			all = all.Replace("*Line2*", L3);
			all = all.Replace("*Line3*", L2);
			all = all.Replace("*Line4*", L1);

			RawPrinterHelper.SendStringToPrinter(PrinterName, all);

		}

Bu rutin, verdiğim 4 değişkeni orijinal barkod tasarımında yerine koyar ve bu verdiğim değerlere göre barkod basar.
Grafiklerin doğru basılabilmesi için, StremReader nesnesi, Encoding.Default parametresi ile çağırılmalıdır.

Buradaki, RawPrinterHelper USB bağlantı üzerinden direk barkod basan sınıfın adıdır. Bir sonraki makalede bu sınıftan bahsetmeyi düşünüyorum. Tabii, seri ya da paralel port üzerinden yazıcıya erişmek için bu sınıfı kullanmaya gerek olmadığını belirtmeye gerek yok sanırım.

Makalenin son bölümünde, bu sınıf açık kaynak kodu ile birlikte yer almaktadır.

Makalenin Son Bölümü : Bölüm – 3

Akıllı Kamera mı Bilgisayar Tabanlı Kamera Sistemleri mi?

Son zamanlarda, nette gezinirken akıllı kameralar (smartcam) ile PC tabanlı görüntü işleme sistemlerinin karşılaştırmasına eskisinden daha sık tanık oluyorum. (mesela http://www.haberortak.com/Haber/Robotik/29032010/Akilli-kameralar-mi-bilgisayar-tabanli-kamera-sistemleri-mi.php ) Her iki sistemin de avantaj-dezavantaj tabloları ile karşılaştırılmaları şeklinde devam eden yazı, genelde beraberlik durumu ile bitiriliyor. Buna rağmen son bir anafikir olarak, akıllı kameraların zamanla çok hızlandığı, PC tabanlı sistemleri aratmayacak kadar güçlendiği gibi özelliklerine göz kırpılarak tamamlanıyor.

Bu yeni (ve de zevkli) tartışmaya ben de kendi fikirlerimle katılmak istiyorum. Aslında akıllı kameralar ile PC tabanlı sistemleri karşılaştırmak, büyük bir haksızlık olmakla birlikte, yine de ilk aklıma gelenleri sıralayayım….

Tez : Akıllı kamera hiç bir zaman PC tabanlı bir sisteme alternatif ya da rakip olamaz, olsa olsa basite indirgenmiş bir alt kümesi olur.

Savunma :

  • Akıllı kameralar ve işlemci güçleri ne kadar hızlanırsa hızlansın hiç bir zaman en sıradan bir PC nin hızının yanına bile yaklaşamaz.
  • Akıllı kameralar genişlemeye izin vermez ya da çok sınırlı izin verir. Oysa en sıradan bir PC bile 5-6 adet USB, Ethernet, Wireless, Seri Port, Paralel Port gibi birçok standart yuva ile gelir. Bir PC ye 4 adet kamera tanıtılması iş bile sayılmazken, akıllı kameralarda bu işlem xxxxxx-Pro, yyyyyy-Advance zzzzzz-saturn…. gibi modellerle sunulmaktadır. (Ve çoğu zaman o modeller yine bir PC kullanmaktadır)
  • Akıllı kameralar genelde tek bir lens ya da kamera çözünürlüğü kullanır. PC sistemleri için böyle bir sınır yoktur. İstediğin lensi, kamerayı, çözünürlüğü tanıtabilirsin. Muhtemelen yazılım hangi lensi kamerayı kullandığını bilmeyecektir bile 😉
  • Akıllı kameralar ile geliştirme yapmak çok kolay işler için kolaydır, zor işler için imkansıza varabilecek kadar zor olabilir. PC için programcının kabiliyetine kalır herşey. Tonla geliştirme ortamı ve dili (ve haliyle bu ürünleri geliştiren binlerce mühendis) PC programcılarının emrine amade ürünler sunmaktadırlar. Bugün en büyük olduğunu iddia eden akıllı kamera firması bile, size sınırlı bir arayüz verecektir. Bu arayüzü Visual Studio, Delphi vb. geliştirme ortamı ile kıyaslamak en basit ifadeyle haksızlık olur.
  • Akıllı kameralar için çıkış birimleri (ekran, yazıcı) tanıtmak için ya standart ürünler kullanılır, ya da zahmetli olur. (PC tarafına girmeyelim artık :))
  • Akıllı kameralar için giriş birimleri (klavye, barkod okuyucu …) tanıtmak ???? (yine bir üst maddeye gidiniz…)
  • Akıllı kameralar ile Excel, veritabanı, istatistik vb. işlemler yapamazsınız. Bu gibi ihtiyaçlar için yine PC kullanmak zorunluluğu vardır.
  • Akıllı kameralar için geliştirilen yazılımlar, sadece o donanım için, o donanım üreticisi tarafından geliştirilmiştir ve ilkeldir. PC tarafında ise, donanımdan bağımsız evrensel geliştiriciler tarafından geliştirilmiş kapsamlı yazılımlardır.
  • Akıllı kameraların depolama kapasiteleri sınırlıdır. PC sistemleri için RAM, Sabit disk, harici disk vb. aklınıza ne geliyorsa kullanırsınız.
  • Akıllı kameralar tek bir anda tek bir işlemi yapabilir. PC tarafında çoklu işlemciden tutunda, paralel processinge, multi thread uygulamalara, ufkunuz ne kadar açıksa onu yaparsınız…

Antitez 1 (Akıllı tarafına yontan):

Eğer işiniz iyi tanımlanmış ve yeterince basit ise, PC sistemine girmemekte haklı olabilirsiniz. Diyelim ki, bir süt üreticisi dolum yaptığı her şişenin boş mu dolu mu olduğunu kontrol edecek. Bu iş için PC sistemi komplex gelebilir. Herhangi bir akıllı kamera ile bu işlemi yaparım, yok giriş çıkışıymış, yok hızıymış, exceli raporu vb. hiiiiiç te işim olmaz diyorsanız, akıllı kamera tam size göre.

Antitez 2 (PC tarafına yontan):

Efendim, bu gün aracınızdaki navigasyon sisteminden tutun da, elinizdeki cep telefonuna kadar, artık hemen her yerde PC bazlı sistemler görüyoruz. Eskisi gibi incinebilir kırılgan (vulnerable) bir yapı da söz konusu değil. Maliyet desen, donanım iyice ucuzladı, birkaç 100 USD mertebesine indi. Birçok firma, netbook, box pc, multimedia pc gibi ürünler çıkartıyor. Dolayısıyla güle güle akıllı kamera. ( E bu da doğru tabii)

Antitez 3 (Akıllı kamera tarafına yontar gibi görünüp PC tarafına yontan):

Benim fabrikamda öyle bilgi işlemci, PC ci falan yok. Cebinde kontrol kalemi – tornavida ile gezen bakım elemanlarım var. Onlar da böyle dertsiz tasasız ayarsız kurulumsuz tıpkı sensör mantığı gibi çalışacak aletlerden anlar. Dolayısıyla bana akıllı kamera uyar. (Hmmm… işte en ilginç durum. Bu tür firmalar genelde gider en ucuzundan bir akıllı kamera alır, zaten para vermediği için iyi bir destek te alamaz, sonuçta şuna benzer bir fikir sahibi olur : “Bu kameralı kontrol yaş iş. Koy bir eleman, gözüyle kontrol etsin. Biz çoooook denedik, yapamadılar. Hiç bulaşmayın.”)

Antitez 4 (PC tarafına yontan):

“Ben  sadece kontrol etmek değil, birçok farklı ürüne uyarlayabilme, raporlar ve istatistikler alabilme, tüm sonuçları saklayıp icabında müşterime sunabilme, ayarları herkesin değiştiremeyeceği yetki seviyeleri tanımlayabilme gibi tonla özellik arıyorum. Ben bu çağda bu tür argümanlarla rekabet ediyorum ve 1 kuruşun peşine düşüyorum” gibi düşünüyorsanız akıllı kamera, akla bile getirilmemelidir.

(Not : bu arada zorladım kendimi ama akıllı kamera lehine yorulabilecek başka da bir antitez üretemedim. Yazıyı okuyup ekleme yapmak isteyen olursa, seve seve koyarım buraya)

Son olarak benim tezim şu :

Ben PC kullanıyorum ve akıllı kamera ile yapılamayacak sonsuz uygulama örneği sunabilirim. Dolayısıyla akıllı kamera sistemlerinin en gelişmişine bile tepeden bakma hakkım var. Eğer herhangi bir akıllı kamera firması, herhangi bir t anında bunun aksini ispat etmeye hazır olursa, o zaman tezimden seve seve vazgeçebilirim 😉

Diğer yandan; eğer PC tabanlı görüntü işleme sistemleri, akıllı kamera sistemlerine göre bu kadar bariz avantajlara sahipse, neden ülkemizde pek çok akıllı kamera satıcısı (entegratörü) varken, PC tabanlı çözüm sunan bu kadar az firma var? Cevap, akıllı kamera sistemi kurmak / ya da satmak daha kolay bir serüvendir. Herhangi bir ürünün distribütörü olursunuz, belirli bir reklam/satış/pazarlama çalışmasından sonra ürününüz piyasada iyi/kötü yer edinebilir. Benzer çalışmayı PC tabanlı sistemlerle yapabilmek için, firmanız herşeyden önce bir yazılımevi olmalıdır.  Yetişmiş nitelikli insan gücüne ihtiyaç duyacaksınız ya da çoğu zaman bu elemanları uzun süreli emek vererek kendiniz yetiştirmek zorunda kalacaksınız. Yapacağınız yazılımın, görüntü işleme gibi zor bir alanda olması bir yana aynı anda optik, elektronik gibi konulara da hakim olmak zorunda kalacaksınız. Tüm bunlar olurken, piyasa koşullarında rekabet edebilecek, iyice küçülen dünyada sadece yerel değil uluslararası rakipler ile boy ölçüşebilecek kaliteyi yakalamak zorunda kalacaksınız. Ve diğer sayısız başlık….

Sanırım, Mavis olarak bizim de en sevdiğimiz nokta tam da burası. Biz, %100 kendi sermayesi ve sadece görüntü işleme yazılımı ve ürünleri ile ayakta duran,  geldiği yer itibariyle tüm dünya çapında rekabet edebilen tek Türk firmasıyız. Bunun gururu az bir şey midir 😉

İstanbul Altın Borsası’nda

Mavis, Altın Borsasında her bir külçe altının üzerindeki üretici rafine logosu ve külçe seri no sunu okuyan shape matching – ocr uygulamasının testlerine başladı.

Karaköy Rıhtımda yer alan Altın Borsası, görüntü işleme uygulamaları için iyi bir mekan 😉

VYP ye bir standart kontrol daha eklendi

Mavis, Kameralı Kontrol yazılımı VYP ye, yeni bir standart kontrol daha ekledi : “Araparça Boy ve Yükseklik Ölçümü”.

Standart kontrol, kullanıcı tarafından görsel olarak parametreleri değiştirilmek suretiyle uyarlanabilen kontrollerdir. Mavis VYP, Standart kontroller (alan bulma, var-yok kontrolleri, pozisyon kontrolleri, renk kontrolleri vb.), Gelişmiş kontroller (karekod, ocr vb.) ve projeye özgü kontrollerden oluşmaktadır.

Araparça Boy ve Yükseklik Ölçümü :

Karmaşık parçalar grubunda belirli özellikleri bilinen bir parçanın seçilip, en boy yükseklik gibi değerlerinin ölçülebilmesine yarar.

Son yapılan ilave değişiklikle birlikte (01.07.2010) araparça ölçümünde döndürme işlemi, sonda değil başta yapılmaktadır. Böylece Clip Region (sp_eliminate_run) işlemi daha sağlıklı değer verdiğinden daha hassas ölçüm mümknü olmaktadır.

Yukarıdaki şekilde, mavi dörtgen içindeki civatanın boyunu ölçmeye çalışalım. Normalde mavi dörtgen içine, hem civata hem de somun girdiğinden, ilave kontroller yapılmaksızın sadece civatayı ölçmek mümkün değildir. Mavis VYP ye yeni eklenen “Araparça Ölçüm” kontrolü ile görsel olarak programlama yapmaksızın bu kontrol bildirilebilmektedir.

Şekilde görüldüğü gibi, Araparça kontrolü kullanılarak, somun ve civatadan oluşmuş şeklin sadece  civata kısmının boyu ölçülebilmektedir.

Görev Parametreleri

  • Standart ReduceDomain İşlemi
  • Standart ApplyThreshold İşlemi
  • Standart ApplySelection İşlemi
  • Clip değişkeni : ölçülecek araparçanın min ve max Run değeri (bu değerler arasındaki parçalar dikkate alınır)
  • CheckHeight : Yükseklik ölçümü isteniyorsa bool 1 (yes, on, ok, evet değerlerinden biri) kullanılır
  • CheckWidth : Genişlik ölçümü isteniyorsa kullanılır
  • CheckLong : Uzun kenar ölçümü isteniyorsa (en ya da boy, hangisi daha büyükse)
  • CheckShort : Kısa kenar ölçümü isteniyorsa (en ya da boy. hangisi daha kısaysa)
  • RHeight : minHeight..maxHeight arası değer (beklenen geçerli yükseklik değeri. CheckHeight değeri 1 ise anlamlı)
  • RWidth : minWidth..maxWidth arası değer (beklenen geçerli genişlik değeri. CheckWidth değeri 1 ise anlamlı)
  • RLong : minLong..maxLong arası beklenen uzun kenar değeri. (CheckLong değeri 1 ise anlamlı)
  • RShort : minShort..maxShort arası beklenen kısa kenar değeri. (SheckShort değeri 1 ise anlamlı)

alt programın HALCON ve C# kodlarını edinmek ve yorum yapmak için, blog sitesinde veya bizimle (info@mavis.com.tr) yazışabilirsiniz.

ilk Bakışta HALCON 10 a

HALCON 10, birçok yeni özellikleri ile birlikte neredeyse hazır. Final Release olmadığı için, yorum yapmak için henüz erken olmakla birlike, HALCON 9.0.2 ye göre radikal bir değişimden bahsetmek zor. (HALCON 7 den HALCON 8 e geçiş, gerek HDevelop ortamı, gerek Engine kısmına yapılan değişiklikler ile ciddi bir ilermelemeydi. HALCON 9.0 a geçişte, HDevelop daha kullanışlı hale getirilmiş, COM türü bileşenlerden .NET arabirimine geçiş daha fazla desteklenmişti.)

Alpha versiyonun ilk testleri sırasında göze çarpan yenilikler

Hedevelop ortamı gerek yetenek gerek görsellik açısından daha da geliştirilmiş. Burada da radikal bir değişimden bahsetmek zor olmakla birlikte, getirilen yenilikler HDevelop kullanımını daha da zevkli hale getirmiş.

Measurement Assistant

Daha önceden var olan assistant pencerelerine yeni eklenen Measurement asisstant, ilk kullanımda tüm ölçüm işlemlerine hizmet edebilecek yetenekte görülüyor. özellikle Fuzzy measurement öğeleri içermesi, World coorditanes işlemlerini (px, mm) otomatik yapabilmesi gibi avantajlar, programcının işini olabildiğince hafifletmiş.

Editördeki Yenilikler

Editör, code insight kısmına yenilikler getirmiş. Daha önce 9.0.2 de getirilen yenilikler biraz daha iyileştirilmiş. Gelişmiş editörlerde (mesela Visual Studio) olduğu gibi değişkenleri de içeren daha zengin bir code insight seçeneği gelmiş.

Runtime Yenilikleri

Program output windows yardımıyla, çalışan her bir satırı ve detay bilgilerini artık yeni bir pencerede izleyebiliyoruz. Statusbar da hint olarak görünen bilgiler, daha da zenginleştirilerek yeni pencereye taşınmış. Artık hangi operatör bloğunun ne kadar sürede çalıştığını anlamak vb. işlemler için Count_seconds ile milisaniyeleri saymaya son 🙂

Diğer tüm yenilikleri MVTec kendi sitesinden duyuracağı için Alpha test sonuçlarına burada ayrıntılı olarak girilmemiştir. Zaten MVTec bu aşamada HALCON 10 lisansının dağıtımını da sınırlamıştır.

3D Eşleştirme, Robotik

Mavis, Teknodrom firması ile başlattığı robot yönlendirme ve parça bulma yakalama ayıklama çalışmalarına yeni bir boyut ekledi. Robotun yakalayacağı parçaları öğrenebilmesi için son derece pratik bir arayüz geliştirildi.

Sistemin Çalışması

Öncelikle kameranın dış etkenlerden (değişken ışık kaynakları, gün ışığı vb.) etkilenmemesi için düzgün aydınlatılmış bir ortam oluşturulur. Bu ortam robotun çalışmasını engellemeyecek şekilde yapılmalıdır.

1. İşlem olarak, kameraya yakalayacağı parçalar öğretilir. Her parça farklı bir yerinden tutulmak istenebilir. Tutma noktası parçanın belirli köşeleri, uçları gibi daha önceden tahmin edilemeyen bir yer olabilir. Robot operatörü, parçanın ideal tutma noktasını,  kameralı görüntü işleme yazılımında bir değişiklik istemeden (programlamaya ihtiyaç olmadan) kolayca gösterebilmelidir. (Programa  tutma noktası öğretilmelidir) Programda hiç değişiklik yapılmadan son derece kolay bir arabirimde (UI) parçalar sisteme tanıtılabilmelidir. Mavis’in kendi geliştirdiği sistem bu sorunu en kolay şekilde çözmüştür.

Menüden “yeni parça öğretme” işlemi seçildiğinde, kameranın altında bulunan parçanın resmi ekranda belirir. “Öğretme İşlemine Başlamak İstiyor musunuz?” sorusuna Evet dendiğinde, interaktif bir şekilde tutma noktası kullanıcıdan alınır.

Öğretilecek parçanın en ideal parça olmasına özen gösterilir. Buna rağmen ekranda parça sınır çizgileri belirlenir ve kenar iyileştirme algoritmaları ile çapak ve pürüzler ön işlemden geçirilerek temizlenir.

Bu noktada sistem parçanın modellenmiş ve temizlenmiş halini model kodu ile kaydeder. Herhangi bir görüntü işleme programı ile (Paint, Photoshop vb.) bu modellenmiş fotoğraf üzerinde daha da hassas çalışmalar yapılabilir. (Filtreleme, yuvarlatma, kenarları düzleştirme vb.)

Üstelik, tüm bu işlemler gerçek parça resmi yerine parçanın direk CAD çizimi baz alınarak ta yapılabilir.

Program çalışma anında, öğretilen parçayı tanıyacak ve tutma noktasının koordinatlarını ve açılarını robota iletecektir.

Sistem tüm robotlarla haberleşebilecek altyapıya göre tasarlanmıştır. Testler ve uyarlamalar Teknodrom firmasında Motoman Robot kullanılarak yapılmıştır. Haberleşme olarak seri port ve dijital Input/output modülü kullanılmıştır. Ethernet haberleşme için de arayüz geliştirilmiştir. Sistem Fanuc, kuka gibi robotlar ile de çalışabilecek şekildedir. Test ve geliştirmeler; Teknodrom firmasından Emrah Hünerlitürkoğlu, Mavis firmasından Mustafa Sarı ve Hüseyin Çelik tarafından gerçekleştirilmiştir.