OCR ve VIN (Şase No) Okuma

Aracın gövdesi üzerine yazılı VIN numarasını, 2 mt. kadar yüksekten okuyup OCR etme işi, gerçektende zorlu bir çalışmadır. (Mavis olarak nadiren telaffuz ettiğimiz bir kelime olmakla birlikte) Ford’da ki proje, sadece VIN (şase numarası) okunması işlemi değil, yazım kalitesinin (ve tabi doğruluğunun) da tesbit edilmesi işlemi idi.

75 mm. lens, 1.3 MP ethernet kamera, elektronik balast ve fluoresan aydınlatma ile kurduğumuz setup sonrası aldığımız ilk fotoğraflar, düşündüğümüz kadar zorlanmayacağımız sonucunu çıkardı. Gerçektende HALCON default OCR fonksiyonları ile bile, %90-95 lik bir başarı yüzdesi yakalanmıştı. Kendi öğreteceğimiz karakter setleri ile, bu oran %100 e çıkarılabilirdi.

Bugün,  pratik – güçlü – akıllı bir OCR arayüzünü VYP içine entegre etmeyi düşünüyorum. Son zamanlarda OCR ile ilgili çok talep olduğundan tüm projelere uyarlanabilir olması gerekiyor.

Ford da PVS sisteminden gelen verilerin algılanması sağlandı. USB Seial converter şeklinde çalışan cihaz bazı sorunlar çıkarttı. İlginç olarak PCI slot üzerinden Serial connector olarak çalışan cihaz gayet düzgün çalıştı. (Kurulum seri portu olan bir PC de olduğu için böyle bir sorun yaşanmayacaktı)

Görünüşe göre, OCR işleminde de pek bir sorun çıkmayacak. Sonuçta başlangıçta hayli zor görünen, yürüyen hat üzerinden Şase no okuma işlemi düşündüğümüz kadar uğraştırmayacak.

Ya da biz artık OCR konusunda çok fazla yol katettik ve görüntü işleme ile ilgilenen birçok firmanın teklif bile vermek istemediği konular, bizim için neredeyse hazır çözüm durumunda.

Eski Projelere Destek (6 Kameralı Fren Kontrol Sistemi)

Bugün, 4 yıldan daha uzun bir süre önce kurmuş olduğumuz bir projeye güncelleme yapmak gerekti. En başta projede değişiklikler yapabilmek (yazılımı re-compile edebilmek) için HALCON 7.1 i yeniden kurmak gerekti. Bunun için (ne olur ne olmaz) HALCON 8.1 ve HALCON 9.0 sürümlerini bilgisayarımdan kaldırdım. Kurulum yapıldıktan sonra, istenen değişikliklere göre modifiye edilmiş versiyonu derleyip çalıştırdım. Neyseki herşey yolunda gitti.  Projede Native .NET kütüphaneleri yerine COM+ teknolojisi kullanılmıştı. Aslında değişen çok bir şey olmuyor. Nihayetinde aynı HALCON DLL leri çağırılıyor. Yine de en azından kodlama kalitesi olarak Native .NET yazılımı çok daha güçlü. Hiç değilse, değişken tanımlarını yapabiliyorsunuz. COM+ kulanımının gerektirdiği object kullanımı başta kullanışlı gelse de, VB programcısı değiliz ya, bir C# programcısı her değişkeni kendi tipinde tanımlamak ister. Değişken tanımlamada kişisel olarak takıntılı olduğumu kabul ediyorum. Name Condition olarak Pascal Case kullanımından, Camel Case kullanımına geçmek bile benim için zordu. Bir de bunlara sürekli boxing (type cast) işleçlerini eklemek hepten eziyet.

Neyseki tüm bunlar COM ile birlikte geçmişte kaldı da nadiren eski projelere destek vermek dışında günlük hayatta pek karşımıza çıkmıyorlar.

