renkli topları ayırt edebilen robot kol projesi

Başlatan fthdmrl, 15 Temmuz 2013, 23:19:08

fthdmrl

merhaba arkadaşlar bu konu proje hakkında c ile yazılmış bir proje yapmayı düşünüyorum bu konuda yardımı olacak arkadaşlar varmı fikirlerine ihtiyacım olucakta.

Gökhan BEKEN

Reng'i algılayamazsınız ancak LDR yi toplara yaklaştırarak hangi rengin LDR nin direncini ne kadar değiştirdiğini ölçebilirsiniz. Bu değerler hep aynı geleceğinden ölçtüğünüz değerlerin hangi renk olduğunu anlayabilirsiniz. Yani önce tek tek(kaç çeşit istiyorsanız) renklerin LDR dirençlerini mcu'ya tanıtacak, sonra gösterilen renklerin direnç değerlerine bakıp daha önceden tanıttığınız direnç aralığına göre yorumunu yapıp göstereceksiniz.
Örnek:
LDR yi maviye tuttunuz 100K-120K arası değer verdi
LDR yi kırmızıya tuttunuz 120K-140K arası değer verdi
LDR yi yeşil tuttunuz 140K-160K arası değer verdi
Bu değerleri mcu ya kaydettiniz.
Sonra LDR'ye bir renk okuttunuz okuduğunuz değer 110K ise bu renk Mavidir.
Benim fikrim bu. Başka yöntemlerde vardır. Mesela topları LDR ile değil fotoğraf makinası ile görüntüsünü kaydedip piksel piksel yorumlayabilirsiniz. O sizin amacınıza kalmış.
Özel mesaj okumuyorum, lütfen göndermeyin.

z

LDR ile rengi neden ayirtedemeyesinki?

3 ayri LDR nin onune kirmizi yesil mavi filitre koyarsan her bir LDR uzerlerine dusen isigin filitreden gecen bilesenine tepki verecektir.

Denedimmi? Denemedim.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

gumush

LDR onune filtre calisan bir sistem denedim ancak renkleri iyi tanimlamak icin aydinlatma kosullarinin elverdigince standart olmasi gerekiyor. Ama denenebilir.

Tabii cok detay olmadigi icin canlandiramadik ama kolun topu yakalamasi vs gibi bir amacda olacak ise o zaman bir kamera yardimi ile goruntu isleme yapmak gerekecektir.
Hikmet Gumus  izmir

serdararikan

ldr ile renk ayort edemezsin kontrast belki.bir adet fototransistor bu transistörün etrafına R-G-B ledler döşeyeceksin.sıra ile ledleri yakıp adc ile her renk için analog değerleri okuyacaksın.böylece elinde rgb kodu olacak.bu kod senin renk bilgin. bunlarla uğraşamam dersen renk sensörleri var onlardan alıp seri iletişimle direk RGB olarak renk bilgisini okuyacaksın

ayhani

Neden buradan başlamıyorsunuz?


http://www.direnc.net/RENK-SENSORU,PR-6570.html

mesaj birleştirme:: 16 Temmuz 2013, 01:04:08

Alıntı yapılan: serdararikan - 16 Temmuz 2013, 01:02:59
ldr ile renk ayort edemezsin kontrast belki.bir adet fototransistor bu transistörün etrafına R-G-B ledler döşeyeceksin.sıra ile ledleri yakıp adc ile her renk için analog değerleri okuyacaksın.böylece elinde rgb kodu olacak.bu kod senin renk bilgin. bunlarla uğraşamam dersen renk sensörleri var onlardan alıp seri iletişimle direk RGB olarak renk bilgisini okuyacaksın

Bunu yapmışlar zaten. Bence uğraşmaktansa hazır sensör daha iyidir.
http://www.direnc.net/RENK-SENSORU,PR-6570.html
En iyi bildiğim şey hiçbir şey bilmediğimdir.

z

Alıntı yapılan: serdararikan - 16 Temmuz 2013, 01:02:59
ldr ile renk ayort edemezsin kontrast belki.bir adet fototransistor bu transistörün etrafına R-G-B ledler döşeyeceksin.sıra ile ledleri yakıp adc ile her renk için analog değerleri okuyacaksın.böylece elinde rgb kodu olacak.bu kod senin renk bilgin. bunlarla uğraşamam dersen renk sensörleri var onlardan alıp seri iletişimle direk RGB olarak renk bilgisini okuyacaksın

Filitre koymadan olmaz.

Diyelimki ayni parlakliktaki yesil renk ADC de 100h degere neden oldu.
Kirmizi ise 80h.

