Sualtı aracı projesi için Python dilini bilmek yeter mi?

Konuda biraz yanlış bilgiler var.

Bir kere su altı aracı olacaksa ve otonom olacaksa, Pixhawk ya da muadili bir kontrol kartı kullanacaksınız. Yani bir kere su altı aracının kontrolü için, kullanacağın kontrol kartını bilmen gerek. Hangi kontrol kartını kullanacaksınız?

Bunun yanında, Arduino ya da Raspberry Pi Pico ile olacak işler değil bunlar. Kontrol kartına ek olarak bir companion computer eklemen gerekir. Componion computerin mantığı, otonom sistemler için gerekli veriyi iletmekten çok, spesifik bir görev için gerekli veriyi toplamaktır. Yani aracı Raspberry Pi ile kontrol etmeyeceksin, edemezsin de.

Bir dil öğrenmeye başlamadan önce, kullanacağın aracın ve sistemin temellerini öğrenmelisin. Ben birkaç defa Sabit Kanat İHA'ya katıldım ve elektronik ekibe liderlik ettim. Su altı ile benzer sistemleri var (Pixhawk ve mini PC bakımından). Dolayısıyla olaya dil olarak değil, sistem olarak bakmalısın. Dil, sistemin sadece bir parçası olacak.

Componion computer = Mini PC.

Mini PC = Raspberry Pi veya Jetson Nano gibi işletim sistemine sahip, artık mikroişlemci sınıfına girmeyen, başlı başına bilgisayar olan kartlar. Burada artık bilgisayar dünyasına giriyorsun, buna da dikket etmelisiniz. Temel düzeyde Linux bilmen gerekecek.

Eğer kullanacağınız mini PC (genelde Raspberry Pi ya da Jetson Nano olur) ile görüntü işleme yapacaksan, Python ve OpenCV bu işin en popüler kütüphanesidir. Ama bu iş için Python bilmek gerekmez, temel düzeyde de görüntü işleme bilmelisin.

Pixhawk ya da kullanacağın kontrol kartı ise bambaşka bir alem olur. Bir kere kontrol kartı ve mini PC'yi nasıl haberleştireceğini öğrenmen gerek.
 
İşin içine OpenCV girdiği an Raspberry'nin bile gücü yetersiz kalabiliyor. Ya pre trained model kullanacaksınız ya da çok optimize şekilde yazmanız gerekiyor. Otonom bir sistem için gerçek zamanlı kararlar alınması gerekecek.

Ben birkaç defa Sabit Kanat İHA'ya katıldım. Su altı ile benzer sistemleri var (Pixhawk ve mini PC bakımından).

Bahsettiğiniz yarışmalar arasında "Tubitak 2019 Uluslararası İnsansız Hava Araçları Yarışması" var mı?
 
Arkadaşlar bir de şu noktada var. Genel bir kanı var, "Raspberry Pi = Python" diye. Evet belki Python sıklıkla kullanılıyor ama bu doğru değil. Pi, başlı başına Linux bir bilgisayardır ve her şeyden önce sizin Linux bilmeniz gerekir. Ben yarışmaya hazırlanırken, birçok ekip burada zorluk çekiyordu. Adamlar her şeyi Windows'ta yapıp, kısa bir süre kala RasPi'ye geçiyordu ve patlıyordu.

Bir de çoğunlukla Raspian nedeniyle, Raspberry Pi çekirdeklerini multi-thread olarak çalıştıramıyor. İşlemcisi görece güçlü olsa bile, OS nedeniyle tıkanmalar var. Bu noktada artık Jetson Nano'ya geçmeniz gerekebilir.

Bahsettiğiniz yarışmalar arasında "Tubitak 2019 Uluslararası İnsansız Hava Araçları Yarışması" var mı?

Hayır, maalesef katılamadık ona.

Raspery Pico ile yapacaksanız evet. Arduino gibi bir kart kullanacaksanız C# temeliniz olması lazım.

Raspberry Pico Java ile kodlanmaz, bir mikroişlemcidir. Aynı zamanda Arduino da C# ile değil, C ve C++ ile kodlanır. C - C++ ile C# ayrı dünyalardadır.

Pico da microPython veya C/C++ ile kodlanabilir.
 
Hocam orada kastım Python dili idi. Bir de Arduino C# temelli diye biliyordum. Değil miydi?
Dili tek başına öğrenmek deniz altında giden bir dronu kontrol ettirmeye yetmez. Nasıl temel Türkçe kurallarını bilmek iyi roman, şiir yazabileceğinizi göstermiyorsa bu da aynı şekilde.

Dili kullanarak yapabileceğiniz şeyleri ayrıca öğrenmeniz gerekiyor. Eğer kameradan gelen veriyi işleyip baktığınız şeyin hedef mi yoksa boş su mu olduğu anlamak için görüntü işleme kullanmanız gerekiyor. Bunun için daha önce de adı geçen OpenCV (CV = Computer Vision) isimli kütüphaneyi öğrenmeniz gerek (İlla bu kütüphane olmak zorunda değil en popüler olduğu için bunun üzerinden örnek verdim). Bu kütüphaneyi kullanmak için sadece Python değil en azından temel/orta düzeyde görüntü işleme tekniklerini de bilmeniz gerekir. (filters, convolution ve correlation, thresholding, bit extraction, contrast mapping, forourier transform...) En azından ne olduğunu ve ne yaptığını bilecek kadar öğrenmeniz gerekiyor.

