İTU Maslak Kampüsü, İstanbul, Türkiye auv@itu.edu.tr
Bizi takip et:

Blog

Küçük Bir Vida, Büyük Bir Ders: ESC Kartımız Neden Yandı?

AUV aracımızda motor kontrolünü sağlamak için kullandığımız ESC kartları, ESC case'inin içinde güvenli bir şekilde yer alıyor. Ancak geçtiğimiz aylarda, hepimize güzel bir ders olacak bir olay yaşadık.

Mekanik ekip arkadaşlarımız ESC case montajını yaparken, farkında olmadan case'in içine bir civata düşürmüşler. Bu küçük vida, kartın üzerinde kısa devreye sebep oldu ve kartımızı tamamen kullanılamaz hale getirdi. Başta sorunun bir komponent kaynaklı olduğunu düşündük, tek tek parçaları değiştirerek çözüm aradık. Ancak ne yaptıysak sonuç alamadık.

Bir süre sonra anladık ki problem sadece bir komponentte değil, kartın tamamındaydı. Yanlış yere düşen bir vida, tüm ESC kartının yanmasına neden olmuştu.

Bu deneyim bize sadece dikkatli olmanın değil, doğru teşhis koymanın da ne kadar önemli olduğunu gösterdi. Sorunu tespit ettikten sonra kartı yeniden tasarladık, üretimini gerçekleştirdik ve sonunda kartımız yeniden çalışır hale geldi.

Bazen en büyük problemler, en küçük detaylarda gizli olabiliyor. Biz de bu süreçten önemli bir ders çıkardık: “Montajda son kontrol, en az tasarım kadar kritik.”

Mehmet Erkılıç 2025-04-11

Taluy Mini Gömülü Yazılımdaki Gelişmeler

Bu yazıda yeni aracımız Taluy Mini'nin gömülü yazılımındaki gelişmelerden bahsedeceğim.

Taluy Mini AUV üzerinde bulunan ana kart; sensör okumaları ve ham verinin sürekli işlenmesi gibi tekrara binen bütün görevleri, ana karttaki entegre devrelerine gereken voltajda güç dağıtımını ve motorların sürülmesi için gerekli PWM oluşturması gibi işlemleri ana bilgisayardan soyutlayarak tek bir kartta birleştirmektedir. Bu sayede daha fazla mikrodenetleyici kullanmaktan ve mikrodenetleyiciler arasında haberleşmenin getirdiği ekstra gecikmeden kaçındık. Ayrıca, ana bilgisayarın görev yükünü ana karta paylaştırarak ana bilgisayarın asıl yarışma görevleri için daha verimli kullanılmasını sağladık

Karttaki sensör okumaları, fırçasız doğru akım motorlarının sürülmesi, ROS paketlerinin ethernet ile ana bilgisayara gönderilmesi ve ana kartın diğer mevcut görevlerinin eşzamanlı olacak şekilde yönetmek için kendi RTOS kütüphanemizi geliştirdik. AUV-RTOS, basit bir round-robin schedular içermekte ve araçtaki görevlerin düşük geçikme ile istenilen periyotlarda gerçekleşmesini sağlamaktadır.

Yeni aracımızda IMU sensörü olarak BNO055 kullandık. BNO'nun mutlak oryantasyon sağlaması ve üzerinde bulunan ARM Cortex-M0+ sayesinde sensor-fusion yapabilmesi gibi özellikleri dolayısıyla tercih ettik. IMU sensörünün testi ve kalibrasyonu için rviz'i -ROS'un 3D simülasyon uygulamasını- kullanarak test ettik. Ana karta bağlı diğer bir sensör olan Navquest Micro600 DVL'in mesajlarını çözümlemek için kendi sürücü yazılımımızı geliştirdik. Ana kartta bulunan MAX232 entegresi sayesinde, mikrodenetleyicinin UART çıkışının voltaj seviyesini DVL sensörünün RS-232 ile haberleşebilmesi için gereken voltaj seviyesine çıkararak DVL'in anakartla haberleşmesini sağladık.