Bugünkü proje için Sabah 7:30 gibi yola çıktım. Bursa’ya gittim. Çalışma 3 saat sürdü. Renault Yeni Megane ve Fluence modelleri için fren kapağı tasarımları ve kontrolleri programa bildirildi. Programın exe si (uygulaması) yanı sıra UserControl modülü için DLL güncellemesi yapıldı. (MyViewControl isimli DLL i de güncellemek gerektiğini bulmam pek kolay olmadı) Mevcut kontrollere ilaveten Aktif ROI de, Intensity kontrolü de ekledim. Böylece farklı kapağın hattan kazara geçme şansı iyice sıfıra yaklaştı.

Birkaç saatliğine de olsa, HALCON 7.1 ile çalışmak zorunda kaldığımda, MVTec firmasının özellikle 7.1 – 8.0 geçişinde HDevelop tasarımında devasa yol katettiğini yeniden farkettim. Aynı geliştirme sürecini 8.0 dan 9.0 a geçişte söylemek pek mümkün değil. Bu durum artık görsel olgunluğa erişildiği şeklinde yorumlanabilir belki. Yine de bir sonraki versiyonu merakla bekliyorum.

Kameralı Robot Yönlendirme

Teknodrom firması ile birlikte geliştirilen bu projede amaç; konveyör üzerinde rastgele pozisyonda gelen parçaların, robot tarafından alınıp belirlenen bir yere yüklenmesini sağlamaktı. Daha önceden Teknodrom’da Emrah Hünerlitürkoğlu ile birlikte bilgisayar – robot arası seri protokol üzerinden haberleşme arabirimi geliştirmiştik. Elimizde hazır olduğu için aynı protokolü kullanarak bu projeye devam ettik. (İlerleyen aşamalarda, ethernet üzerinden haberleşmeye geçecektik.)

Teknodrom Motoman Mavis Robot Yönlendirme

Projeye başlamadan önce, Teknodrom parçaları yakalamak için özel olarak Gripper geliştirdi. Projenin ilk gününde, Mavis tarafından Emre, Teknodrom tarafında Emrahla birlikte sistemin çalışacağı ortamı oluşturup, ilk fotoğrafları aldı. Gelen fotoğrafları inceleyip daha iyi bir sonuç almak için kamerayı ve lensi değiştirdik. Nihai setup (kurulum) sağlandıktan sonra, gerçek  sistem üzerinde çalışılmaya başlandı.

2. gün ben  yazılım üzerinde ben çalışmaya devam ederken, Emrah gripper ile manual olarak nesneleri yakalamaya çalıştı. Sonuçta yazılım gerekli koordinatları bulacak, gripper ise sorunsuz çalışacak hale getirildi. Artık yapılması gereken bilgisayar ile robotu konuşturmaktan ibaretti. Bu konuda en çok vakit harcadığımız nokta, yakalanacak nesnelerin farklı farklı olmasından dolayı her birinin tutma noktasının kendine özgü koordinatlar içeriyor olmasıydı. Boru şeklindeki parçayı farklı, dirsek şeklindeki parçayı farklı pozisyonlardan yakalamak gerekiyordu. Sonuçta her parça için sanal yakalama noktası belirleyip yazılımın bu sanal noktaya göre koordinatları robota iletmesiyle sorun çözüldü. (Müjdat Bey’in soruna el atmasıyla 🙂 )

Projenin 3. günü gece yarısı, tüm sistem sorunsuz ve seri olarak çalıştı. Böyle bir proje için 3 gün rekor derecede kısa bir süre sayılabilir. Daha önceden Mavis ve Teknodrom firmalarının  birlikte çalışmış olmasının getirdiği avantajları kullandık. Elimizde hazır çözümlerimiz vardı. Yine de en önemli faktör, Mavis ve Teknodrom firmalarının kendi alanlarındaki profesyonelliklerinde yatıyordu. Kamera Kontrollü Robot Otomasyonu, böylece hayat bulmuş oldu. Yorgun geçen 3 günün sonunda sistemin daha da efektif çalışması için bazı iyileştirmelere karar verildi. Robotun daha hızlı çalışmasını sağlamak için, robot hareketini sürdürürken bilgisayarla konuşabilmesi (paralel processing) yapılacaktı. Bu değişiklikler PC tarafında da benzer bazı değişiklikleri gerektiriyordu. Robotla hem seri port üzerinden hem de digital Input / output (24V) modül üzerinden haberleşiliyordu. Bu durum, Hem robotun, hem PC nin senkronize olmasını gerektiriyordu ki,  tamamıyla hareketli bir sistem üzerinde bu senkronizasyonu sorunsuz sağlamak pek kolay olmadı.