Yesil rengin parlakligini kistiginda o da 80h deger urettirir. Dolayisi ile renk ve parlaklik birlikte belirleyici olur.

Bu nedenden dolayi 3 ayri sensor ve 3 ayri filitre kullanmak gerekir.

Bence de sensor yapimi ile ugrasilmamali. Hazir sensor yada ucuzundan bir kamera yeterli.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

atioky_216

İlginç... Nedense kimse görüntü işleme denilen varlıktan söz etmemiş.

Tavsiyem madem C ile geliştirmek istiyorsun o zaman bir tane openCV open source görüntü işleme kütühanesini indirip çalışmalara başlaman, baya işlemci türünü desteklese de muhtemelen intel-amd türü kullanıyorsun ve windows ürünü işletim sistemin var. Üstelik bildiğin C ile yazıyorsun, tabi azıcık pointer vs. gibi karışık gelen kısınmlarına özel ilgi göstermen gerekiyor. Ama 1-2 haftada aşılmayacak problem yok yeter ki okuyabilecek kadar dil bilgin olsun. Bu arada içinde bir ton filtre fonksiyonları vs. bulunduğu için çok kullanışlı.

Ben 1-2 sene öce full hd film (30 fps) i, yazdığım  basit C kodu ile her bir frame' i ayrı filtre türlerine sokup aynı zamanda -neredeyse- gecikmeyi izleyicilere hissettirmeyecek şekilde aynı anda işleyip aynı anda oynatıp izliyordum.

Bu kütüphaneyi bizim emektar DevC++ ile de kullanabilmektesin. Robot kola gelince o kendi kendine bir iş ama bir şekilde mcu-devre tasarımı ile çözdün diyelim. Buradan sonra PC uygulamasındaki C ile seri port benzeri dış dünya kullanımı windowsun eski sürümlerinde çok basitti, mcu gibi kullanılıyordu. Yeni sürümlerde bana karışık geliyor onun için C#, labview benzeri dil-programları kullansam da aslında boosty benzeri çok kütüphanede kullanıma hazır. Kaldı ki özellikle bu alanda çalışan şirketler özellikle bu konuda deneyimli insanları özellikle aradıklarını belirttiklerini okuduğum için ilerisi için de faydasını görürsün muhtemelen.


Ama desen ki böyle karmaşa yerine her türlü portu kolaylıkla kullandığım C#' ı kullanmak istiyorum o zaman da doğrudan C# desteği veren
egmuCV kullanırsın. Ama ben openCV' i daha çok sevmiştim.


Bu konuya ilgili isen ceviz nette bilgili-uğraşan insanlar var ve derindeli mavi' deki büyüğümüz yeterince öğretici site-dokumanlar hazırlamış durumda.

kimlenbu

Mikroişlemciler dersinde renk ayrımını 3 led (kırmızı,mavi,yeşil), 1 adc, 1ldr ile yapmıştık. sadece temel renkleri ayırabiliyorsun. Püf noktası kalibrasyon için ledlere takacağın ön dirençlerin seçimi. (biz yazılımla uğraşmayalım diye kalibrasyonu ön dirençler ile yaptık)

biz kırmızı, yeşil, mavi ledleri sırayla yakarak nesne üzerinden yansıyan ışığı ölçtük, kırmızı bir nesne üzerinden en çok kırmızı ledin ışığı yansıdığından bunu 8 bitlik çözünürlüğü olan bir adc ile tespit edebildik.

yalnız 8051 ve assembly kullarak yapmıştık. üstünden 10 sene geçtiği için proje dosyalarını bulabilir miyim emin değilim, hafta sonuna doğru hatırlatırsan kurcalarım.

hareketli kısımda ise şöyle bir şey kullanmıştık :

1 redüktörlü dc motor (kolun sağa sola hareketi için)
1 dc motor (tutma mekanizmasını açıp kapatmak için)
4 röle (redüktörlü motorda yön kontrolü yapacak h bridge için)
bdx53 ve bunu sürmek için daha küçük transistörler.
gövdeyi de paramız olmadığı için ahşaptan yapmıştık :)

ekip olarak yapacaksanız en fazla 1 haftaya projenin altından kalkarsınız. kolay gelsin

fthdmrl

çok teşekkür ederim değerli bilgileriniz için.

LukeSkywalker

Ben olsam Tek bir beyaz ışık + 3 LDR+ 3 filtre ile çözerim.  Pembeyi falan da ayırt etmesi için üçünü de okurum ve hangisi daha büyük çıkıyor ise onu seçerim. Mesela pembe de kırmızı adc'nin değeri daha yüksek çıkacaktır..