Taluy Mini anakartının, Taluy expansion kartından farklı bir diğer özelliği ise ana bilgisayarla haberleşmek için UART yerine Ethernet kullanmasıdır. Ethernet üzerinde network ve transport katmanı olarak gömülü sistemlerde kullanılan lwIP TCP/IPv4 yığın kütüphanesini ve ana bilgisayar ile ROS paketleriyle haberleşebilmek için rosserial'in ethernet API'ını kullandık. Ethernet'in CRC32 hata tespiti ve host/client arasında geribildirim özelliklerine sahip olması sebebiyle ana kartta UART yerine ethernet haberleşmesine geçtik.

Taşkın Ökmen 2025-03-08

Expansion Kartı: Bir Hata, Bir Gelişim

Aracımızda kartlar arası iletişimi CAN Bus protokolüyle sağlıyoruz. Takım olarak, sistemin ihtiyaçlarına göre özel olarak tasarladığımız kartlarımızda CAN transceiver'ları gömülü olarak kullanıyoruz. Bu sayede kartlar arası haberleşmeyi güvenli ve kararlı bir şekilde sağlayabiliyoruz. Ancak sistemin bir diğer bileşeni olan Jetson'da doğrudan CAN transceiver desteği bulunmadığı için, Jetson ile araç kartları arasında köprü görevi görecek bir expansion kartı tasarladık. Expansion kartı CAN sinyallerini alarak rosserial ile Jetson'a iletmekte. Böylece Jetson, diğer sistem modülleriyle sorunsuz şekilde iletişim kurabiliyor.

Bu sistemde her şey sorunsuz ilerliyordu, ta ki havuz testinden önceki hazırlıklarda expansion kartı Jetson'a yanlış yönde takılana kadar. Bu hata, kartın üzerindeki çipin yanmasına neden oldu.

Yaşanan bu talihsizlik sonrası yalnızca hasarlı kartı onarmakla kalmayıp, mevcut tasarımı da gözden geçirme kararı aldık. Bu süreçte, daha önce kullandığımız STM32F103 çipi yerine, daha güçlü ve hızlı olan STM32F446 çipine geçiyoruz. Bu yeni çip, hem işlem gücü hem de çevresel donanım desteği açısından bize daha fazla esneklik sunacak.

Ravza Betül Karakaş 2025-02-15
Blog Image 2

Akustik Lokalizasyon

Bu yazıda, geçen sezon yazılım ekibi üyelerine verilen ödevlerden birine bakacağız. Bu ödevde, akustik yerelleştirme tekniklerini kullanarak bir su altı pinger'ının (akustik verici) kesin yerini ve derinliğini belirlemeyi ele aldık. data.csv adlı bir dosyada sağlanan veriler, birden fazla akustik sensörle alınan ölçümleri içeren başlangıç ​​noktamızdı. Bu ölçümler, sensörlerin GPS koordinatlarını, sensörlerin su yüzeyinden derinliğini ve sensörlerden pinger'a olan mesafeleri içerir. Görevimiz, bu veri noktalarını kullanarak pinger'ın kesin enlemini, boylamını ve derinliğini belirlemekti.

Öncelikle veri işleme aşamasına geçtik. Verileri data.csv'den okuduk, doğru hesaplamalar için mesafe değerlerini ikiyle çarparak ayarladık. Daha sonra enlem, boylam ve derinlik sütunlarını merkezler olarak ve mesafe sütununu yarıçaplar olarak çıkardık.

Sonra, bir küre üzerindeki iki nokta arasındaki mesafeyi hesaplayan Haversine formülünü tanımladık. Bu formül, Dünya'nın eğriliğini göz önünde bulundurarak hesaplamalarımız için önemliydi.

Daha sonra hesaplanan yarıçap ile bilinen yarıçap arasındaki kare farkların toplamını hesaplayan rezidü fonksiyonuna geçtik. Bu fonksiyon hesaplamalarımızı optimize etmek için çok önemliydi.

