Browsed by
Aylar: Temmuz 2018

Cubetto ve DOC Eğitici Konuşan Robot – Oyuncak İncelemesi

Cubetto ve DOC Eğitici Konuşan Robot – Oyuncak İncelemesi

Bu yazımda teknik protokol vs. gibi şeylerden sıkılanlar (ve 4-7 yaş arası çocuğu olanlar) için bir oyuncak incelemesi yapmaya karar verdim. Aslında ana konularımızdan tam kopmuş sayılmayız, Cubetto ve DOC çocuklara algoritma ve programlamaya giriş yapabilecekleri bir oyuncak.

İlk olarak STEM kavramından başlayalım. STEM, Science, Technology, Engineering ve Mathematics (Fen, Teknoloji, Mühendislik ve Matematik)  kelimelerinin baş harflerinden oluşan bir kısaltma. STEM, bu kavramları ayrı ayrı değil de birleştirerek öğretme felsefesine dayanıyor ve dünyada eğitim giderek bu yönde şekilleniyor. STEM eğitimi; teorik bilginin uygulamaya, ürüne ve yenilikçi buluşlara dönüştürülmesini amaçlayan, öğrencilerin fen bilimleri, teknoloji, mühendislik ve matematik derslerinde öğrendikleri bilgileri bir bütünün parçaları olarak görmelerini sağlayan dünyada birçok ülkenin öğretim programlarına dâhil ettiği bir eğitim yaklaşımı olma özelliğini taşıyor (Kaynak). Bu konsepte uygun oyuncakları da gün geçtikçe oyuncak dükkanlarında görmeye başlıyoruz. 

STEM ve Açılımı

Cubetto

Bu tür bir oyuncak arayışım ilk olarak bir Kickstarter projesi olan Cubetto ile tanışmamla oldu. Cubetto fikir ve görsellik olarak çok güzel olmasına rağmen gerek o zamanlarda ülkemizde bulunmayışı ve gerekse yurt dışında nispeten yüksek fiyatı yüzünden beni başka arayışlara itti. İlk olarak aklıma “Benzer bir oyuncağı Arduino ile kendim yapabilir miyim?” düşüncesi geldi (DIY kafası). Biraz reverse engineering yapıp incelediğimde yapının basitçe şu şekilde kurgulandığını gördüm : 

  • Programlama ünitesinde bir flowchart oluşturulmasına imkan sağlayan bir tabla ve buna takılan küçük renkli bloklar bulunuyor. Bu 4 farklı renkli bloklar robota programlanmak istenen komutları (sağ, sol, ileri, fonksiyon vs.) içeriyor. Blokların içerdiği bilgi, tablaya bloklara gömülü mıknatıslar tarafından iletiliyor. Ünitenin altında bu mıknatısları tespit eden hall effect sensörler bulunuyor. Bu sensörlerden alınan bilgi bir mikrodenetleyici vasıtası ile flowchart a dönüştürülüyor ve bu bilgi robota bluetooth üzerinden aktarılıyor. 
  • Robotun içinde ise bir alıcı ve aynı şekilde bir mikrodenetleyici mevcut. Hareket için ise iki adet step motor ve tekerlekleri var. 
  • Yere serilen 6×6 kare içeren bir kumaş alan ile robot verilen komutlara göre ilgili karelere gidebiliyor. 
  • Örnek olarak tabla üzerinde 3 adet kırmızı, 1 adet mavi ve tekrar 2 adet kırmızı blok taktığımızı düşünelim. Bu durumda robot 3 kare ileri, sol ve 2 kare ileri gidiyor.
Cubetto Robot, Tabla ve Kumaş Oyun Alanı

Eğer siz de Cubetto’yu detaylı incelemek isterseniz bu DIY Assembly Guide işinize yarayabilir.

Cubetto

DIY? – DOC?

Cubetto’yu inceledikten sonra “benzerini nasıl yapabilirim?” diye düşünürken aklıma programlama ünitesi ile robotu birleştirmek geldi. Komutlar robotun üzerine yerleştirilecek düğmeler ile girilebilir, bu sayede hem oyuncak sadeleşmiş olur hem de maliyet avantajı sağlanmış olurdu. Bu kurguları kafamda düşünürken bir gün oğlumla oyuncak dükkanının birini gezerken Clementoni’nin “DOC” oyuncağını gördüm:

DOC Eğitici Konuşan Robot

Clementoni düşündüğüm her şeyi yapmıştı, düğmeleri robotun üzerine koymuş ve böylece hem ürünü sadeleştirmiş hem de maliyet avantajı sağlamıştı! Hemen oğluma gösterdim, o da beğenince oyuncağı satın alıp evin yolunu tuttuk.

