จากผลอากาศพลศาสตร์สู่ DroneSim: เตรียมตารางแรง

กำหนดหน่วย แกน ช่วงข้อมูล และหลักฐานของตารางแรงก่อนนำไปใช้ในแบบจำลองการบิน

ปรับปรุงล่าสุด:

ผู้เรียนไทยฝึกกับคอมพิวเตอร์จำลองและรีโมตข้างโดรนสำรวจที่ถอดใบพัด
ภาพประกอบแนวคิดสร้างด้วย AI

ส่งปริมาณที่มีความหมายเข้าสู่การจำลอง

จบบทนี้ผู้เรียนจะเตรียมสัญญาข้อมูลแรงและเขียนแผนตรวจส่วนเชื่อมต่อได้ Simulator การเคลื่อนที่ต้องการแรงและโมเมนต์ในกรอบพิกัดที่แน่นอน ส่วน CFD หรือข้อมูลทดลองอาจให้ค่าสัมประสิทธิ์ในคนละนิยาม การแปลงผิดหน่วยหรือกลับเครื่องหมายทำให้ลำเร่งผิดทิศได้ แม้ข้อมูลต้นทางคำนวณถูก

บทนี้มี ส่วนเชื่อมตารางแรงต้านที่ติดตั้งและทดสอบใน DroneSim แล้ว พร้อมตัวอย่างสังเคราะห์เพื่อพิสูจน์เส้นทางข้อมูล ส่วนสูตรใบพัดและแบบบันทึกยังใช้เป็นพื้นฐานแยกจาก adapter นี้ ไม่มีชุดแรงที่ผ่าน validation ให้ใช้งานบิน และไม่ได้ใช้ผลจานกำหนดแรงจากบท CFD เป็นแรงต้านลำ

ข้อมูลทดลองหรือ CFD ผ่านการตรวจหน่วยและช่วงใช้ได้ ก่อนส่งแรงเข้าแบบจำลองการเคลื่อนที่

แผนภาพนี้เป็นกระบวนการทั่วไปสำหรับข้อมูลอากาศพลศาสตร์ในอนาคต รวมถึงข้อมูลใบพัดที่อาจต้องใช้ RPM ส่วน adapter ที่ทำงานจริงในบทนี้รับเฉพาะ airframe drag แบบ fixed-direction และ fixed-density โดยไม่ใช้ RPM

นิยามที่ต้องตรงกันก่อนสร้างตาราง

ให้ n เป็นรอบต่อวินาที (ไม่ใช่ rpm), D เป็นเส้นผ่านศูนย์กลาง m, V เป็นความเร็วตามแกนอ้างอิง m/s, T เป็นแรงขับ N และ P เป็นกำลัง W ใช้นิยามมาตรฐาน J = V/(nD), CT = T/(ρn²D⁴), CP = P/(ρn³D⁵) ดังนั้น T = CTρn²D⁴ และ P = CPρn³D⁵

เมื่อ n > 0 โมเมนต์บิดเพลา Q = P/(2πn) หน่วย N·m สัญลักษณ์ Q ตรงนี้คือ torque ต่างจากอัตราไหล Q ในบทช่องไหล ต้องระบุชื่อคอลัมน์ให้ชัด สูตรที่หารด้วย n ไม่ใช้ตรง ๆ ที่รอบศูนย์

UIUC Propeller Database เป็นแหล่งข้อมูลอุโมงค์ลมของใบพัดขนาดเล็ก โดยนิยาม Reynolds ในกราฟ static ใช้คอร์ดและความเร็วหมุนที่สถานี 75% ของรัศมี จึงไม่ควรนำไปเทียบ Re ที่ใช้เส้นผ่านศูนย์กลางโดยไม่มีการแปลง บทนี้เชื่อมไปยังข้อมูลเจ้าของโดยตรง ไม่คัดลอกฐานข้อมูลหรืออ้างสิทธิ์เผยแพร่ต่อโดยอัตโนมัติ

ตัวอย่างแปลงหน่วยที่ติดป้ายว่าสมมติ

กำหนด n = 100 รอบ/s = 6,000 rpm, D = 0.2 m, ρ = 1.225 kg/m³, CT = 0.10 และ CP = 0.05 จะได้ T = 1.96 N, P = 19.6 W และ Q ≈ 0.03119 N·m ค่าเหล่านี้ตั้งขึ้นเพื่อฝึกสูตร ไม่ใช่ข้อมูลใบพัดรุ่นใดหรือผลจาก UIUC

หาก V = 5 m/s จะได้ J = 0.25 แต่ไม่ควรใช้ CT เดิมโดยอัตโนมัติ เพราะสัมประสิทธิ์อาจเปลี่ยนตาม J และ Reynolds กำลัง P ในสูตรเป็นกำลังเพลา ไม่ใช่กำลังไฟจากแบตเตอรี่ ต้องมีโมเดลมอเตอร์/ESC และประสิทธิภาพเพิ่มเติมจึงเชื่อมกับการใช้พลังงานได้

สัญญาข้อมูลที่ต้องตกลงกับปลายทาง

รายการ สิ่งที่ต้องกำหนด
อินพุต รอบหมุน rpm หรือ rad/s อย่างใดอย่างหนึ่งพร้อมตัวแปลง, ความเร็วอากาศสัมพัทธ์, ρ และตัวแปรที่ข้อมูลครอบคลุม
เอาต์พุต แรง N และโมเมนต์ N·m พร้อมแกน กรอบพิกัด และเครื่องหมาย
กรอบพิกัด นิยามแกน rotor/body/world และเมทริกซ์หมุนที่ใช้จริง
จุดกระทำแรง ตำแหน่งเทียบศูนย์มวล เพื่อคำนวณโมเมนต์ r × F
ที่มา แหล่งทดลองหรือ solver รุ่น case ID, geometry ID, วันที่ และ uncertainty
ช่วงใช้ได้ ช่วงรอบ ความเร็ว ความหนาแน่น และเงื่อนไขที่ผ่านการตรวจ
ค่านอกช่วง ปฏิเสธหรือเตือนตามนโยบายที่ตกลง ไม่ extrapolate อย่างเงียบ ๆ
เวลา ค่าเฉลี่ยหรือค่าทันที ช่วงเฉลี่ย ความหน่วงและอัตราอัปเดต

ตารางใน สมุดงานช่องไหล ยังเป็นแบบบันทึกสำหรับวางแผน ส่วน adapter ที่นำไปใช้จริงด้านล่างกำหนดสัญญาเฉพาะของแรงต้านลำ พร้อมแยก provenance เป็น synthetic, simulation หรือ experiment; ป้ายที่มาเหล่านี้ไม่ใช่ใบรับรองความแม่นยำ

ส่วนเชื่อมที่ทำงานจริงและขอบเขตข้อมูล

บน baseline DroneSim commit ต่อไปนี้:

b1e26271a08090c278e6c6a45ed64e9f7f7a0cec

เพิ่ม AirframeForceProvider เป็น อาร์กิวเมนต์ลำดับที่หกแบบ optional ของ stepDynamics ผู้เรียกเดิมยังใช้ drag model เดิม เมื่อส่ง provider เข้ามา จะใช้แรงและโมเมนต์จากตารางแทน params.dragCoef เฉพาะ airframe drag เท่านั้น แรงขับ rotor, reaction torque, แรงโน้มถ่วง และระบบมอเตอร์ยังอยู่ในโมเดลเดิม ไม่มี UI toggle หรือการโหลดตารางอัตโนมัติ

สร้าง provider ด้วยคำสั่ง:

createAerodynamicProvider(data, { densityKgM3, windWorldMps })

ฟังก์ชันตรวจ schema, หน่วย SI, ที่มา และ force_scope ที่เป็น airframe_drag_only ก่อนสร้าง provider ตารางใช้กรอบ FRD: x ไปหน้า, y ไปขวา, z ลง ส่วน body frame ของ DroneSim เป็น FLU: x ไปหน้า, y ไปซ้าย, z ขึ้น จึงหมุนแรงและโมเมนต์ด้วย (x, −y, −z) ก่อนแปลงแรงไป world frame

reference_from_cg_m เป็นเวกเตอร์จาก CG ไปยังจุดอ้างอิงโมเมนต์ของตาราง adapter คำนวณ MCG = Mreference + r × F หลังแปลงเข้ากรอบ FLU ต้องตรวจจุดอ้างอิงกับต้นทางจริงเพื่อไม่ให้เกิดโมเมนต์ซ้ำ

ตารางรุ่นนี้รองรับความเร็วหนึ่งมิติใน ทิศการเคลื่อนที่ผ่านอากาศคงที่ใน body frame, ความหนาแน่นคงที่ และ body angular rates เป็นศูนย์ โดยหัก wind world ออกจากความเร็วลำก่อนแปลงแกน ทิศนี้ตรงข้ามกับทิศลมที่พุ่งเข้าหาลำ ใช้ linear interpolation ภายในช่วงความเร็วเท่านั้น ไม่ extrapolate และไม่ปรับ density หรือมุมให้อัตโนมัติ อินพุตนอกช่วง/ผิดเงื่อนไขจะ throw แทน silent fallback

สาธิตหนึ่งก้าวเวลาและดาวน์โหลดโค้ด

ดาวน์โหลด สมุดงาน DroneSim adapter พร้อมโค้ด test, patch และผล JSON ภายในมีสำเนาไฟล์ original adapter ห้าไฟล์, patch เฉพาะ dynamics.ts, baseline และ SHA256 manifest ไม่รวมทั้ง simulator หรือการแก้ไขอื่นในโครงการ อ่าน README.md เพื่อ apply กับ checkout ใหม่ที่ baseline ตรงกัน แล้วจาก app รัน:

pnpm exec vitest run --maxWorkers=2
pnpm typecheck
pnpm build
New-Item -ItemType Directory -Force output
pnpm exec tsx scripts/aerodynamic-demo.ts output/aerodynamic-demo-reproduced.json

ตั้งชื่อผลลัพธ์ใหม่ทุกครั้ง เพราะ demo ไม่เขียนทับไฟล์เดิม ผลที่บันทึกใช้ตาราง synthetic ที่ 0, 5 และ 10 m/s ให้ Fx = 0, −0.3 และ −1.2 N ตามลำดับ แต่ละการเปรียบเทียบเริ่มใหม่ที่ความสูง 10 m ไม่ได้ต่อกันเป็น trajectory:

กำหนด vx เริ่มต้น 5 m/s และ Δt = 0.001 s เท่ากันทั้งสองกรณี:

โมเดลแรงต้าน vx หลังก้าว (m/s)
Drag เดิม 4.999702558001189
Synthetic override 4.99940511600238

การรัน integration ผ่าน 650 tests ด้วย --maxWorkers=2, typecheck, build และ lint เฉพาะ TypeScript ที่แก้ ผลเหล่านี้ตรวจ software behavior รวมถึงแกน โมเมนต์ interpolation และการปฏิเสธข้อมูลผิดเงื่อนไข ไม่ใช่การ validate การบิน แรงโน้มถ่วงทำให้ทิศความเร็วเปลี่ยนได้ทันที จึงไม่ควรใช้ตาราง fixed-direction นี้กับ trajectory ทั่วไป

CFD กับ adapter เป็นสองการทดลองแยกกัน: source 0.08 N ของบทก่อนเป็นแรง rotor-like ที่กำหนดให้ของไหล ไม่ใช่แรงต้าน airframe ที่ solver ทำนาย การส่งเข้า adapter จะทำให้ ownership ของแรงผิด ก่อนเชื่อมข้อมูลจริงต้องมีแรงต้านลำที่ geometry, density, ทิศ, จุดอ้างอิง และช่วงเงื่อนไขตรงกันโดยไม่มี rotor หรือ gravity รวมอยู่

แผนตรวจการเชื่อมต่อก่อนเชื่อผล

เริ่มทดสอบการแปลง rpm เป็น rad/s และ n แล้วป้อนแรงสังเคราะห์ที่ทราบทิศเพื่อเช็กแกน ทดสอบแรงที่เยื้องศูนย์มวลเพื่อเช็ก r × F และแยกโมเมนต์ปฏิกิริยาจาก torque เพลา ถัดมาทดสอบ interpolation ภายในช่วง และตรวจว่าอินพุตนอกช่วงถูกจัดการตามสัญญา รวมถึงกรณีรอบศูนย์

เมื่อมีข้อมูลจริงจึงเปรียบเทียบแรงกับการทดลองที่เงื่อนไขตรงกัน ประเมินความไวต่อความหนาแน่น รอบและวิธีเฉลี่ย แล้วค่อยทดสอบการเคลื่อนที่รวม การที่ FLOWUnsteady รองรับงานอากาศพลศาสตร์ตามเวลาไม่ได้หมายความว่าผลใด ๆ ใช้กับ DroneSim ได้ทันที หรือว่าได้จำลอง rotor–rotor interaction ครบในตารางใบพัดเดี่ยว

แบบฝึกพร้อมแนวคำตอบ

โจทย์: ในตัวอย่างสมมติ หากเพิ่ม n เป็น 200 รอบ/s โดยตรึง ρ, D และสมมติ CT, CP คงเดิม จะได้ T และ P เท่าไร? สมมติฐานใดต้องตรวจใหม่?

แนวคำตอบ: T เพิ่มสี่เท่าเป็น 7.84 N และ P เพิ่มแปดเท่าเป็น 156.8 W แต่ต้องตรวจ Reynolds, tip Mach, J และช่วงข้อมูล เพราะสัมประสิทธิ์อาจไม่คงที่ การคูณตามสูตรไม่ได้ขยายช่วง validation

สิ่งที่พร้อมใช้คือสูตร แบบบันทึก โค้ด adapter และหลักฐาน software integration สิ่งที่ยังต้องจัดหาคือ geometry ที่มีสิทธิ์ใช้และข้อมูลแรงต้านตรงรุ่น/สภาวะที่ผ่าน validation รวมถึงโมเดลหลายมุมและ angular rates สำหรับการบินทั่วไป กลับไปตรวจ กระบวนการ CFD หรือทบทวน ภาพรวมบทเรียน

บรรณานุกรม

ตรวจแหล่งต้นทาง 26 กันยายน 2569

ใช้ในรายวิชา

วิธีอ้างอิงหน้านี้

สถาบันโดรน มหาวิทยาลัยรังสิต. (2569). จากผลอากาศพลศาสตร์สู่ DroneSim: เตรียมตารางแรง. ใน คลังความรู้หลักสูตร ทล.บ. เทคโนโลยีระบบอากาศยานไร้คนขับ. https://rsu-drt.pk-research.work/th/kb/knowledge/aerodynamics/dronesim-bridge/

ต้นฉบับจากคลังความรู้โดรน: https://drone.pk-research.work/knowledge/aerodynamics/dronesim-bridge/ · © PK-Research