Optimizasyon süreci için, merkezler dizisinin ortalaması olarak hesaplanan bir başlangıç ​​tahminiyle başladık. En küçük kareler yöntemini kullanarak, sensör ölçümlerini temsil eden kürelerin kesişim noktasını bulmayı amaçladık. Bu süreç, pinger'ın koordinatlarını hassasiyetle tahmin etmemize yardımcı oldu.

Tahmini koordinatlara sahip olduğumuzda, Folium kullanarak etkileşimli bir harita oluşturduk. Bu harita, sensör konumlarını ve tahmini pinger konumunu görselleştirmemizi sağladı. Her sensör konumu için daireler ve işaretleyiciler ve pinger için ayrı bir işaretleyici ekledik. Son olarak, kolay erişim ve inceleme için haritayı pingermap.html olarak kaydettik.

Çabalarımızın sonucu olarak pingerin tahmini koordinatları 42.43869 Enlem ve 18.58540 Boylam olarak belirlendi.

Seren Sıla Uysal 2024-07-03
Blog Image 2

Pasif sonar projesi

Bu sene çalışma fırsatını bulduğum en büyük projelerden biri olan pasif sonar projesinden size bahsetmek istiyorum. Aracımızın bu seneki katılacağı Robosub 2024 yarışmasındaki yüzleşeceği en kritik problemlerden biri görev bölgelerinin belli bir frekansta tekrarlı ve kesik bir şekilde sinyal gönderen "pinger" adı verlien cihazlar ile işaretlenmiş olması. Aracımızın bu görevlere ulaşabilmesi için etkili bir şekilde dinleme yaparak ve bu iş için hazırlanmış algoritmasını kullanarak görev yerlerini ayırt edebilmesi gerekiyor.

Donanımsal anlamda bu görev için hidrofon denilen su altı mikrofonlarından yararlanıyoruz. Hidrofonlarımızdan aldığımız sinyalleri akustik işleme kartımızdan (APB) geçirerek ve daha sonrasında analog olan sinyalimizi dijital ortama aktararak hazırlanan algoritmamızda işlenebilir hale getiriyoruz.

Yazılımsal anlamda ise gelen sinyalin bir sinüs şeklinde olmasından yararlanarak tepe noktaları arasındaki voltaj değerlerini PWM benzeri değerlere bölerek bu değerler arasındaki gelen farklı sinyallerin geliş süreleri ve hidrofonlarımızın geometrik kendi aralarındaki açısal konumlarından yola çıkarak sinyalin geliş süresi ve aracımıza geliş açısını hesaplıyoruz. Bu bilgiyi kullanarak aracımızı sinyal kaynağına yönlendirerek görev bölgemizi bulabiliyoruz.

Yusuf Çalışkan 2024-06-14
Blog Image 2

Anakart gömülü yazılımında gelişmeler

Anakartın gömülü yazılımını geliştirme üzerinde çalışıyorum. Aracımız ROS ile çalıştığı için anakart üzerinde rosserial_arduino paket haberleşmesi kullanıyoruz. Bu paketleyici kütüphane, esasında anakartı sağlayıcı (Host) bilgisayar ile gerçek ROS konuşması yaptırmak yerine köprü görevi gören bir python yazılımıyla simüle ettiriyor.

Şu anda anakart üzerinden ping sonarlar okunuyor. Ping sonrarları bir ROS servisi aracılığıyla açıp kapatabiliyoruz. Ping sonarlar sayesinde su altında 30 derecelik aralıkla karşımızdaki nesnenin bize olan uzaklığını ölçebiliyoruz. Bu verileri matematiksel fonksiyonlara sokarak su altı haritalandırmamızın doğruluğunu arttırıyoruz.

Ayrıca anakartımız üzerinden torpido ateşleme sistemini kullanabiliyoruz. Bu özelliği bir rosservis çağırarak kullanıyoruz. Şu anda bir servis çağrıldığında o fonksiyon hariç tüm haberleşmeler fonksiyon işlevini bitirene kadar duruyor. Her ne kadar bu süre yarım saniye gibi kısa da olsa bu sorunun çözümü üzerinde uğraşıyoruz.