DOC Robot ve Oyun Tahtası

Kutunun içinden tahmin edebileceğiniz gibi robot, yapboz şeklinde kurulup kaldırılabilen ve iki yüzünde baskı olan kartondan bir rota tahtası (yapboz şeklinde olduğundan halı üzerinde oynanması zor oluyor, o yüzden düz ve sert bir zemin üzerine kurmanız gerekiyor), kodları önceden belirleyebilmeniz için küçük kare kartlar ve oyun hedef kartları çıkıyor. 

  • Rota tahtası üzerindeki rotalar üzerinde daha önceden belirlenmiş olan hedeflere ulaşmak için DOC’u üzerindeki düğmeleri kullanarak basit bir şekilde programlamanız gerekiyor, örneğin robotu tahta üzerindeki gömleğin olduğu yere götürüp daha sonra kuru temizleme dükkanına götürmeniz isteniyor. (Bu kısım algoritma, programlama ve koordinat düzlemi 101 dersi).
  • Bu görevleri tamamlarken bir yandan da tahta üzerine konulmuş engellere takılmamanız gerekiyor (Bu kısım çocuğun mantıksal düşünme ve problem çözme yeteneklerini geliştiriyor). 
  • Tahta üzerinde harfler, kelimeler, renkler, hayvanlar, sayılar gibi STEM’e uygun kavramlar mevcut. Bu sayede çocuklar oyun oynarken bu konular hakkında da bilgi sahibi olabiliyorlar.
  • DOC aynı zamanda Türkçe konuşuyor bu sayede bir nevi çocukla etkileşimde oluyor.

Robotun free (serbest), edu (eğitim) ve game (oyun) olmak üzere 3 farklı modu var. Bizim favorimiz ise game modu. Bu moda getirdiğinizde ise robot oyun tablasındaki yerini bilerek sonraki hamleler için size önerilerde de bulunuyor (Aslında bu modda yer tespiti için robota tüm harita bilgisini yüklemişler ve robot başlangıç noktasından itibaren nereye gittiğini hesaplayarak konumunu buluyor).

DOC Oyun Kartları

“Ben daha iyisini yaparım” diye başladığım bu oyuncak maceram biraz farklı bitse de oğlum ve benim için çok eğlenceli ve öğretici bir deneyim oldu. Eğer sizin de çocuğunuz (ve siz de) benzer şeylere ilgi duyuyorsa şiddetle tavsiye ederim.

VoIP Problemleri – Packet Loss, Delay, Jitter Nedir?

VoIP Problemleri – Packet Loss, Delay, Jitter Nedir?

Günümüzde kurumlar (ve hatta bireysel telefon aboneleri) IP telefon  ve/veya VoIP sistemlerine geçiş yapıyorlar. Geleneksel yapıya göre bir çok avantajı olan bu geçişin beraberinde getirdiği bir takım sıkıntılar da zaman zaman karşımıza çıkıyor. Bu yazımda bu VoIP problemleri ve olası çözümleri kısaca anlatmaya çalıştım.

1. Paket Kaybı (Packet Loss)

VoIP görüşmelerinde sesin iletimi hızlı olmasından ötürü UDP ile gerçekleştirilir. Bildiğiniz üzere UDP’nin hızlı olmasının nedeni bağlantısız (connectionless) olmasıdır. Dolayısı ile olası bir paket kaybında kayıp paket karşı taraftan geri istenmez, zaten buna da ihtiyaç yoktur. Şöyle ki:

Örneğin karşı tarafa iletilen “Merhaba” kelimesinin ortasındaki “rha” kısmı iletim esnasında kaybolmuş olsun. Karşı taraf bu durumda “Me___ba” olarak duyacaktır. İletişim gerçek zamanlı olduğu için kayıp paketin tekrar istenmesi bu durumu düzeltemeyecektir. En temel VoIP problemlerinden biri olan paket kayıplarının sebepleri ve olası çözümleri şunlardır :

  • Bant Genişliğinde Tıkanıklık. Bu durumda mevcut bant genişliklerinin arttırılması ya da ses paketlerinin iletiminde önceliklendirme yapmak gerekecektir. Önceliklendirme işlemi ses paketlerinin geçtiği tüm ağ cihazlarında (yani uçtan uca) QoS (Quality of Service) tanımları yaparak gerçekleştirilir. 
  • Ağ Cihazlarının Aşırı Yüklenmesi Sonucu Paketleri İletememesi. Mevcut ağ cihazları yetersiz ise veya ağda karşılaşılan anormal trafiklerde (broadcast storm, virüs aktivitesi vb.) bu durum oluşabilir. Ağın optimize edilmesi ya da cihazlar yetersiz ise daha yüksek kapasiteli cihazlar ile değiştirilmesi sorunu ortadan kaldırılabilir. 
  • Kablo, Konnektör Gibi “Layer 1” Hatalarından Kaynaklanan Kayıplar. Kablolama gözden geçirilerek ve ilgili iyileştirmeler yapılarak sorun ortadan kaldırılabilir.
  • Ağ Üzerinde Çok Fazla Değişken Gecikme Durumu Oluşması. Bunu detaylı olarak aşağıda “jitter” başlığında inceleyeceğiz.

