Ethernet Üzerinden Yüksek Hızda Görüntü Aktarma

Raspberry pi bir bilgisayara ethernet aracılığla bağlı olacak. Ethernet kablosu 30 metre uzunlukta. Ayrıca bir ek donanım (modem,rooter) gerek olmadığını düşünüyorum. Bu konuda da görüşlerinizi bekliyorum. Ana konuya gelecek olursak, raspberry pi’a bağlı olan usb kameradan olabildiğince az gecikme ile görüntü aktarmak istiyorum. Görüntü aktarmayı birçok yöntemle başardım. Sizlerin önerebileceği çok daha hızlı yöntemler var mı? Projedeki diğer uygulamaların python ile yazılmasından dolayı python ile kullanabileceğim yöntemler önerirseniz sevinirim. Fakat başka bir dil kullanmam daha avantajlı olacaksa denemeye hazırım.

Eğer kablo üzerinden veri aktarımı yapacaksanız seri haberleşmeyi de deneyebilirsiniz. Python için pyserial kütüphanesini kullanabilirsiniz.

Neyden cok daha hizli?

Seri portlarin standart hizlari maksimum 115,200 bit/s, kablo protokolunun de yaklasik %40 (3/8) overhead’i var. Teorik olarak bir hiz limiti yok fakat pratikte 2 Mbit/s’den fazlasini gormedim.

RPi’nin ethernet’i ise “100 megabit”, pratikte 30-50 Mbit/s civari calisiyor diye hatirliyorum. RPi 4’e gigabit ethernet bile geldi ama nasil calisiyor bilmiyorum.

Ethernet’e alternatif olarak HDMI veya USB onerebilirim.

1 Beğeni

Anladım, hız hakkında pek bir bilgim yoktu zaten.

Bu soruyu soracağınız tahmin ediyordum. Bir kısıtlama belirtmek istemedim ve son birkaç test daha yapacaktım. Şuan test ettiğim kütüphaneler: İmagezmq, Pyzmq,Vidgear ve türevleri. Aslında temelde hepsi Zeromq kullanıyor. Geliştirmeler yapılmış anladığım kadarıyla. Bu yöntemlerden daha yüksek hızlara nasıl çıkabiliriz? Projede muhtemelen RPİ 4 kullanacağız. HDMI ve USB kullanımını biraz daha açabilir misiniz? 30-35 metre uzaklığa ileteceğiz bu görüntüyü. Ne kadar verimli olurlar?

Amac USB kameradan gecikmesiz goruntu aktarmak mi? 30 metrelik USB uzantisi yok mu?

Neden Raspberry Pi kullaniliyor? Ethernet uzerinden goruntu aktarabilen kameralar var, bilgisayara ihtiyac duymuyorlar.

Neden Python kullaniliyor? ffmpeg veya vlc gibi hazir goruntu stream eden programlar denediniz mi?

Contexti bilmeden alternatif onermek zor. HDMI/USB hiz olarak ethernet’le karsilastirilabilen teknolojiler oldugu icin soyledim, diger parametrelerin uygunlugu icin arastirilmalari lazim. (30 metrelik HDMI kablosu ve HDMI ciktili bir kamera varsa mesela 0 kodla cozulebiliyor olabilir problem.)

RPİ projede farklı amaçlar için de kullanılıyor. Zaten kullanıldığı için usb kamera görünütüsünü RPİ ile aktarmak bana mantıklı geliyor. Sistemde zaten diğer işler için kullanılan bir ethernet kablosu olacağı için kamera görünütüsünü de bu şekilde aktarmak istedim. ffmpeg veya vlc ile deneme yapacağım. Ayrıca USB ile 30m de veri iletişiminde hız kaybı ne kadar olur. Ethernet ile yarışabilecek kadar az mı?

30m’lik kablonun destekledigi hiza bagli.

Ama genel olarak mesafe hiz degil, sinyal kaybina yol acar, bu da medyumdaki gurultunun sinyale oranini arttirir. Bu sorunu kimi protokoller hiz dusurerek, kimileri sinyali arttirarak, kimileri baglantiyi keserek cozebilir.

Ama teorisi onemli degil, pratikte butce ve zaman dahilinde satilan alinabilen kablolarin desteklediklerini soyledikleri hizlari arastirmak lazim.

Hazir RPi ve hazir ethernet baglantisi varken bunun uzerinden goruntu stream etmeyi dusunmek cok mantikli. O zaman dogrudan “su kamerayi su codec ile encode edip bu protokol uzerinden su hedefe yolla” demeye izin veren programlari deneyiniz: vlc ve ffmpeg. Bir suru platformda calisan ozgur yazilimlar olduklari icin stream’in iki tarafinda da kullanilabilirler, ne yapilicagina bagli olarak.

Transfer hizinin neden onemli oldugunu hala anlayabilmis degilim. Kameranin bir maksimum hizi yok mu zaten, onun ustune cikan her transfer cozumu okey degil mi?

1 Beğeni

Transfer hizinin neden onemli oldugunu hala anlayabilmis degilim. Kameranin bir maksimum hizi yok mu zaten, onun ustune cikan her transfer cozumu okey degil mi?

Aslında yanlış bir ifade kullanıyorum haklısınız. Kamera görüntüsünün iletiminde bir gecikme oluşmamasını istiyorum. Bir su altı aracı yapmaya çalışıyoruz. Haliyle haberleşmeyi kablolu olarak yapıyoruz. Gücümüz de kablo ile iletiliyor. Pil kullanmıyoruz. RPİ kullanılma sebebi motor kontrollerinin yapılması. Manuel olarak aracı kontrol ettirdikten sonra görüntü işleme ile bazı hareketleri otonom olarak yapmasını sağlayacağız. Bu yüzden de RPİ kullanıyoruz. Aracı sürecek kişi için kamera görüntüsünün merkeze olabildiğince az gecikme ile iletilmesini istiyoruz ki bir kaza durumu yaşanmasın.

30 metre kablonun sebep olduğu gecikmenin umursamanıza sebep olmayacak kadar az olacağını düşünüyorum.

Aslında ben de bu şekilde düşünüyordum. Fakat bulunduğum ildeki teknik üniversitedeki daha önce bu işle uğraşmış birkaç kişiyle konuşma fırsatı buldum. Etkili olduğunu öğrendim. Testlerimi kendim kısa bir ethernet kablosu ile yapıyorum. Haliyle gayet iyi sonuç alıyorum. 30 metrelik ethernet kablosu alıp test etmeden önce sizlerin de konu hakkındaki görüşlerinizi almak istedim. Yardımcı olmayan çalışan herkese teşekkür ederim.

Ah, evet. Buradaki terim latency, yani gecikme. Dogrudan kablo baglantisi olacagi icin hic bir sekilde gecikme sorunu olacagini sanmiyorum, RPi’nin vidyoyu encode etme suresi disinda. Cogu vidyo codec’inin de sikistirma parametresi var, bitrate (gereken bandwidth, hiz) ile CPU kullanimi, latency arasinda karar verilmesini saglayan.

Bu arada hem kontrol hem de telemetri datasi iletebilen ozgur ROV yazilimlari mutlaka vardir, onlari da inceleyin. (Acik/standart protokoller varsa onlari kullanmak da uzun vadede bas agrisi azaltir.)

1 Beğeni

Çoook uzun süre önce konuşulmuş ama,yinede belki bir faydası olur diye düşündüm.

Kablonun kalınlığı genelde kaliteyi gösteriyor.Ama her zaman böyle mi bilmiyorum.Evde 2 tane HDMI kablosu var ve ince olan 30cm mesafeden 2sn. gecikme yaşatıyor.Markası yok.Ancak Sony’nin diğerine göre daha kalın olan kablosu 3 oda ötede yaklaşık 0.5sn. gecikme yaşatıyor.Belki faydalı olur.

2 Beğeni