Son olarak birçok özelliklerinin dışında anakartımız aslında güç bölücü devrelere sahip olan bir güç dağıtım kartıdır. Bu sayede birçok farklı voltaj seviyesi isteyen sensörlerimizi çalıştırabiliyoruz.

Nihat Arslan 2024-05-24
Blog Image 2

Simulink'te sensör füzyonu ve ROS bağlantısı

AUV Yazılım ekibinde uğraştığım projelerden bir tanesi, sensor birleşim algoritmalarının Simulink üzerinden modellenmesinin gerçekleştirilmesiydi. Aracın otonom hareket için hayati öneme sahip konum ve yönelim bilgilerini ölçen sensörler, belirli bir hata birikmesine ve gürültüye sahipler. Bu hatalar, Kalman Filtresi adı verilen bir matematiksel algoritmayla, çoğunlukla birden fazla sensörden gelen verilerin birleştirilmesiyle, düzeltilir ve iyileştirilir.

Kalman Filtresi algoritması, Simulink içinde bir blok olarak bulunmaktadır. Algoritmayı Simulink içinde modelledikten sonra, aracı çalıştırdığımız ROS ortamına Simulink'te bulunan C/C++ kodu oluşturma özelliği ile geçebiliyoruz. Program, ROS workspace'lerine uyarlı C++ kodu yaratımını sağlıyor.

Simulink üzerinde modellemeyi gerçekleştirmek, modelin genel görünümüne daha görsel ve bütüncül bir bakış açısına sahip olmamamızı sağlamaktadır. Simulink ortamı ayrıca, veri inceleme ve hata giderimi süreçlerini bizim için kolaylaştırmaktadır.

Emre Tezel 2024-05-09
Blog Image 2

Robotik Gripper Tasarım Süreci

Merhaba, size gripper tasarım sürecimizden biraz bahsetmek istiyorum. Öncelikle gripper, nesneleri manipüle etmeye ve yerlerini değiştirmeye yarar. Başlayalım...

Gripper v1: İlk tasarımımız, bevel gear içeren bir sistemdi. Bu sistemde, 2 dişli ve bunların arasında pinion dişli bulunuyordu. Tahrik gücü servo motor ile sağlanıyordu. Ancak, 3 boyutlu baskı alındığında pençelerin toleransları ve boyutlarında sorunlar yaşandı. Bu nedenle, tasarımı yeniden gözden geçirmek zorunda kaldık ve 2. versiyona geçtik.

Gripper v2: İlk versiyona kıyasla, gripper'ın boyutlandırmasını yeniden yaptık ve tasarımı %125 küçülttük. Pençeler arasına 0.3 mm tolerans verildi ve topoloji optimizasyonu yapılarak yanlarda gerekli boşluklar bırakıldı. Ancak, bevel gear sistemi nedeniyle dikey kullanım için uygun olmasına rağmen, servo motorun yer kaplaması nedeniyle aracın alt bölmesine konumlandırmada sorunlar yaşandı. Bu nedenle, yatay kullanım için 3. versiyona geçtik.

Gripper v3: Yeni bir tasarım stratejisi izleyerek her bir komponenti parametrik ve ayrı ayrı tasarladık. Önceki tasarımda birleşik ve bütün olarak çalışıyorduk, bu da ilerleyen aşamalarda bir şeyi düzeltmeyi zorlaştırıyordu. Bu yeni yaklaşım, tasarımı daha modüler ve esnek hale getirdi.

Umarım gripper tasarlarken karşılaştığımız zorluklar ve bu zorlukların üstesinden gelme yöntemlerimizi beğenmişsinizdir :)

Taner Özpınar 2024-03-29
Blog Image 2

Yeni blog sayfası!

Merhaba, sitemize bir blog sayfası eklemeye karar verdik. Burada aracımızın gelişim sürecini sizlerle paylaşacağız. Ne yazık ki dinamik web sayfası kullanmak bizim için bir opsiyon değil, bundan dolayı yeni bir blog yazısı eklemek istediğimizde doğrudan sayfanın kodunu modifiye etmemiz gerekiyor. Gelecekte görüşme dileğiyle :)

Kayra Pamukçu 2024-03-05