Arduino, C/C++ temelli bir mikro kontrolcüdür. C#, Microsoft'un genel amaçlı programlama dili Java'nın başarısından etkilenip oluşturduğu yine genel amaçlı bir programlama dilidir. C dili yazım ve dizim kurallarını kullandığı için C# ismi verilmiş. C#, C/C++'dan daha çok Java'ya benzer.

C# ve Arduino ile gördüğünüz projeler, Windows Forms üzerinden alınan aksiyonları seri iletişim ile Arduino'ya gönderilip yaptırılmasından ibaret. Arduino'yu hala C/C++ kullanarak programlamanız gerekiyor.
 
İlk mesajımda da dediğim gibi. Bu araçlarda bildiğin dilin ya da direkt bir dil öğrenmenin faydasını göremezsiniz. Sistemi kavramanız gerek. Çünkü siz artık belirli bir kartı, belirli kurallar çerçevesinde programlamanın ötesine geçiyorsunuz.

Kendi içinde karar verebilen bir sistem geliştirmeniz gerek: İşletim sistemi gibi. Mesela bu noktada kuracağın algoritma, otonom sistem için altın değerinde olacak. Algoritma becerisi ne Python'a ne de Java'ya bakar. Algoritma başka bir şeydir, ilk başta çalıştığın sistemi kavraman gerekir.
 
Konuda biraz yanlış bilgiler var.

Bir kere su altı aracı olacaksa ve otonom olacaksa, Pixhawk ya da muadili bir kontrol kartı kullanacaksınız. Yani bir kere su altı aracının kontrolü için, kullanacağın kontrol kartını bilmen gerek. Hangi kontrol kartını kullanacaksınız?

Bunun yanında, Arduino ya da Raspberry Pi Pico ile olacak işler değil bunlar. Kontrol kartına ek olarak bir companion computer eklemen gerekir. Componion computerin mantığı, otonom sistemler için gerekli veriyi iletmekten çok, spesifik bir görev için gerekli veriyi toplamaktır. Yani aracı Raspberry Pi ile kontrol etmeyeceksin, edemezsin de.

Bir dil öğrenmeye başlamadan önce, kullanacağın aracın ve sistemin temellerini öğrenmelisin. Ben birkaç defa Sabit Kanat İHA'ya katıldım ve elektronik ekibe liderlik ettim. Su altı ile benzer sistemleri var (Pixhawk ve mini PC bakımından). Dolayısıyla olaya dil olarak değil, sistem olarak bakmalısın. Dil, sistemin sadece bir parçası olacak.

Componion computer = Mini PC.

Mini PC = Raspberry Pi veya Jetson Nano gibi işletim sistemine sahip, artık mikroişlemci sınıfına girmeyen, başlı başına bilgisayar olan kartlar. Burada artık bilgisayar dünyasına giriyorsun, buna da dikket etmelisiniz. Temel düzeyde Linux bilmen gerekecek.

Eğer kullanacağınız mini PC (genelde Raspberry Pi ya da Jetson Nano olur) ile görüntü işleme yapacaksan, Python ve OpenCV bu işin en popüler kütüphanesidir. Ama bu iş için Python bilmek gerekmez, temel düzeyde de görüntü işleme bilmelisin.

Pixhawk ya da kullanacağın kontrol kartı ise bambaşka bir alem olur. Bir kere kontrol kartı ve mini PC'yi nasıl haberleştireceğini öğrenmen gerek.
Bu konuyu acarken aklimda Raspberry Pi ile Python vardı ve sonra Ardunio ile C/C++ düşundum. Aslında bu kararı yarısma icin verilen bilgilere gore almistim. Yarismada bizden istenen 3 metre derinlige dalabilmesi ve aracın tam veya yarım otonom olması. Ben de bu baglamda 10 metre derinlige kadar inebilen ve 30 metre sahada gezinebilen bir proje yapmak istedim. Kontrol uzaktan kumanda ile olacak ve verileri kablosuz olarak uzaktan bilgusayara gonderecek. Yazdiklariniz galiba daha da profesyonel bir arac icin. Benim bahsettigim proje icin Ardunio veya Raspberry yetmez mi?
 
Arduino, böyle bir araç için yavaş kalır. MCU olarak Blue Pill, ESP32 ya da bütçe yeterse Teensy alınmalı. Telemetri sistemi için ise Xbee Pro yeterli olur. RC kontrol sistemi için de herhangi 2.4 GHz kumanda iş görür.

Ancak ben daha fazlasını yazmadan, senin yarışma ve kafanda tasarladığın araç hakkında bilgiler vermen gerek. Şu yukarıda yazılan donanımlar bile altın değerinde aslında.
 

Geri
Yukarı