Otonom Araçlara Yazılımcı Bakışı
Bu yazımda son yıllarda dünyada yaygınlığı artmaya başlayan ve dev firmaların Ar-Ge ekiplerinin üzerinde ciddi mesai harcadığı bir alana, otonom araçlara değineceğim. Bu konuyu hem teknolojik açıdan, hem yazılım geliştiriciler açısından ele almaya çalışacağım.
Resimde gördüğünüz araç bundan 100 yıl kadar önce yapılmış elektirikle çalışan bir otomobil ve yanında duran kişi hepimizin yakından tanıdığı bir isim: Thomas Edison.
Bundan 100 yıl önce(hatta daha da eski tarihlerde) bugünki araçlardan çok daha basit yapıda olan araçları elektrikle çalıştırmak mümkündü ama günlük hayatta kullanmak için pek yeterli değildi. Elektrik akımını depolama sorununun yavaş yavaş çözülmesiyle birlikte artık yeni bir çağa giriyoruz: elektrikli ve akıllı otomobillerin, yani otonom araçların çağına.
Elektrikli/akıllı otomobil denilince aklınıza büyük ihtimalle ilk olarak Tesla geliyor. Tabii ki Tesla bu alanda yalnız değil, birçok dev firma da bu alanda önemli çalışmalar yapıyor. Aklıma gelen bazı firmaları aşağıda listeledim:
- Tesla
- Samsung
- BMW (2020’ye kadar tüm araçlarını elektrikli hale getireceğini açıkladı)
- Mercedes (Elektrikli ve akıllı otomobillerin yanı sıra insansız tırlar da üretiyor)
- Baidu
- Toyota
- Volkswagen (ve doğal olarak tüm Alman otomobilleri)
- Honda
- Hyundai
- Nissan
- Ford
Ülkemizde yapımına devam edilen yerli otomobilin de elektrikle çalışacağı belirtilmişti. Konuyla ilgili habere göz atmak için tıklayın.
Otonom araba nedir?
Otonom araba, üzerindeki sensörler ve yazılımlar aracılığıyla nasıl çalışacağına karar verebilen, insan yönlendirmesi olmaksızın çalışan araçtır. Halk tabiriyle “sürücüsüz araba” diyebiliriz. Bu arabaların otonom olarak çalışması için iki mekanizmaya ihtiyacı var; sensörler ve yazılım. Biz bu yazıda yazılım geliştiricileri ilgilendiren kısımla, yani yazılım kısmıyla ilgili konuşacağız. Bu arabalarda çalışan yazılımlar, sensörlerden gelen verilere göre arabanın nasıl çalışacağına karar vermekte ve araç içindeki yolculara araç, yol vb. konularda bilgi vermektedir. Otonom otomobil teknolojisinin iç ve dış sistemler kısmı diye ikiye ayırmak da doğru olacaktır. Bunlar;
İç Sistemler
- Kokpit
- Otonomizasyon (Yapay Zeka[Deep Learning, Machine Learning vb.])
Dış Sistemler
- Çevresel Faktörler
Bu iki başlık kendi içinde genişletip detaylandırmak mümkün. Ayrıca bunları iç sistemler olarak özetliyoruz, bir de bunun dış sistemleri var ki o da trafik ışıklarından tutun, asfalt teknolojileri, köprü, elektronik yol levhaları vb. onlarca farklı IoT konusuna girmiş oluruz. Bu nedenle fazla dağıtmadan iç sistemlerle ilerleyelim.
Otonom araçlarda direksiyon, el freni, camlar, aynalar, kameralar, sensörler, hız göstergeleri, motor ve otomobilin beyin fonksiyonları, kapı, far vb. donanımlar ile otomobil içi eğlence, iletişim araçlarının tümünü görüp yönetebileceğiniz güçlü bir bilgisayar alt yapısı olacak. Yani burada bahsettiğimiz araba bileşenleri, kullanıcı(sürücü) tarafından kullanılacak bir kokpit yazılımı üzerinden yönetilebilecek. Bu yazılım sesli komutlarlar, düğmelerle veya dokunmatik panelden yönetilebilir olacaktır.
Aslında yazılım geliştiriciler için oldukça ilgi çekici ve eğlenceli bir alan gibi görünüyor. Geliştirdiğiniz yazılımla yollarda gidecek bir arabanın komuta edilmesini sağlamak keyifli ve tatmin edici bir uğraş olacaktır.
Aşağıdaki resimde Tesla’nın araçlarından birine ait kokpit ekranı ve konsolu görebilirsiniz.
Kokpit yazılımları beraberinde önemli bir konuyu da gündeme getiriyor: Güvenlik. Kokpitin dışarıdan internet üzerinden erişilebilir olması gerekecektir. Güvenlik önlemleri her yazılımda gerekli, ancak otonom araçlarda daha kritik ve önemli. Zira araca erişebilen kötü niyetli kişiler aracın kaza yapması veya sürücünün isteği dışında kullanılmasına yol açabilir. Ölümcül sonuçları olması bu alandaki yazılımların güvenlik konusunu daha önemli hale getiriyor.
Kokpit internet ile dışarı açılırken eviniz veya işyerinizle de iletişim haline geçebilecek. Evindeki sisteme arabadaki konsoldan bağlanıp, evin durumunu kontrol edebilecek, görevler oluşturabilecek ve evdeki IoT destekli cihazlara erişim sağlayabileceksiniz.
Görüldüğü üzere bu alanda yapılacak ve konuşulacak çok şey var. Yakın zamanlarda “Smart Car Developer” “Smart Car Test Engineer” gibi iş ilanları görmeye başlayacağız. Dünya’da kokpit geliştiren firmalardan biri olan BlackBerry’nin QNX takımı ve güzel çalışmalar yapıyorlar, takip etmenizi öneririm. QNX videoları için tıklayınız.
Peki kokpit yazılımları geliştirmek için hangi teknolojiler kullanılabilir? İlk olarak bir işletim sistemi gerekiyor. QNX takımı BlackBerry’nin olduğu için BB işletim sistemi üzerine bir yapı inşa ettiler. Android işletim sisteminin de açık kaynak kodlu olması bu alanda kullanılabilir olmasının önünü açıyor. Tabi ki ticari kullanımlarda Google’ın Android üzerinden telif hakkı vb. kazanımları olduğunu duyuyoruz. Bu nedenle Android dağıtımı üzerinden çengellenmiş yeni dağıtımlar da tercih edilebilir. Akıllı araç sistemlerinde Linux sistemlerinin önünün açık olduğunu ve Linux çekirdeği üzerine yazılacak özel işletim sistemlerin bu alanda sıklıkla kullanılacağını düşünüyorum.
Gelelim kokpit tabanlı uygulama mimarisi için gerekli teknolojilere. Bu tarz yazılımların gerek haritalama ve navigasyon amacına uygun olması, gerek animasyonlu geçişlere sahip olması ön planda. DirectX ve OpenGL burada önemli iki araç olacaktır. Microsoft’un WPF uygulama çatısı ve ilk olarak Nokia altında gelişmeye başlayan ve halen açık kaynak olarak devam eden QT Framework de bu tarz uygulamalara arayüz oluşturmak için elverişli gibi görünüyor. Yine bunların dışında HTML5 de bu tarz yazılımların önyüzünde kullanılabilecek bir teknoloji olarak görünüyor.
Kokpit yazılımlarının en önemli yönlerinden biri de aracın donanımına ve üzerindeki sensörlere erişim kabiliyeti olacaktır. Burada çekirdeğe yakın diller tercih edilecektir. C ve C++ dilleri tabii ki ilk akla gelen diller.
Yukarıda daha ziyade işin programlama yönlerini ele alarak bazı yorumlarda bulundum. İşin bir de mühendislik kısmı var. Bunun için de Deep Learning (Derin Öğrenme), Machine Learning (Makine Öğrenimi) ve bunların genel kapsayıcısı Artificial Intelligence (Yapay Zeka) konularında uzmanlaşmak gerekecektir. Dediğim gibi burası işin daha ziyade mühendislik kısmı, geliştirilen yazılımların tahminleme, öngörme ve karar verme mekanizmaları için gerekli olan uzmanlık alanlarıdır.
Yakın gelecekte sadece otonom araçları değil, birçok alanda otonom sistemlerin ve araçların kullanılacağını göreceğiz. Drone’ların kargo ve kurye taşımacılığında kullanılmaya başlanması, bazı fabrikalarda taşıma ve üretim için robotların kullanılması bugün bile yavaş yavaş görmeye başladığımız gelişmeler. Yazılım geliştiriciler için de bu alanlarda birçok fırsat ortaya çıkacaktır.
Bu yazı daha önceden kişisel bloguma yazdığım çok daha geniş iki yazının özeti niteliğindedir. Eğer konu ilginizi çekiyorsa ve daha detaylı şekilde okumak istersniz aşağıdaki linklerden fayfalanaibilirsiniz.
4 Comments
noname
2 Aralık 2016 at 13:15İlgi çekici yazı için teşekkürler ama bir iki düzeltme eklemek isterim
1) QT yazılışı yanlış ikinci harf küçük yazılır. Qt diye
2) Qt Nokia ile başlamaz daha öncesinde Trolltech firmasıyla başlar Sonrasında Nokia satın aldı.
Burak SARICA
3 Aralık 2016 at 10:37NVIDIA yı bu konu üzerinde çalışan firmalar arasında saymamak haksızlık olur çünkü bir çoğu onun altyapısını kullanıyor. http://www.nvidia.com/object/drive-px.html
Kadir
27 Nisan 2017 at 06:07O kısıtlı platformlara Windows kurulacağını düşünmüyorsunuz heralde. %99’u Linux. Dolayısıyla WPF yok.
Cihan Özhan
27 Nisan 2017 at 11:45WPF .NET’in Linux uyarlaması Mono ile birlikte çalışabiliyor. Yani Linux’ta da WPF var. Kaldı ki makalede alternatif teknoloji olarak Qt’den de bahsettim.