Tüm sistem, saat 10:30 gibi müşteriye demo kurulum olarak gösterilecekti. Sabahın erken saatlerinde paralel processing denemeleri yapıldı. Eğer bir sorun çıkarsa, zaten çalışan bir versiyon elimizde vardı. Bu garantiyle, son dakikaya kadar paralel processing denemelerine devam edildi. Nihayet demo başladığında, sistem kısaca tanıtılıp robot PLAY modunda çalıştırıldı.

Sonuç başarılıydı. Nihayetinde bu bir demo sistemdi ve amacına ulaşmıştı. Bundan sonra yapılması gereken, sistemi daha da iyileştirmekti.

Bugünlerde bu iyileştirmeler üzerine çalışmaktayız.

Bunlar genel olarak;

  • Parçaların tanıtılması amacıyla Autocad dxf dosyasından yüklenebilmesi
  • Ortam ışık şiddetinin değişiminden sistemin etkilenmemesinin sağlanması
  • İlave kontrol fonksiyonları ve görsel arayüzler (Ekranda robot hareketlerinin izlenmesi, sesli kontrol vb. gibi)

Kullanılan Bileşenler :

  • Motoman Robot
  • iDS uEye renkli kamera
  • Mavis VYP Yazılımı
  • Mavis USB DIO Modülü (Elektriksel Haberleşme İçin)
  • Seri Haberleşme Kablosu
  • Konveyör
  • Test Parçaları (Dz boru ve dirsek şeklinde boru)
  • Sensör
  • Bilgisayar (Windows İşletim sistemi yüklü)

Sistemin Çalışması :

  1. Rastgele yüklenen test parçaları konveyör üzerinde ilerler
  2. parçalar sensör tarafından algılandığında Robot Mavis VYP programına işaret gönderir (24V. sinyali, Mavis DIO modülünün girişine iletir)
  3. VYP yazılımı, sensörün önündeki parçanın fotoğrafını çeker ve çevresini (contour), ağırlık merkezini, dönme açısını 3 eksende belirler.
  4. Kartezyen koordinatlardaki veriyi, daha önceden kalibre edilmiş olarak, robotun koordinat sistemine çevirir, Robotun tutacağı (X, Y, Z) koordinatlarını ve dönme açılarını (RX, RY, RZ) seri port üzerinden robota iletir.
  5. Robot verileri aldım sinyali gönderirse iletişim başarıyla gerçekleştirilmiş demektir ve robot parçayı belirtilen yerden alarak, daha önceden belirlenmiş hedef konuma taşır.
  6. Robot parçayı hedef konuma yerleştirmek veya geri dönmek için hareketini sürdürürken, VYP yazılımı yeni bir parça gelmişse, benzer şekilde bu parçanın koordinatlarını da robota iletir.
  7. Sistem döngüsel bir biçimde bu şekilde tüm parçalar için devam eder

Projenin Zorlukları :

  • Farklı parçaların, farklı pozisyonlardan tutulmak zorunda olması, dolayısıyla robota verilecek konum bilgilerinin parça bazında değişiyor olması
  • Sistemin gece-gündüz değişen ışık şiddeti koşullarında %100 çalışabilmesi
  • Konveyörü durdurmadan ve robotu bekletmeden çok hızlı fotoğraf alınıp işlenmesi, robotla haberleşmenin robot hareketini sürdürürken gerçekleştirilebilmesi

Proje Geliştirme Sürecinden Resimler