GÖREV KAYDI

GÖREV KAYDI

KAYIT AÇIK

ATILIM UAV · YER KONTROL İSTASYONU

GÖREV KAYDI / DETAY

Arşiv

CANLI · OKUMA MODU

Mekanik

Airdrop Mekanizması Tasarımı: Servo mu, Vinç mi ve Yük Gerçekte Nereye İniyor?

Airdrop Mekanizması Tasarımı: Servo mu, Vinç mi ve Yük Gerçekte Nereye İniyor?

Üç farklı ileri hızda bırakma yörüngeleri ve hedefe göre oluşan sapma

ŞEK. 01

KAYIT KÜNYESİ

Kategori

Mekanik

TARİH

TÜM KAYITLAR

Sahadaki ilk otonom bırakışımızda her şey planladığımız gibi gitti: araç hedefin GPS koordinatına uçtu, servo tetiklendi, mandal açıldı, su şişesi düştü. Sonra şişeyi yerde ararken onu hedef işaretinin epeyce ötesinde bulduk. Mekanizma kusursuz çalışmıştı; hata mekanizmada değildi.

İlk bakışta airdrop mekanik bir problem gibi görünür: "yükü tutan bir mandal yap, komutla aç." Pratikte ise üç ayrı problemin toplamıdır: yükü tüm uçuş boyunca güvenle tutan bir mekanizma, o mekanizmayı doğru anda tetikleyen bir kontrol zinciri ve bırakıldıktan sonra yükün nereye gideceğini öngören bir balistik hesap. Üçünden biri eksik kalırsa sistem "çalışır" ama hiçbir şeyi vuramaz.

Bu yazıda dördünü de sırayla ele alıyoruz: mekanizma seçenekleri ve karşılaştırmaları, servo tork hesabı, ArduPilot tarafındaki tetikleme yöntemleri ve en çok göz ardı edilen kısım (bırakma anının fiziği). Her sayısal örneğin arkasında duran formülü de veriyoruz ki kendi aracınıza uyarlayabilesiniz.

Mekanizma seçenekleri

Dört ana yaklaşım var. Her birinin iyi çalıştığı bir senaryo ve tamamen çöktüğü bir senaryo mevcut.

Mekanizma

Nasıl çalışır

Artıları

Eksileri

Ne zaman tercih edilir

Servo mandal

Bir servo pimi ya da mandalı çeker, yük serbest düşüşe geçer

Basit, hafif, ucuz, hızlı (0.1–0.3 s)

Yük serbest düşer; kırılgan yükler ya da yumuşak iniş için uygun değil

Dayanıklı yük, düşük irtifa, hızın önce geldiği görevler

Vinç / halatla indirme

Motorlu bir makara halatı salar, yük yavaşça aşağı iner

Yumuşak iniş, kırılgan yükleri kaldırır, yüksek irtifadan hassas yerleştirme

Ağır, karmaşık, yavaş (onlarca saniye), halatın dolaşma riski

Kırılgan yük, iniş yapılamayan arazi, geniş zaman bütçesi

Elektromıknatıs / EPM

Manyetik tutma, komutla bırakma

Hareketli parça yok, aşınma yok; EPM sürekli akım çekmez

Yükün ferromanyetik bir arayüz plakasına ihtiyacı var; pusulayla manyetik girişim riski

Tekrarlı al-bırak görevleri, mekanik aşınmanın sorun olduğu durumlar

Paraşüt

Yük bırakılır ve bir paraşüt açılır

Düşük çarpma enerjisi, kırılgan yükü korur

Rüzgâr sürüklenmesi çarpıcı biçimde büyür, isabet ciddi şekilde bozulur

Yükü sağlam indirmek, hedefi tutturmaktan daha önemliyse

SUAS 2026 aracımızda servo mandalı tercih ettik: yük dayanıklı, görev süresi dar ve mekanizmaya ayrılan kütle bütçesi sınırlı. İsabet açısından en iyi seçenek vinç, çünkü balistik problemini tamamen ortadan kaldırıyor; ama ~1 kg ek kütle ve 20–40 saniyelik bırakma çevrimi görev profilimize sığmadı.

Elektromıknatıs seçeneği için iki uyarı. Klasik bir elektromıknatıs tuttuğu sürece akım çeker (gücü kaybederseniz yükü de kaybedersiniz); elektrokalıcı mıknatıs (EPM, yalnızca durum değiştirirken enerji harcayan mıknatıs) ise beklerken hiç akım çekmez, ancak anahtarlama anında kısa süreli yüksek akım çeker ve üretici bunun için ayrı bir besleme öneriyor. Her iki durumda da mıknatısı pusuladan olabildiğince uzağa yerleştirin ve montajdan sonra pusula kalibrasyonunu yenileyin.

Servo seçimi: tork hesabı

Servo torku genelde kgf·cm cinsinden verilir. Dönüşüm:

1 kgf·cm = 0.0981 N·m

1 N·m = 10.2 kgf·cm

Senaryo A: kolu yükü doğrudan taşıyor. En kötü tasarım ve aynı zamanda en yaygın olanı: yükün ağırlığı bir kol mesafesinde servo hornuna biniyor.

T = n × m × g × r

Sembol

Anlamı

n

dinamik yük katsayısı (manevrayı ve iniş şokunu kapsar)

m

yük kütlesi [kg]

g

9.81 m/s²

r

kuvvetin servo miline olan dik uzaklığı [m]

Örnek: m = 1.0 kg, r = 3 cm = 0.03 m, n = 1 (statik)

T = 1 × 1.0 × 9.81 × 0.03 = 0.294 N·m = 3.0 kgf·cm

2.5 emniyet katsayısı (sürtünme + dinamik yük) → en az ~7.5 kgf·cm

Senaryo B: kesme pimli mandal. Yükün ağırlığı gövdeye aktarılır ve servonun tek işi pimi sürtünmeye karşı çekmektir. Aynı yük için ihtiyaç duyduğunuz tork bir büyüklük mertebesi düşer:

F_friction = mu × N = 0.30 × (1.0 × 9.81) = 2.94 N

r_horn = 1.5 cm = 0.015 m

T = 2.94 × 0.015 = 0.044 N·m = 0.45 kgf·cm

3 emniyet katsayısı → ~1.4 kgf·cm yeterli

Buradaki asıl ders şu: yükü servoya taşıtmayın. Yükü yapıya aktaran ve servoya yenmesi gereken tek şey olarak sürtünmeyi bırakan bir geometri (kesme pimi, ölü nokta üstü mandal) küçük ve hafif bir servoyla çalışır. Sürtünme katsayısı malzeme çiftine bağlıdır; 0.3 muhafazakâr bir başlangıç noktasıdır, kesin değer için üreticinin veri sayfasına bakın.

Torkun ötesinde, servo seçerken bakmanız gerekenler:

  • Metal dişli: iniş şoku ve titreşim naylon dişlileri zamanla sıyırır. Airdrop için metal dişli pazarlık konusu değil.

  • Hız: veri sayfaları bunu s/60° olarak verir. 90°'lik bir hareket için süre (90/60) × değerdir. Bu süre doğrudan isabet hesabına girer (aşağıda ayrıntısı var).

  • Besleme gerilimi: tork da hız da gerilime bağlıdır; 4.8 V ve 6.0 V satırları farklı sayılar verir. Gerçekte kullanacağınız gerilimin satırını okuyun.

  • Akım: stall (rotor kilitli) akımı boştaki çekişin çok üzerindedir. Kesin değer için üreticinin veri sayfasına bakın.

Güç ve güvenlik

Pixhawk sınıfı otopilotlar servo rayını beslemez; ArduPilot dokümantasyonu bunu açıkça yazıyor. Servo gücü ayrı bir BEC'ten gelmek zorunda.

Kritik uyarılar:

  • Servo rayının normal çalışma aralığı 4.1–5.7 V. Bunun üzerine çıkmak otopilotun güç yönetimini devreye sokar.

  • Otopilotu yalnızca servo rayından beslemek tehlikelidir; özellikle dijital servoların ürettiği gerilim sıçramaları 5.7 V'u aşıp uçuş sırasında FMU'yu yeniden başlatabilir. Yedek besleme olarak 5 V BEC kullanacaksanız ArduPilot, gerilimi sınırlamak için bir Zener diyot (1N5339) öneriyor.

  • Servo stall akımı BEC'i aşırı yüklerse gerilim çöker, alıcı ya da otopilot brown-out (gerilim düşmesiyle kilitlenme) yaşayabilir. Mekanizmayı pervaneler sökülmüş halde test edin ve yük altındaki BEC gerilimini ölçün.

  • Yüksek akımlı bir EPM'i ya da vinç motorunu ana LiPo'ya bağlarken kablo kesitini ve konnektörün akım değerini kontrol edin; ince kalan kablo kısa süreli yüksek akım darbelerinde ısınır ve yalıtımını kaybeder.

FC üzerinden kontrol: DO_SET_SERVO ve alternatifleri

Görev içinde ham servo komutu. ArduPilot'ta DO_SET_SERVO (MAVLink komut 183) bir çıkışı verilen PWM değerine sürer. Bu bir "do" komutudur: iki waypoint arasında çalışır ve bir görevin ilk ya da son satırı olamaz.

#

Komut

Ayrıntı

1

WAYPOINT

bırakma noktası, 20 m

2

DO_SET_SERVO

Ser No: 9, PWM: 1900

3

WAYPOINT

çıkış noktası, 20 m

Önemli bir tuzak: DO_SET_SERVO yalnızca o çıkışın SERVOx_FUNCTION değeri 0 (Disabled), 1 (RCPassThru), 22, 23 ya da 51–66 (RCIN1–16) ise kabul edilir. Başka bir fonksiyon atanmışsa komut "channel conflict" (kanal çakışması) hatasıyla reddedilir. Copter'da servoyu AUX çıkışlarından birine bağlayın; ana çıkışlar motorlar için yüksek frekansta sürülür.

Gripper altyapısı. Ham PWM yerine ArduPilot'un gripper altyapısını kullanmak daha temiz: açık ve kapalı PWM değerleri parametrelerde durur, komut tarafı çok daha basitleşir:

SERVO9_FUNCTION = 28     # Gripper
GRIP_ENABLE     = 1
GRIP_TYPE       = 1      # Servo (reboot after changing)
GRIP_GRAB       = 1100   # payload held
GRIP_NEUTRAL    = 1100
GRIP_RELEASE    = 1900   # release
RC9_OPTION      = 19     # manual ground test from a transmitter switch
SERVO9_FUNCTION = 28     # Gripper
GRIP_ENABLE     = 1
GRIP_TYPE       = 1      # Servo (reboot after changing)
GRIP_GRAB       = 1100   # payload held
GRIP_NEUTRAL    = 1100
GRIP_RELEASE    = 1900   # release
RC9_OPTION      = 19     # manual ground test from a transmitter switch

Görev içinde DO_GRIPPER (komut 211) kullanılır: param2 = 0 bırakır, 1 tutar.

Görev bilgisayarından. Hedefi bilgisayarlı görüyle buluyor ve bırakma anına kendiniz karar veriyorsanız, komutu Jetson üzerinden pymavlink ile göndermek en esnek yol (görev bilgisayarı ve MAVLink rehberimiz):

from pymavlink import mavutil

m = mavutil.mavlink_connection('udp:127.0.0.1:14550')
m.wait_heartbeat()

m.mav.command_long_send(
    m.target_system, m.target_component,
    mavutil.mavlink.MAV_CMD_DO_SET_SERVO,  # 183
    0,        # confirmation
    9,        # param1: servo output number
    1900,     # param2: PWM (us)
    0, 0, 0, 0, 0)

print(m.recv_match(type='COMMAND_ACK', blocking=True, timeout=3))
from pymavlink import mavutil

m = mavutil.mavlink_connection('udp:127.0.0.1:14550')
m.wait_heartbeat()

m.mav.command_long_send(
    m.target_system, m.target_component,
    mavutil.mavlink.MAV_CMD_DO_SET_SERVO,  # 183
    0,        # confirmation
    9,        # param1: servo output number
    1900,     # param2: PWM (us)
    0, 0, 0, 0, 0)

print(m.recv_match(type='COMMAND_ACK', blocking=True, timeout=3))

COMMAND_ACK mesajını mutlaka okuyun: komutunuzun reddedildiğini uçuş sonrası logdan öğrenmek pahalı bir öğrenme yöntemidir. Bu akışı önce SITL'de doğrulayın (SITL + Gazebo rehberi).

Vinç tarafına geçerseniz, ArduPilot'ta bir DO_WINCH komutu var (pozitif uzunluk halatı salar) ve NAV_PAYLOAD_PLACE görev komutu, motor çıkışlarındaki itki düşüşünden yükün yere değdiğini algılayıp gripper'ı açar. İlgili parametreler PLDP_SPEED_DN (iniş hızı), PLDP_THRESH (temas eşiği, itki azalmasının yüzdesi olarak), PLDP_RNG_MAX ve PLDP_DELAY.

Bırakma fiziği: yük nereye düşer

İlk denememizde atladığımız kısım tam olarak burası. Bırakma anında yük, aracın yatay hızını da beraberinde taşır ve düşüş boyunca o hızla ilerlemeye devam eder.

Düşüş süresi: t = sqrt(2h / g)

Yatay sürüklenme: x = v_ground × t

Dikey çarpma hızı: v_z = g × t

Uçuş irtifamızdan somut bir örnek:

h = 20 m, g = 9.81 m/s², v_ground = 5 m/s

t = sqrt(2 × 20 / 9.81) = sqrt(4.08) = 2.02 s

x = 5 × 2.02 = 10.1 m

v_z = 9.81 × 2.02 = 19.8 m/s

Yani 20 metreden, üzerinden 5 m/s ile geçerken bıraktığınız bir yük, bırakma noktasının 10 metre ötesine düşer. Bırakma komutunu hedefin 10 metre öncesinde vermeniz gerekir. Aynı hesap 3 m/s'de 6.1 m, 8 m/s'de 16.2 m veriyor; yatay sürüklenme hızla doğrusal, irtifanın kareköküyle orantılı büyür.

Buradaki v_ground, hava hızı değil yer hızıdır (GPS'ten okunur). Rüzgârda araç yan yatarak (crab) uçtuğunda ikisi belirgin biçimde ayrışır; formüle yanlış olanı koyarsanız hata metrelerle ölçülür.



Bırakma noktasıyla çarpma noktası arasındaki yatay sürüklenmenin şeması

Sürükleme ve rüzgâr

Yukarıdaki formüller sürüklemeyi yok sayıyor. Bunun bize ne kadar hataya mal olduğunu limit hız üzerinden kontrol edebiliriz:

v_t = sqrt( 2mg / (rho × Cd × A) )

0.5 L su şişesi: m = 0.5 kg, A ≈ 0.0044 m², Cd ≈ 0.9, rho = 1.225 kg/m³

v_t = sqrt(9.81 / 0.00485) ≈ 45 m/s

Bizim çarpma hızımız 19.8 m/s, yani limit hızın yarısından az. Bu rejimde sürükleme küçük bir etki: yoğun ve kompakt bir yük için vakum yaklaşımının yatay sürüklenmeyi yüzde birkaç fazla tahmin etmesini bekleriz; yani gerçek çarpma noktası hesaplananın biraz gerisinde kalır. Hafif ve hacimli yüklerde (köpük, karton, paraşüt altındaki bir paket) bu fark hızla büyür ve formül kullanılamaz hale gelir; o noktada deneysel kalibrasyon zorunludur.

Rüzgârın iki ayrı etkisi var ve büyük olanı genellikle beklemediğiniz taraftan geliyor. Düşen yükün doğrudan rüzgârla sürüklenmesi, yoğun bir cisim için ~2 saniyelik düşüşte sınırlı kalır. Asıl hata kaynağı aracın kendisidir: rüzgârda konum tutma hatası büyür, yer hızı dalgalanır ve bırakma anındaki gerçek hız planladığınızdan farklı olur. Hafif ve hacimli yüklerde sıralama tersine döner, yükün sürüklenmesi baskın hale gelir.

İsabeti artırmanın yolları

Yatay sürüklenmeyi sıfırlamanın en temiz yolu v_ground değerini sıfırlamaktır. Hedefin üzerinde durup (LOITER ya da GUIDED ile konum tutarak) orada bırakırsanız x = 0 olur; geriye yalnızca konum hatası ve rüzgâr sürüklenmesi kalır. Bedeli zaman: kararlı bir hover'a oturmak onlarca saniye yiyor.

Bırakma irtifasını düşürmek aynı anda iki kanaldan fayda sağlar: t kısalır (daha az sürüklenme) ve rüzgârın etki etmek için daha az zamanı olur. 20 m yerine 10 m'den bırakmak düşüş süresini 2.02 s'den 1.43 s'ye, 5 m/s'deki sürüklenmeyi de 10.1 m'den 7.1 m'ye indiriyor.

Hedefi bilgisayarlı görüyle merkeze almak, GPS koordinatının doğruluğuna olan bağımlılığı ortadan kaldırır. Tespiti gimbal kamerasından alın (YOLO eğitim rehberimiz), görüntü merkezine göre bir sapmaya çevirip konum düzeltmesi uygulayın; hedefin koordinatı birkaç metre şaşsa bile yine de tutturursunuz.

Son olarak gecikme bütçenizi ölçün. Tespit → karar → MAVLink komutu → FC işleme → servo hareketi zincirinin toplam süresi ne çıkarsa çıksın, araç o süre boyunca yol almaya devam eder:

latency drift = v_ground × t_latency

5 m/s ve 0.3 s toplam gecikme → 1.5 m ek hata

Servonun kendi hareket süresi de bu bütçenin ölçülebilir bir parçası; veri sayfasındaki s/60° değerini hesaba katın. Kendi zincirinizi ölçmeden hazır bir sayı kullanmayın.

Bizim sonucumuz

SUAS 2026 aracımızla yaptığımız otonom bırakışlarda, yaklaşık 20 metreden bıraktığımız su şişesi hedefe ortalama 5 metre uzağa düştü. Servo mandal mekanizması her denemede açıldı; kalan hata, bırakma anındaki yer hızı belirsizliği, GPS konum hatası ve gecikme bütçesinin toplamıydı. Bir sonraki iterasyonda hover'dan bırakmaya ve hedefi kamerayla merkeze almaya geçiyoruz.

Sık düşülen hatalar

  • İleri hızı yok saymak. Hepsinin içinde en pahalı hata bu. Doğrudan hedefin üzerinde bırakırsanız yük 10 metre ötesine düşer; formülü uygulayın.

  • Yer hızı yerine hava hızını kullanmak. Rüzgârda ikisi ayrışır ve fark doğrudan metrelerce ıskaya dönüşür.

  • Yükü servoya taşıtmak. Yükü doğrudan taşıyan bir kol, kesme pimli mandala kıyasla bir büyüklük mertebesi daha fazla tork ister; servo büyür, ağırlaşır ve daha çok akım çeker.

  • Naylon dişli. Titreşim ve iniş şoku altında dişliler sıyrılır ve bunu genellikle tam da yükü kaybettiğiniz anda fark edersiniz.

  • Yükün takılması. Mandal açılır ama yük gövdeye, bir kabloya ya da kendi ambalajına takılıp geç düşer. Mekanizmayı yerde, tam ölçüsünde ve tam ağırlığındaki yükle, aracın gerçekte uçtuğu duruşlarda (öne yatık, yatışta) defalarca test edin.

  • Servo rayını otopilottan beslemeye çalışmak. Pixhawk servo rayını beslemez; ayrı bir BEC kullanın ve gerilimi 5.7 V'un altında tutun.

  • SERVOx_FUNCTION çakışmaları. Çıkışa başka bir fonksiyon atanmışsa DO_SET_SERVO sessizce reddedilir; COMMAND_ACK mesajını okuyun.

Pratik özet

  1. Mekanizmayı göreve göre seçin: dayanıklı yük + zaman baskısı → servo mandal; kırılgan yük + yumuşak iniş → vinç; tekrarlı al-bırak → EPM. Paraşütü yalnızca isabetten vazgeçmeyi göze alabiliyorsanız kullanın.

  2. Tork hesabını yapın, sonra geometriyi düzeltin: T = n × m × g × r; ardından yükü yapıya aktaran bir mandal tasarlayarak r değerini ve ihtiyacınız olan torku küçültün. Metal dişli, 2–3 emniyet katsayısı.

  3. Balistiği görev planına gömün: t = sqrt(2h/g), x = v_ground × t. Bırakma waypoint'ini hedeften x kadar önceye koyun ve v_ground değerini GPS'ten alın.

  4. Gücü ayırın: servo için ayrı bir BEC, 4.1–5.7 V aralığı, yük altında gerilim ölçümü, pervaneler sökülü halde yer testi.

  5. İsabeti adım adım artırın: önce ileri hız düzeltmesi, sonra daha düşük bırakma irtifası, ardından hover'dan bırakma ve en son görü tabanlı merkezleme. Her adımı SITL'de doğrulayın, sonra sahada tekrarlı bırakışlarla ölçün.

©2026 ATILIM UAV TEAM

©2026 ATILIM UAV TEAM