İdeal bir ses görüşmesinde paket kaybının < %0.1 olması beklenir.

2. Gecikme (Delay)

Kıtalar arası telefon görüşmesi yaptıysanız fark etmişsinizdir, bizim sesimizin iletilmesi, karşı tarafın bunu duyması ve cevapladığında sesin bize gelmesi normalden uzun sürer. Bu duruma sebep olan şey gecikmedir (latency). Gecikme hepimizin tahmin edebileceği gibi sesin iletimi esnasında geçtiği cihazlardan, uğradığı protokol / kodek / sinyal dönüşümlerinden kaynaklanmaktadır. Dolayısı ile paket anahtarlamalı ağlarda genelde gecikme yaşanması mümkündür. 

Gecikme kaynaklarını şu şekilde özetleyebiliriz: 

  • Kodlama: Sesin analog sinyallerden dijital sinyale dönüşmesi ve karşı tarafta bu işlemin tam tersinin yapılması
  • Paketleme: Dijital ses sinyalinin IP paketlerine dönüştürülmesi ve karşı tarafta bu paketlerin açılarak dijital sinyallere çevrilmesi
  • Serileştirme: Ağ iletişim hatlarına bitlerin verilmesi
  • Yayılma: Paketlerin iletişim hatlarında iletilmesi için geçen süre.
Gecikme (Delay)

Ses ve görüntü iletimi teknolojilerinde milisaniyeler seviyesinde gecikmelerden bahsedebiliriz. İlgili gecikme değerleri ve sonuçları aşağıda bulabilirsiniz : 

  • 0 – 150 ms : Birçok uygulama için kabul edilebilir bir değerdir.
  • 150 – 400  ms : Yine kabul edilebilir bir değerdir fakat kullanıcılar iletişimde bir rahatsızlık hissetmeye başlarlar, dolayısı ile bu seviyenin 150 ms altına indirilmesi önerilir. 
  • 400 ms ve Üstü: Kabul edilemez değerlerdir. Müdahale edilmesi gerekir.

Gecikmeyi de açıkladıktan sonra artık değişken gecikme (jitter) konusuna bakabiliriz. 

3. Değişken Gecikme (Jitter)

WAN arayüzleri üzerinde bulunan çıkış kanalı tamponlarındaki (buffer) kuyruk (queue) gecikmeleri karşı tarafa paketlerin düzgün aralıklarla iletilmesini engeller. Bu duruma değişken gecikme (jitter) adı verilir.

Jitter, alınan paketlerin varlığında bir değişim olarak tanımlanır. Gönderen tarafta, paketler eşit aralıklarla sürekli bir akış halinde gönderilir. Ağ tıkanıklığı, yanlış kuyruklama veya yapılandırma hataları nedeniyle bu sabit akış alınan tarafta düzensiz hale gelebilir.

Değişken Gecikme (Jitter) Durumunda Paket İletimi

Bir ses görüşmesi değişken gecikmeye maruz kaldığında, bu kolayca anlaşılabilir. Eğer konuşmacı “Merhaba, bugün nasılsın?” diye sorarsa dinleyici bunu “Mer…h..aba, bug…..ün n…asılsın?” şeklinde kelimeleri bozulmuş şekilde duyacaktır. Ses paketlerinin alıcı tarafta değişken zamanlarda gelişi, sözcüklerin gecikmeli iletilmesi ve bozulmasına neden olur. Değişken gecikmeye sebep olan şeylerden biri de ağ cihazlarındaki ani tampon kullanımıdır (anlık saturasyonlar). 

İdeal bir ses görüşmesinde değişken gecikme değerinin <=20ms olması beklenir.

Paket kayıpları gibi değişken gecikme problemi de genelde uçtan uca QoS yapılarak halledilebilir. Bu konuyu da bir başka yazımda açıklamaya çalışacağım.