Bundan 2 ay önce, bir süredir donanımsal olarak üzerinde çalıştığım otonom uçuş kontrol kartının, donanımsal tasarımını bitirmiş ve paylaşmıştım. Donanım tarafını bitirdiğimden -en azından şimdilik- beri, tüm yoğunluğumu yazılım tarafına verdim.
Uçuş kontrol sistemleri RTOS yani Real Time Operating System ile çalışır. RTOS’un detayları başka bir makalenin konusu olsun, ancak kabaca aktarmam gerekirse, Bu tip işletim sistemleri, adının da belirttiği gibi gerçek zaman kısıtı olan sistemlerde kullanılırlar. Genelde mikroişlemci seviyesinde olan sistemlerde ve özellikle çok hızlı olmaları gereken ve sensörlere dayalı kartlarda sıkça karşımıza çıkar.
Önceki makalem olan MPU9250 ve STM32 ile Quaternion tabanlı AHRS uygulaması yazısına da baktıysanız, IMU’lar için filtreleme sistemlerinde zamanın kritik olduğunu görmüşsünüzdür. Uçuş kontrol sisteminin geneli de bundan farklı değildir aslında. GPS’lerin çalışması ve konum çözümleri ya da IMU’ların filtrelenmesi ya da navigasyonun sağlanması ya da rota takibi gibi birçok konuda zaman kritiktir.
Sensörlere gelirsek; barometre için BMP388’i, IMU için MPU9250’yi ve GPS/GNSS için de uBlock Neo M8N modellerini tercih ettim. BMP ve MPU I2C üzerinden, kendi yazdığım kütüphanelerle, GPS ise UART üzerinden UBX protokolü kullanarak haberleşiyor.
BMP ve GPS modeli direkt olarak kartımda da tercih ettiğim modeller. BMP388’in Bosch tarafından yazılmış API’sinin bulunması da artı bir özellik.
RTOS’u demo etmek için, CubeIDE de kullandığımdan CMSISv1’i ve FreeRTOS’u tercih ettim. 4 thread oluşturdum, bunlardan IMU’yu kontrol eden MPU9250 threadi en yüksek öneme sahip zira Quaternion hesaplamaları zamana oldukça duyarlı.
Sonuç olarak sistem gayet güzel çalıştı ve böylelikle temel bir AHRS sistemim olmuş oldu. Sonraki adımlar, bunu sürekli geliştirmek ve navigasyon özellikleri eklemekle geçecek.
Veri çıktısı:
Tüm kodlar açık kaynak olarak mevcut. Ulaşmak için, GitHub sayfamı ziyaret edebilirsiniz:
Okuduğunuz için teşekkür ederim.
Uçuş kontrol sistemleri RTOS yani Real Time Operating System ile çalışır. RTOS’un detayları başka bir makalenin konusu olsun, ancak kabaca aktarmam gerekirse, Bu tip işletim sistemleri, adının da belirttiği gibi gerçek zaman kısıtı olan sistemlerde kullanılırlar. Genelde mikroişlemci seviyesinde olan sistemlerde ve özellikle çok hızlı olmaları gereken ve sensörlere dayalı kartlarda sıkça karşımıza çıkar.
Önceki makalem olan MPU9250 ve STM32 ile Quaternion tabanlı AHRS uygulaması yazısına da baktıysanız, IMU’lar için filtreleme sistemlerinde zamanın kritik olduğunu görmüşsünüzdür. Uçuş kontrol sisteminin geneli de bundan farklı değildir aslında. GPS’lerin çalışması ve konum çözümleri ya da IMU’ların filtrelenmesi ya da navigasyonun sağlanması ya da rota takibi gibi birçok konuda zaman kritiktir.
Sensörlere gelirsek; barometre için BMP388’i, IMU için MPU9250’yi ve GPS/GNSS için de uBlock Neo M8N modellerini tercih ettim. BMP ve MPU I2C üzerinden, kendi yazdığım kütüphanelerle, GPS ise UART üzerinden UBX protokolü kullanarak haberleşiyor.
BMP ve GPS modeli direkt olarak kartımda da tercih ettiğim modeller. BMP388’in Bosch tarafından yazılmış API’sinin bulunması da artı bir özellik.
RTOS’u demo etmek için, CubeIDE de kullandığımdan CMSISv1’i ve FreeRTOS’u tercih ettim. 4 thread oluşturdum, bunlardan IMU’yu kontrol eden MPU9250 threadi en yüksek öneme sahip zira Quaternion hesaplamaları zamana oldukça duyarlı.
Sonuç olarak sistem gayet güzel çalıştı ve böylelikle temel bir AHRS sistemim olmuş oldu. Sonraki adımlar, bunu sürekli geliştirmek ve navigasyon özellikleri eklemekle geçecek.
Veri çıktısı:
Tüm kodlar açık kaynak olarak mevcut. Ulaşmak için, GitHub sayfamı ziyaret edebilirsiniz:
GitHub - ibrahimcahit/ospreyh7-rtos-core: ospreyH7 Flight Controller RTOS Core for AHRS
ospreyH7 Flight Controller RTOS Core for AHRS. Contribute to ibrahimcahit/ospreyh7-rtos-core development by creating an account on GitHub.
github.com
Okuduğunuz için teşekkür ederim.
Son düzenleyen: Moderatör: