[{"data":1,"prerenderedAt":10785},["ShallowReactive",2],{"project-2026-omnicopter-control-research":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"_hidden":6,"status":10,"year":11,"image":12,"funded":6,"body":13,"_type":10778,"_id":10779,"_source":10780,"_file":10781,"_stem":10782,"_extension":10783,"locale":10784},"\u002Fprojects\u002F2026-omnicopter-control-research","projects",false,"","Omnicopter Control Research","A hardware-based research project for fully-actuated 6-DoF aerial vehicles","ongoing",2026,"assets\u002Fomnicopter_banner.svg",{"type":14,"children":15,"toc":10713},"root",[16,31,38,54,81,135,139,146,159,171,203,237,240,246,339,348,351,357,512,519,524,581,584,590,602,650,662,1091,1096,1394,1445,2147,2361,2367,2514,2517,2523,2534,2539,2567,2579,2660,2663,2669,2674,2698,2701,2707,2716,2728,2734,2739,2826,2832,2855,2861,2884,2890,2895,2956,2985,2988,2994,3003,3021,3026,3034,3040,3112,3118,3141,3147,3170,3176,3187,3210,3215,3238,3241,3247,3252,3258,3365,3371,3529,3532,3538,3593,3817,3866,3872,4200,4206,4353,4356,4362,4371,4376,4409,4412,4418,4423,4434,4442,4448,4453,4676,4681,4709,4715,4720,6452,6456,7261,7267,7339,7345,7445,7448,7454,7459,7464,7502,7508,7581,7587,7793,7799,7885,7888,7894,7903,7921,7927,8080,8086,8091,8181,8186,8586,8591,8900,8911,8917,8922,8998,9003,9570,9575,9581,9696,9699,9705,9711,9734,9740,9806,9812,9835,9841,9859,9865,9888,9891,9897,9902,10315,10318,10324,10329,10372,10375,10381,10493,10496,10502,10530,10533,10539,10545,10627,10633,10690,10693,10707],{"type":17,"tag":18,"props":19,"children":21},"element","p",{"align":20},"center",[22,25],{"type":23,"value":24},"text","\n  ",{"type":17,"tag":26,"props":27,"children":30},"img",{"src":12,"alt":28,"width":29},"Omnicopter Control Research Banner","100%",[],{"type":17,"tag":32,"props":33,"children":35},"h1",{"align":20,"id":34},"omnicopter-control-research",[36],{"type":23,"value":37},"🚁 Omnicopter Control Research",{"type":17,"tag":18,"props":39,"children":40},{"align":20},[41,42,48,52],{"type":23,"value":24},{"type":17,"tag":43,"props":44,"children":45},"b",{},[46],{"type":23,"value":47},"Optimal Control · Robust Control · Fault Diagnosis · Fault-Tolerant Control",{"type":17,"tag":49,"props":50,"children":51},"br",{},[],{"type":23,"value":53},"\n  A hardware-based research project for fully-actuated 6-DoF aerial vehicles.\n",{"type":17,"tag":18,"props":55,"children":56},{"align":20},[57,58,63,64,69,70,75,76],{"type":23,"value":24},{"type":17,"tag":26,"props":59,"children":62},{"src":60,"alt":61},"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fplatform-Omnicopter-00B8D9?style=for-the-badge","platform",[],{"type":23,"value":24},{"type":17,"tag":26,"props":65,"children":68},{"src":66,"alt":67},"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstatus-Hardware%20Built%20%2B%20Tested-36CFC9?style=for-the-badge","status",[],{"type":23,"value":24},{"type":17,"tag":26,"props":71,"children":74},{"src":72,"alt":73},"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Ffocus-Optimal%20%7C%20Robust%20%7C%20Fault%20Control-8A63D2?style=for-the-badge","focus",[],{"type":23,"value":24},{"type":17,"tag":26,"props":77,"children":80},{"src":78,"alt":79},"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fflight-6--DoF%20Fully%20Actuated-FFB000?style=for-the-badge","6dof",[],{"type":17,"tag":18,"props":82,"children":83},{"align":20},[84,85,92,94,100,101,107,108,114,115,121,122,128,129],{"type":23,"value":24},{"type":17,"tag":86,"props":87,"children":89},"a",{"href":88},"#start-here",[90],{"type":23,"value":91},"Start Here",{"type":23,"value":93}," ·\n  ",{"type":17,"tag":86,"props":95,"children":97},{"href":96},"#what-is-an-omnicopter",[98],{"type":23,"value":99},"What is an Omnicopter?",{"type":23,"value":93},{"type":17,"tag":86,"props":102,"children":104},{"href":103},"#why-build-one",[105],{"type":23,"value":106},"Motivation",{"type":23,"value":93},{"type":17,"tag":86,"props":109,"children":111},{"href":110},"#implementation-path",[112],{"type":23,"value":113},"Implementation",{"type":23,"value":93},{"type":17,"tag":86,"props":116,"children":118},{"href":117},"#research-focus",[119],{"type":23,"value":120},"Research Focus",{"type":23,"value":93},{"type":17,"tag":86,"props":123,"children":125},{"href":124},"#media-gallery",[126],{"type":23,"value":127},"Media",{"type":23,"value":93},{"type":17,"tag":86,"props":130,"children":132},{"href":131},"#references",[133],{"type":23,"value":134},"References",{"type":17,"tag":136,"props":137,"children":138},"hr",{},[],{"type":17,"tag":140,"props":141,"children":143},"h2",{"id":142},"start-here",[144],{"type":23,"value":145},"🧭 Start Here",{"type":17,"tag":18,"props":147,"children":148},{},[149,151,157],{"type":23,"value":150},"This repository documents our exploration of ",{"type":17,"tag":152,"props":153,"children":154},"strong",{},[155],{"type":23,"value":156},"Omnicopter design, modeling, optimal control, robust control, and fault-tolerant control",{"type":23,"value":158},".",{"type":17,"tag":18,"props":160,"children":161},{},[162,164,169],{"type":23,"value":163},"An Omnicopter is not just “a drone with more propellers”. It is a ",{"type":17,"tag":152,"props":165,"children":166},{},[167],{"type":23,"value":168},"fully-actuated aerial vehicle",{"type":23,"value":170}," that can command force and torque in all three spatial dimensions. In practice, this means it can:",{"type":17,"tag":172,"props":173,"children":174},"ul",{},[175,188,193,198],{"type":17,"tag":176,"props":177,"children":178},"li",{},[179,181,186],{"type":23,"value":180},"🔼 move upward, downward, sideways, forward, and backward ",{"type":17,"tag":152,"props":182,"children":183},{},[184],{"type":23,"value":185},"without needing to tilt first",{"type":23,"value":187},";",{"type":17,"tag":176,"props":189,"children":190},{},[191],{"type":23,"value":192},"🔄 rotate around roll, pitch, and yaw while maintaining position;",{"type":17,"tag":176,"props":194,"children":195},{},[196],{"type":23,"value":197},"🧲 hover at unusual or even inverted attitudes when actuator limits allow;",{"type":17,"tag":176,"props":199,"children":200},{},[201],{"type":23,"value":202},"🛡️ use actuator redundancy for safer control allocation and fault recovery.",{"type":17,"tag":204,"props":205,"children":206},"blockquote",{},[207],{"type":17,"tag":18,"props":208,"children":209},{},[210,215,217,222,224,229,231,236],{"type":17,"tag":152,"props":211,"children":212},{},[213],{"type":23,"value":214},"Project statement:",{"type":23,"value":216}," build and test an Omnicopter hardware platform, then use it as a research testbed for ",{"type":17,"tag":152,"props":218,"children":219},{},[220],{"type":23,"value":221},"optimal control",{"type":23,"value":223},", ",{"type":17,"tag":152,"props":225,"children":226},{},[227],{"type":23,"value":228},"robust control",{"type":23,"value":230},", and ",{"type":17,"tag":152,"props":232,"children":233},{},[234],{"type":23,"value":235},"fault diagnosis \u002F fault-tolerant control",{"type":23,"value":158},{"type":17,"tag":136,"props":238,"children":239},{},[],{"type":17,"tag":140,"props":241,"children":243},{"id":242},"project-at-a-glance",[244],{"type":23,"value":245},"✨ Project at a Glance",{"type":17,"tag":247,"props":248,"children":249},"table",{},[250,269],{"type":17,"tag":251,"props":252,"children":253},"thead",{},[254],{"type":17,"tag":255,"props":256,"children":257},"tr",{},[258,264],{"type":17,"tag":259,"props":260,"children":261},"th",{},[262],{"type":23,"value":263},"Item",{"type":17,"tag":259,"props":265,"children":266},{},[267],{"type":23,"value":268},"Description",{"type":17,"tag":270,"props":271,"children":272},"tbody",{},[273,287,300,313,326],{"type":17,"tag":255,"props":274,"children":275},{},[276,282],{"type":17,"tag":277,"props":278,"children":279},"td",{},[280],{"type":23,"value":281},"🛩️ Vehicle type",{"type":17,"tag":277,"props":283,"children":284},{},[285],{"type":23,"value":286},"Omnidirectional \u002F fully-actuated multirotor UAV",{"type":17,"tag":255,"props":288,"children":289},{},[290,295],{"type":17,"tag":277,"props":291,"children":292},{},[293],{"type":23,"value":294},"🎯 Research target",{"type":17,"tag":277,"props":296,"children":297},{},[298],{"type":23,"value":299},"Optimal allocation, robust 6-DoF tracking, actuator\u002Fsensor fault diagnosis",{"type":17,"tag":255,"props":301,"children":302},{},[303,308],{"type":17,"tag":277,"props":304,"children":305},{},[306],{"type":23,"value":307},"🧱 Hardware status",{"type":17,"tag":277,"props":309,"children":310},{},[311],{"type":23,"value":312},"A complete Omnicopter hardware platform has been constructed and tested",{"type":17,"tag":255,"props":314,"children":315},{},[316,321],{"type":17,"tag":277,"props":317,"children":318},{},[319],{"type":23,"value":320},"🧠 Core challenge",{"type":17,"tag":277,"props":322,"children":323},{},[324],{"type":23,"value":325},"Convert a desired 6D wrench into safe, efficient, and fault-aware motor commands",{"type":17,"tag":255,"props":327,"children":328},{},[329,334],{"type":17,"tag":277,"props":330,"children":331},{},[332],{"type":23,"value":333},"🧪 Validation path",{"type":17,"tag":277,"props":335,"children":336},{},[337],{"type":23,"value":338},"Bench tests → simulation → tethered flight → free flight → fault-injection experiments",{"type":17,"tag":18,"props":340,"children":341},{"align":20},[342,343],{"type":23,"value":24},{"type":17,"tag":26,"props":344,"children":347},{"src":345,"alt":346,"width":29},"assets\u002Fresearch_roadmap.svg","Project roadmap",[],{"type":17,"tag":136,"props":349,"children":350},{},[],{"type":17,"tag":140,"props":352,"children":354},{"id":353},"media-gallery",[355],{"type":23,"value":356},"🎬 Media Gallery",{"type":17,"tag":247,"props":358,"children":359},{},[360],{"type":17,"tag":270,"props":361,"children":362},{},[363,439],{"type":17,"tag":255,"props":364,"children":365},{},[366,404],{"type":17,"tag":277,"props":367,"children":369},{"width":368,"align":20},"50%",[370,371,383,384,387,388,393,394,397,398],{"type":23,"value":24},{"type":17,"tag":86,"props":372,"children":374},{"href":373},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=nsPkQYugfzs",[375,377,382],{"type":23,"value":376},"\n    ",{"type":17,"tag":26,"props":378,"children":381},{"src":379,"alt":380,"width":29},"https:\u002F\u002Fimg.youtube.com\u002Fvi\u002FnsPkQYugfzs\u002Fhqdefault.jpg","PX4 Based Omnicopter Using the New Dynamic Control Allocation",[],{"type":23,"value":24},{"type":23,"value":24},{"type":17,"tag":49,"props":385,"children":386},{},[],{"type":23,"value":24},{"type":17,"tag":43,"props":389,"children":390},{},[391],{"type":23,"value":392},"PX4-based Omnicopter with dynamic control allocation",{"type":23,"value":24},{"type":17,"tag":49,"props":395,"children":396},{},[],{"type":23,"value":24},{"type":17,"tag":399,"props":400,"children":401},"sub",{},[402],{"type":23,"value":403},"Useful reference for PX4 control allocation and practical 6-DoF flight.",{"type":17,"tag":277,"props":405,"children":406},{"width":368,"align":20},[407,408,419,420,423,424,429,430,433,434],{"type":23,"value":24},{"type":17,"tag":86,"props":409,"children":411},{"href":410},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=0p9jmrf1eFM",[412,413,418],{"type":23,"value":376},{"type":17,"tag":26,"props":414,"children":417},{"src":415,"alt":416,"width":29},"https:\u002F\u002Fimg.youtube.com\u002Fvi\u002F0p9jmrf1eFM\u002Fhqdefault.jpg","ArduCopter 6dof OmniCopter outside Lynchpin",[],{"type":23,"value":24},{"type":23,"value":24},{"type":17,"tag":49,"props":421,"children":422},{},[],{"type":23,"value":24},{"type":17,"tag":43,"props":425,"children":426},{},[427],{"type":23,"value":428},"ArduCopter 6-DoF OmniCopter outside demo",{"type":23,"value":24},{"type":17,"tag":49,"props":431,"children":432},{},[],{"type":23,"value":24},{"type":17,"tag":399,"props":435,"children":436},{},[437],{"type":23,"value":438},"Useful reference for Lynchpin-style outdoor demonstrations.",{"type":17,"tag":255,"props":440,"children":441},{},[442,477],{"type":17,"tag":277,"props":443,"children":444},{"width":368,"align":20},[445,446,457,458,461,462,467,468,471,472],{"type":23,"value":24},{"type":17,"tag":86,"props":447,"children":449},{"href":448},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=sIi80LMLJSY",[450,451,456],{"type":23,"value":376},{"type":17,"tag":26,"props":452,"children":455},{"src":453,"alt":454,"width":29},"https:\u002F\u002Fimg.youtube.com\u002Fvi\u002FsIi80LMLJSY\u002Fhqdefault.jpg","The Omnicopter ETH Zurich",[],{"type":23,"value":24},{"type":23,"value":24},{"type":17,"tag":49,"props":459,"children":460},{},[],{"type":23,"value":24},{"type":17,"tag":43,"props":463,"children":464},{},[465],{"type":23,"value":466},"ETH Zurich Omnicopter",{"type":23,"value":24},{"type":17,"tag":49,"props":469,"children":470},{},[],{"type":23,"value":24},{"type":17,"tag":399,"props":473,"children":474},{},[475],{"type":23,"value":476},"Original omni-directional six-degree-of-freedom flying machine.",{"type":17,"tag":277,"props":478,"children":479},{"width":368,"align":20},[480,481,492,493,496,497,502,503,506,507],{"type":23,"value":24},{"type":17,"tag":86,"props":482,"children":484},{"href":483},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=0gR1ekapOAE",[485,486,491],{"type":23,"value":376},{"type":17,"tag":26,"props":487,"children":490},{"src":488,"alt":489,"width":29},"https:\u002F\u002Fimg.youtube.com\u002Fvi\u002F0gR1ekapOAE\u002Fhqdefault.jpg","Fetching Omnicopter",[],{"type":23,"value":24},{"type":23,"value":24},{"type":17,"tag":49,"props":494,"children":495},{},[],{"type":23,"value":24},{"type":17,"tag":43,"props":498,"children":499},{},[500],{"type":23,"value":501},"Trajectory generation for fully-actuated multirotors",{"type":23,"value":24},{"type":17,"tag":49,"props":504,"children":505},{},[],{"type":23,"value":24},{"type":17,"tag":399,"props":508,"children":509},{},[510],{"type":23,"value":511},"Useful reference for trajectory-level optimal control ideas.",{"type":17,"tag":513,"props":514,"children":516},"h3",{"id":515},"our-hardware-evidence-slots",[517],{"type":23,"value":518},"📸 Our hardware evidence slots",{"type":17,"tag":18,"props":520,"children":521},{},[522],{"type":23,"value":523},"We have built such a system in last summer SEP, this project was awarded as FIRST price in 2025 UG student research showcase",{"type":17,"tag":247,"props":525,"children":526},{},[527],{"type":17,"tag":270,"props":528,"children":529},{},[530],{"type":17,"tag":255,"props":531,"children":532},{},[533,558],{"type":17,"tag":277,"props":534,"children":536},{"width":535,"align":20},"42.9%",[537,538,543,544,547,548,553,554,557],{"type":23,"value":24},{"type":17,"tag":26,"props":539,"children":542},{"src":540,"alt":541,"width":29},"assets\u002Fhardware_prototype.jpg","Our Omnicopter hardware prototype",[],{"type":23,"value":24},{"type":17,"tag":49,"props":545,"children":546},{},[],{"type":23,"value":24},{"type":17,"tag":43,"props":549,"children":550},{},[551],{"type":23,"value":552},"Hardware prototype photo",{"type":23,"value":24},{"type":17,"tag":49,"props":555,"children":556},{},[],{"type":23,"value":24},{"type":17,"tag":277,"props":559,"children":561},{"width":560,"align":20},"57.1%",[562,563,571,572,575,576],{"type":23,"value":24},{"type":17,"tag":564,"props":565,"children":568},"video",{"src":566,"controls":567,"width":29},"assets\u002Fbench_test_thumbnail.mp4",true,[569],{"type":23,"value":570},"\n    Your browser does not support the video tag.\n  ",{"type":23,"value":24},{"type":17,"tag":49,"props":573,"children":574},{},[],{"type":23,"value":24},{"type":17,"tag":43,"props":577,"children":578},{},[579],{"type":23,"value":580},"Bench \u002F tethered test video",{"type":17,"tag":136,"props":582,"children":583},{},[],{"type":17,"tag":140,"props":585,"children":587},{"id":586},"what-is-an-omnicopter",[588],{"type":23,"value":589},"🚁 What is an Omnicopter?",{"type":17,"tag":18,"props":591,"children":592},{},[593,595,600],{"type":23,"value":594},"A conventional multirotor is usually ",{"type":17,"tag":152,"props":596,"children":597},{},[598],{"type":23,"value":599},"under-actuated",{"type":23,"value":601},". It can generate thrust mainly along the body vertical axis, so horizontal motion requires the vehicle to tilt. This couples translation and rotation:",{"type":17,"tag":603,"props":604,"children":607},"pre",{"className":605,"code":606,"language":23,"meta":7,"style":7},"language-text shiki shiki-themes github-light github-dark","Want to move sideways?\n    → tilt the drone\n    → thrust vector gains horizontal component\n    → attitude and position are coupled\n",[608],{"type":17,"tag":609,"props":610,"children":611},"code",{"__ignoreMap":7},[612,623,632,641],{"type":17,"tag":613,"props":614,"children":617},"span",{"class":615,"line":616},"line",1,[618],{"type":17,"tag":613,"props":619,"children":620},{},[621],{"type":23,"value":622},"Want to move sideways?\n",{"type":17,"tag":613,"props":624,"children":626},{"class":615,"line":625},2,[627],{"type":17,"tag":613,"props":628,"children":629},{},[630],{"type":23,"value":631},"    → tilt the drone\n",{"type":17,"tag":613,"props":633,"children":635},{"class":615,"line":634},3,[636],{"type":17,"tag":613,"props":637,"children":638},{},[639],{"type":23,"value":640},"    → thrust vector gains horizontal component\n",{"type":17,"tag":613,"props":642,"children":644},{"class":615,"line":643},4,[645],{"type":17,"tag":613,"props":646,"children":647},{},[648],{"type":23,"value":649},"    → attitude and position are coupled\n",{"type":17,"tag":18,"props":651,"children":652},{},[653,655,660],{"type":23,"value":654},"An ",{"type":17,"tag":152,"props":656,"children":657},{},[658],{"type":23,"value":659},"Omnicopter",{"type":23,"value":661}," breaks this limitation by arranging rotor positions and thrust axes in 3D. The goal is to generate a full 6D wrench:",{"type":17,"tag":613,"props":663,"children":666},{"className":664},[665],"katex-display",[667],{"type":17,"tag":613,"props":668,"children":671},{"className":669},[670],"katex",[672,804],{"type":17,"tag":613,"props":673,"children":676},{"className":674},[675],"katex-mathml",[677],{"type":17,"tag":678,"props":679,"children":682},"math",{"xmlns":680,"display":681},"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML","block",[683],{"type":17,"tag":684,"props":685,"children":686},"semantics",{},[687,797],{"type":17,"tag":688,"props":689,"children":690},"mrow",{},[691,698,704,758,762,767],{"type":17,"tag":692,"props":693,"children":695},"mi",{"mathvariant":694},"bold",[696],{"type":23,"value":697},"y",{"type":17,"tag":699,"props":700,"children":701},"mo",{},[702],{"type":23,"value":703},"=",{"type":17,"tag":688,"props":705,"children":706},{},[707,713,753],{"type":17,"tag":699,"props":708,"children":710},{"fence":709},"true",[711],{"type":23,"value":712},"[",{"type":17,"tag":714,"props":715,"children":718},"mtable",{"rowspacing":716,"columnalign":20,"columnspacing":717},"0.16em","1em",[719,738],{"type":17,"tag":720,"props":721,"children":722},"mtr",{},[723],{"type":17,"tag":724,"props":725,"children":726},"mtd",{},[727],{"type":17,"tag":728,"props":729,"children":732},"mstyle",{"scriptlevel":730,"displaystyle":731},"0","false",[733],{"type":17,"tag":692,"props":734,"children":735},{"mathvariant":694},[736],{"type":23,"value":737},"F",{"type":17,"tag":720,"props":739,"children":740},{},[741],{"type":17,"tag":724,"props":742,"children":743},{},[744],{"type":17,"tag":728,"props":745,"children":746},{"scriptlevel":730,"displaystyle":731},[747],{"type":17,"tag":692,"props":748,"children":750},{"mathvariant":749},"bold-italic",[751],{"type":23,"value":752},"τ",{"type":17,"tag":699,"props":754,"children":755},{"fence":709},[756],{"type":23,"value":757},"]",{"type":17,"tag":699,"props":759,"children":760},{},[761],{"type":23,"value":703},{"type":17,"tag":692,"props":763,"children":764},{},[765],{"type":23,"value":766},"M",{"type":17,"tag":768,"props":769,"children":770},"msub",{},[771,776],{"type":17,"tag":692,"props":772,"children":773},{"mathvariant":694},[774],{"type":23,"value":775},"f",{"type":17,"tag":688,"props":777,"children":778},{},[779,783,788,793],{"type":17,"tag":692,"props":780,"children":781},{},[782],{"type":23,"value":18},{"type":17,"tag":692,"props":784,"children":785},{},[786],{"type":23,"value":787},"r",{"type":17,"tag":692,"props":789,"children":790},{},[791],{"type":23,"value":792},"o",{"type":17,"tag":692,"props":794,"children":795},{},[796],{"type":23,"value":18},{"type":17,"tag":798,"props":799,"children":801},"annotation",{"encoding":800},"application\u002Fx-tex",[802],{"type":23,"value":803},"\\mathbf{y} =\n\\begin{bmatrix}\n\\mathbf{F} \\\\\n\\boldsymbol{\\tau}\n\\end{bmatrix}\n= M \\mathbf{f}_{prop}",{"type":17,"tag":613,"props":805,"children":808},{"className":806,"ariaHidden":709},[807],"katex-html",[809,844,990],{"type":17,"tag":613,"props":810,"children":813},{"className":811},[812],"base",[814,820,828,834,840],{"type":17,"tag":613,"props":815,"children":819},{"className":816,"style":818},[817],"strut","height:0.6389em;vertical-align:-0.1944em;",[],{"type":17,"tag":613,"props":821,"children":826},{"className":822,"style":825},[823,824],"mord","mathbf","margin-right:0.016em;",[827],{"type":23,"value":697},{"type":17,"tag":613,"props":829,"children":833},{"className":830,"style":832},[831],"mspace","margin-right:0.2778em;",[],{"type":17,"tag":613,"props":835,"children":838},{"className":836},[837],"mrel",[839],{"type":23,"value":703},{"type":17,"tag":613,"props":841,"children":843},{"className":842,"style":832},[831],[],{"type":17,"tag":613,"props":845,"children":847},{"className":846},[812],[848,853,977,981,986],{"type":17,"tag":613,"props":849,"children":852},{"className":850,"style":851},[817],"height:2.4em;vertical-align:-0.95em;",[],{"type":17,"tag":613,"props":854,"children":857},{"className":855},[856],"minner",[858,872,967],{"type":17,"tag":613,"props":859,"children":864},{"className":860,"style":863},[861,862],"mopen","delimcenter","top:0em;",[865],{"type":17,"tag":613,"props":866,"children":870},{"className":867},[868,869],"delimsizing","size3",[871],{"type":23,"value":712},{"type":17,"tag":613,"props":873,"children":875},{"className":874},[823],[876],{"type":17,"tag":613,"props":877,"children":879},{"className":878},[714],[880],{"type":17,"tag":613,"props":881,"children":884},{"className":882},[883],"col-align-c",[885],{"type":17,"tag":613,"props":886,"children":890},{"className":887},[888,889],"vlist-t","vlist-t2",[891,955],{"type":17,"tag":613,"props":892,"children":895},{"className":893},[894],"vlist-r",[896,948],{"type":17,"tag":613,"props":897,"children":901},{"className":898,"style":900},[899],"vlist","height:1.45em;",[902,921],{"type":17,"tag":613,"props":903,"children":905},{"style":904},"top:-3.61em;",[906,912],{"type":17,"tag":613,"props":907,"children":911},{"className":908,"style":910},[909],"pstrut","height:3em;",[],{"type":17,"tag":613,"props":913,"children":915},{"className":914},[823],[916],{"type":17,"tag":613,"props":917,"children":919},{"className":918},[823,824],[920],{"type":23,"value":737},{"type":17,"tag":613,"props":922,"children":924},{"style":923},"top:-2.41em;",[925,929],{"type":17,"tag":613,"props":926,"children":928},{"className":927,"style":910},[909],[],{"type":17,"tag":613,"props":930,"children":932},{"className":931},[823],[933],{"type":17,"tag":613,"props":934,"children":936},{"className":935},[823],[937],{"type":17,"tag":613,"props":938,"children":940},{"className":939},[823],[941],{"type":17,"tag":613,"props":942,"children":946},{"className":943,"style":945},[823,944],"boldsymbol","margin-right:0.1347em;",[947],{"type":23,"value":752},{"type":17,"tag":613,"props":949,"children":952},{"className":950},[951],"vlist-s",[953],{"type":23,"value":954},"​",{"type":17,"tag":613,"props":956,"children":958},{"className":957},[894],[959],{"type":17,"tag":613,"props":960,"children":963},{"className":961,"style":962},[899],"height:0.95em;",[964],{"type":17,"tag":613,"props":965,"children":966},{},[],{"type":17,"tag":613,"props":968,"children":971},{"className":969,"style":863},[970,862],"mclose",[972],{"type":17,"tag":613,"props":973,"children":975},{"className":974},[868,869],[976],{"type":23,"value":757},{"type":17,"tag":613,"props":978,"children":980},{"className":979,"style":832},[831],[],{"type":17,"tag":613,"props":982,"children":984},{"className":983},[837],[985],{"type":23,"value":703},{"type":17,"tag":613,"props":987,"children":989},{"className":988,"style":832},[831],[],{"type":17,"tag":613,"props":991,"children":993},{"className":992},[812],[994,999,1006],{"type":17,"tag":613,"props":995,"children":998},{"className":996,"style":997},[817],"height:0.9805em;vertical-align:-0.2861em;",[],{"type":17,"tag":613,"props":1000,"children":1004},{"className":1001,"style":1003},[823,1002],"mathnormal","margin-right:0.109em;",[1005],{"type":23,"value":766},{"type":17,"tag":613,"props":1007,"children":1009},{"className":1008},[823],[1010,1015],{"type":17,"tag":613,"props":1011,"children":1013},{"className":1012,"style":1003},[823,824],[1014],{"type":23,"value":775},{"type":17,"tag":613,"props":1016,"children":1019},{"className":1017},[1018],"msupsub",[1020],{"type":17,"tag":613,"props":1021,"children":1023},{"className":1022},[888,889],[1024,1079],{"type":17,"tag":613,"props":1025,"children":1027},{"className":1026},[894],[1028,1074],{"type":17,"tag":613,"props":1029,"children":1032},{"className":1030,"style":1031},[899],"height:0.1514em;",[1033],{"type":17,"tag":613,"props":1034,"children":1036},{"style":1035},"top:-2.55em;margin-left:-0.109em;margin-right:0.05em;",[1037,1042],{"type":17,"tag":613,"props":1038,"children":1041},{"className":1039,"style":1040},[909],"height:2.7em;",[],{"type":17,"tag":613,"props":1043,"children":1048},{"className":1044},[1045,1046,869,1047],"sizing","reset-size6","mtight",[1049],{"type":17,"tag":613,"props":1050,"children":1052},{"className":1051},[823,1047],[1053,1058,1064,1069],{"type":17,"tag":613,"props":1054,"children":1056},{"className":1055},[823,1002,1047],[1057],{"type":23,"value":18},{"type":17,"tag":613,"props":1059,"children":1062},{"className":1060,"style":1061},[823,1002,1047],"margin-right:0.0278em;",[1063],{"type":23,"value":787},{"type":17,"tag":613,"props":1065,"children":1067},{"className":1066},[823,1002,1047],[1068],{"type":23,"value":792},{"type":17,"tag":613,"props":1070,"children":1072},{"className":1071},[823,1002,1047],[1073],{"type":23,"value":18},{"type":17,"tag":613,"props":1075,"children":1077},{"className":1076},[951],[1078],{"type":23,"value":954},{"type":17,"tag":613,"props":1080,"children":1082},{"className":1081},[894],[1083],{"type":17,"tag":613,"props":1084,"children":1087},{"className":1085,"style":1086},[899],"height:0.2861em;",[1088],{"type":17,"tag":613,"props":1089,"children":1090},{},[],{"type":17,"tag":18,"props":1092,"children":1093},{},[1094],{"type":23,"value":1095},"where:",{"type":17,"tag":172,"props":1097,"children":1098},{},[1099,1148,1205,1346],{"type":17,"tag":176,"props":1100,"children":1101},{},[1102,1146],{"type":17,"tag":613,"props":1103,"children":1105},{"className":1104},[670],[1106,1128],{"type":17,"tag":613,"props":1107,"children":1109},{"className":1108},[675],[1110],{"type":17,"tag":678,"props":1111,"children":1112},{"xmlns":680},[1113],{"type":17,"tag":684,"props":1114,"children":1115},{},[1116,1123],{"type":17,"tag":688,"props":1117,"children":1118},{},[1119],{"type":17,"tag":692,"props":1120,"children":1121},{"mathvariant":694},[1122],{"type":23,"value":737},{"type":17,"tag":798,"props":1124,"children":1125},{"encoding":800},[1126],{"type":23,"value":1127},"\\mathbf{F}",{"type":17,"tag":613,"props":1129,"children":1131},{"className":1130,"ariaHidden":709},[807],[1132],{"type":17,"tag":613,"props":1133,"children":1135},{"className":1134},[812],[1136,1141],{"type":17,"tag":613,"props":1137,"children":1140},{"className":1138,"style":1139},[817],"height:0.6861em;",[],{"type":17,"tag":613,"props":1142,"children":1144},{"className":1143},[823,824],[1145],{"type":23,"value":737},{"type":23,"value":1147}," is the 3D body force;",{"type":17,"tag":176,"props":1149,"children":1150},{},[1151,1203],{"type":17,"tag":613,"props":1152,"children":1154},{"className":1153},[670],[1155,1177],{"type":17,"tag":613,"props":1156,"children":1158},{"className":1157},[675],[1159],{"type":17,"tag":678,"props":1160,"children":1161},{"xmlns":680},[1162],{"type":17,"tag":684,"props":1163,"children":1164},{},[1165,1172],{"type":17,"tag":688,"props":1166,"children":1167},{},[1168],{"type":17,"tag":692,"props":1169,"children":1170},{"mathvariant":749},[1171],{"type":23,"value":752},{"type":17,"tag":798,"props":1173,"children":1174},{"encoding":800},[1175],{"type":23,"value":1176},"\\boldsymbol{\\tau}",{"type":17,"tag":613,"props":1178,"children":1180},{"className":1179,"ariaHidden":709},[807],[1181],{"type":17,"tag":613,"props":1182,"children":1184},{"className":1183},[812],[1185,1190],{"type":17,"tag":613,"props":1186,"children":1189},{"className":1187,"style":1188},[817],"height:0.4444em;",[],{"type":17,"tag":613,"props":1191,"children":1193},{"className":1192},[823],[1194],{"type":17,"tag":613,"props":1195,"children":1197},{"className":1196},[823],[1198],{"type":17,"tag":613,"props":1199,"children":1201},{"className":1200,"style":945},[823,944],[1202],{"type":23,"value":752},{"type":23,"value":1204}," is the 3D body torque;",{"type":17,"tag":176,"props":1206,"children":1207},{},[1208,1344],{"type":17,"tag":613,"props":1209,"children":1211},{"className":1210},[670],[1212,1256],{"type":17,"tag":613,"props":1213,"children":1215},{"className":1214},[675],[1216],{"type":17,"tag":678,"props":1217,"children":1218},{"xmlns":680},[1219],{"type":17,"tag":684,"props":1220,"children":1221},{},[1222,1251],{"type":17,"tag":688,"props":1223,"children":1224},{},[1225],{"type":17,"tag":768,"props":1226,"children":1227},{},[1228,1232],{"type":17,"tag":692,"props":1229,"children":1230},{"mathvariant":694},[1231],{"type":23,"value":775},{"type":17,"tag":688,"props":1233,"children":1234},{},[1235,1239,1243,1247],{"type":17,"tag":692,"props":1236,"children":1237},{},[1238],{"type":23,"value":18},{"type":17,"tag":692,"props":1240,"children":1241},{},[1242],{"type":23,"value":787},{"type":17,"tag":692,"props":1244,"children":1245},{},[1246],{"type":23,"value":792},{"type":17,"tag":692,"props":1248,"children":1249},{},[1250],{"type":23,"value":18},{"type":17,"tag":798,"props":1252,"children":1253},{"encoding":800},[1254],{"type":23,"value":1255},"\\mathbf{f}_{prop}",{"type":17,"tag":613,"props":1257,"children":1259},{"className":1258,"ariaHidden":709},[807],[1260],{"type":17,"tag":613,"props":1261,"children":1263},{"className":1262},[812],[1264,1268],{"type":17,"tag":613,"props":1265,"children":1267},{"className":1266,"style":997},[817],[],{"type":17,"tag":613,"props":1269,"children":1271},{"className":1270},[823],[1272,1277],{"type":17,"tag":613,"props":1273,"children":1275},{"className":1274,"style":1003},[823,824],[1276],{"type":23,"value":775},{"type":17,"tag":613,"props":1278,"children":1280},{"className":1279},[1018],[1281],{"type":17,"tag":613,"props":1282,"children":1284},{"className":1283},[888,889],[1285,1333],{"type":17,"tag":613,"props":1286,"children":1288},{"className":1287},[894],[1289,1328],{"type":17,"tag":613,"props":1290,"children":1292},{"className":1291,"style":1031},[899],[1293],{"type":17,"tag":613,"props":1294,"children":1295},{"style":1035},[1296,1300],{"type":17,"tag":613,"props":1297,"children":1299},{"className":1298,"style":1040},[909],[],{"type":17,"tag":613,"props":1301,"children":1303},{"className":1302},[1045,1046,869,1047],[1304],{"type":17,"tag":613,"props":1305,"children":1307},{"className":1306},[823,1047],[1308,1313,1318,1323],{"type":17,"tag":613,"props":1309,"children":1311},{"className":1310},[823,1002,1047],[1312],{"type":23,"value":18},{"type":17,"tag":613,"props":1314,"children":1316},{"className":1315,"style":1061},[823,1002,1047],[1317],{"type":23,"value":787},{"type":17,"tag":613,"props":1319,"children":1321},{"className":1320},[823,1002,1047],[1322],{"type":23,"value":792},{"type":17,"tag":613,"props":1324,"children":1326},{"className":1325},[823,1002,1047],[1327],{"type":23,"value":18},{"type":17,"tag":613,"props":1329,"children":1331},{"className":1330},[951],[1332],{"type":23,"value":954},{"type":17,"tag":613,"props":1334,"children":1336},{"className":1335},[894],[1337],{"type":17,"tag":613,"props":1338,"children":1340},{"className":1339,"style":1086},[899],[1341],{"type":17,"tag":613,"props":1342,"children":1343},{},[],{"type":23,"value":1345}," is the vector of propeller thrusts;",{"type":17,"tag":176,"props":1347,"children":1348},{},[1349,1392],{"type":17,"tag":613,"props":1350,"children":1352},{"className":1351},[670],[1353,1374],{"type":17,"tag":613,"props":1354,"children":1356},{"className":1355},[675],[1357],{"type":17,"tag":678,"props":1358,"children":1359},{"xmlns":680},[1360],{"type":17,"tag":684,"props":1361,"children":1362},{},[1363,1370],{"type":17,"tag":688,"props":1364,"children":1365},{},[1366],{"type":17,"tag":692,"props":1367,"children":1368},{},[1369],{"type":23,"value":766},{"type":17,"tag":798,"props":1371,"children":1372},{"encoding":800},[1373],{"type":23,"value":766},{"type":17,"tag":613,"props":1375,"children":1377},{"className":1376,"ariaHidden":709},[807],[1378],{"type":17,"tag":613,"props":1379,"children":1381},{"className":1380},[812],[1382,1387],{"type":17,"tag":613,"props":1383,"children":1386},{"className":1384,"style":1385},[817],"height:0.6833em;",[],{"type":17,"tag":613,"props":1388,"children":1390},{"className":1389,"style":1003},[823,1002],[1391],{"type":23,"value":766},{"type":23,"value":1393}," is the geometry-dependent allocation matrix.",{"type":17,"tag":18,"props":1395,"children":1396},{},[1397,1399,1443],{"type":23,"value":1398},"For rotor ",{"type":17,"tag":613,"props":1400,"children":1402},{"className":1401},[670],[1403,1425],{"type":17,"tag":613,"props":1404,"children":1406},{"className":1405},[675],[1407],{"type":17,"tag":678,"props":1408,"children":1409},{"xmlns":680},[1410],{"type":17,"tag":684,"props":1411,"children":1412},{},[1413,1421],{"type":17,"tag":688,"props":1414,"children":1415},{},[1416],{"type":17,"tag":692,"props":1417,"children":1418},{},[1419],{"type":23,"value":1420},"i",{"type":17,"tag":798,"props":1422,"children":1423},{"encoding":800},[1424],{"type":23,"value":1420},{"type":17,"tag":613,"props":1426,"children":1428},{"className":1427,"ariaHidden":709},[807],[1429],{"type":17,"tag":613,"props":1430,"children":1432},{"className":1431},[812],[1433,1438],{"type":17,"tag":613,"props":1434,"children":1437},{"className":1435,"style":1436},[817],"height:0.6595em;",[],{"type":17,"tag":613,"props":1439,"children":1441},{"className":1440},[823,1002],[1442],{"type":23,"value":1420},{"type":23,"value":1444},", a simplified force\u002Ftorque contribution is:",{"type":17,"tag":613,"props":1446,"children":1448},{"className":1447},[665],[1449],{"type":17,"tag":613,"props":1450,"children":1452},{"className":1451},[670],[1453,1591],{"type":17,"tag":613,"props":1454,"children":1456},{"className":1455},[675],[1457],{"type":17,"tag":678,"props":1458,"children":1459},{"xmlns":680,"display":681},[1460],{"type":17,"tag":684,"props":1461,"children":1462},{},[1463,1586],{"type":17,"tag":688,"props":1464,"children":1465},{},[1466,1470,1474,1487,1498,1510,1515,1519,1523,1527,1538,1549,1554,1565,1570,1581],{"type":17,"tag":692,"props":1467,"children":1468},{"mathvariant":694},[1469],{"type":23,"value":737},{"type":17,"tag":699,"props":1471,"children":1472},{},[1473],{"type":23,"value":703},{"type":17,"tag":1475,"props":1476,"children":1477},"munder",{},[1478,1483],{"type":17,"tag":699,"props":1479,"children":1480},{},[1481],{"type":23,"value":1482},"∑",{"type":17,"tag":692,"props":1484,"children":1485},{},[1486],{"type":23,"value":1420},{"type":17,"tag":768,"props":1488,"children":1489},{},[1490,1494],{"type":17,"tag":692,"props":1491,"children":1492},{},[1493],{"type":23,"value":775},{"type":17,"tag":692,"props":1495,"children":1496},{},[1497],{"type":23,"value":1420},{"type":17,"tag":768,"props":1499,"children":1500},{},[1501,1506],{"type":17,"tag":692,"props":1502,"children":1503},{"mathvariant":694},[1504],{"type":23,"value":1505},"x",{"type":17,"tag":692,"props":1507,"children":1508},{},[1509],{"type":23,"value":1420},{"type":17,"tag":699,"props":1511,"children":1512},{"separator":709},[1513],{"type":23,"value":1514},",",{"type":17,"tag":831,"props":1516,"children":1518},{"width":1517},"2em",[],{"type":17,"tag":692,"props":1520,"children":1521},{"mathvariant":749},[1522],{"type":23,"value":752},{"type":17,"tag":699,"props":1524,"children":1525},{},[1526],{"type":23,"value":703},{"type":17,"tag":1475,"props":1528,"children":1529},{},[1530,1534],{"type":17,"tag":699,"props":1531,"children":1532},{},[1533],{"type":23,"value":1482},{"type":17,"tag":692,"props":1535,"children":1536},{},[1537],{"type":23,"value":1420},{"type":17,"tag":768,"props":1539,"children":1540},{},[1541,1545],{"type":17,"tag":692,"props":1542,"children":1543},{},[1544],{"type":23,"value":775},{"type":17,"tag":692,"props":1546,"children":1547},{},[1548],{"type":23,"value":1420},{"type":17,"tag":699,"props":1550,"children":1551},{"stretchy":731},[1552],{"type":23,"value":1553},"(",{"type":17,"tag":768,"props":1555,"children":1556},{},[1557,1561],{"type":17,"tag":692,"props":1558,"children":1559},{"mathvariant":694},[1560],{"type":23,"value":18},{"type":17,"tag":692,"props":1562,"children":1563},{},[1564],{"type":23,"value":1420},{"type":17,"tag":699,"props":1566,"children":1567},{},[1568],{"type":23,"value":1569},"×",{"type":17,"tag":768,"props":1571,"children":1572},{},[1573,1577],{"type":17,"tag":692,"props":1574,"children":1575},{"mathvariant":694},[1576],{"type":23,"value":1505},{"type":17,"tag":692,"props":1578,"children":1579},{},[1580],{"type":23,"value":1420},{"type":17,"tag":699,"props":1582,"children":1583},{"stretchy":731},[1584],{"type":23,"value":1585},")",{"type":17,"tag":798,"props":1587,"children":1588},{"encoding":800},[1589],{"type":23,"value":1590},"\\mathbf{F} = \\sum_i f_i \\mathbf{x}_i,\n\\qquad\n\\boldsymbol{\\tau} = \\sum_i f_i (\\mathbf{p}_i \\times \\mathbf{x}_i)",{"type":17,"tag":613,"props":1592,"children":1594},{"className":1593,"ariaHidden":709},[807],[1595,1621,1867,2076],{"type":17,"tag":613,"props":1596,"children":1598},{"className":1597},[812],[1599,1603,1608,1612,1617],{"type":17,"tag":613,"props":1600,"children":1602},{"className":1601,"style":1139},[817],[],{"type":17,"tag":613,"props":1604,"children":1606},{"className":1605},[823,824],[1607],{"type":23,"value":737},{"type":17,"tag":613,"props":1609,"children":1611},{"className":1610,"style":832},[831],[],{"type":17,"tag":613,"props":1613,"children":1615},{"className":1614},[837],[1616],{"type":23,"value":703},{"type":17,"tag":613,"props":1618,"children":1620},{"className":1619,"style":832},[831],[],{"type":17,"tag":613,"props":1622,"children":1624},{"className":1623},[812],[1625,1630,1702,1707,1768,1826,1832,1837,1841,1854,1858,1863],{"type":17,"tag":613,"props":1626,"children":1629},{"className":1627,"style":1628},[817],"height:2.3277em;vertical-align:-1.2777em;",[],{"type":17,"tag":613,"props":1631,"children":1635},{"className":1632},[1633,1634],"mop","op-limits",[1636],{"type":17,"tag":613,"props":1637,"children":1639},{"className":1638},[888,889],[1640,1690],{"type":17,"tag":613,"props":1641,"children":1643},{"className":1642},[894],[1644,1685],{"type":17,"tag":613,"props":1645,"children":1648},{"className":1646,"style":1647},[899],"height:1.05em;",[1649,1667],{"type":17,"tag":613,"props":1650,"children":1652},{"style":1651},"top:-1.8723em;margin-left:0em;",[1653,1658],{"type":17,"tag":613,"props":1654,"children":1657},{"className":1655,"style":1656},[909],"height:3.05em;",[],{"type":17,"tag":613,"props":1659,"children":1661},{"className":1660},[1045,1046,869,1047],[1662],{"type":17,"tag":613,"props":1663,"children":1665},{"className":1664},[823,1002,1047],[1666],{"type":23,"value":1420},{"type":17,"tag":613,"props":1668,"children":1670},{"style":1669},"top:-3.05em;",[1671,1675],{"type":17,"tag":613,"props":1672,"children":1674},{"className":1673,"style":1656},[909],[],{"type":17,"tag":613,"props":1676,"children":1677},{},[1678],{"type":17,"tag":613,"props":1679,"children":1683},{"className":1680},[1633,1681,1682],"op-symbol","large-op",[1684],{"type":23,"value":1482},{"type":17,"tag":613,"props":1686,"children":1688},{"className":1687},[951],[1689],{"type":23,"value":954},{"type":17,"tag":613,"props":1691,"children":1693},{"className":1692},[894],[1694],{"type":17,"tag":613,"props":1695,"children":1698},{"className":1696,"style":1697},[899],"height:1.2777em;",[1699],{"type":17,"tag":613,"props":1700,"children":1701},{},[],{"type":17,"tag":613,"props":1703,"children":1706},{"className":1704,"style":1705},[831],"margin-right:0.1667em;",[],{"type":17,"tag":613,"props":1708,"children":1710},{"className":1709},[823],[1711,1717],{"type":17,"tag":613,"props":1712,"children":1715},{"className":1713,"style":1714},[823,1002],"margin-right:0.1076em;",[1716],{"type":23,"value":775},{"type":17,"tag":613,"props":1718,"children":1720},{"className":1719},[1018],[1721],{"type":17,"tag":613,"props":1722,"children":1724},{"className":1723},[888,889],[1725,1756],{"type":17,"tag":613,"props":1726,"children":1728},{"className":1727},[894],[1729,1751],{"type":17,"tag":613,"props":1730,"children":1733},{"className":1731,"style":1732},[899],"height:0.3117em;",[1734],{"type":17,"tag":613,"props":1735,"children":1737},{"style":1736},"top:-2.55em;margin-left:-0.1076em;margin-right:0.05em;",[1738,1742],{"type":17,"tag":613,"props":1739,"children":1741},{"className":1740,"style":1040},[909],[],{"type":17,"tag":613,"props":1743,"children":1745},{"className":1744},[1045,1046,869,1047],[1746],{"type":17,"tag":613,"props":1747,"children":1749},{"className":1748},[823,1002,1047],[1750],{"type":23,"value":1420},{"type":17,"tag":613,"props":1752,"children":1754},{"className":1753},[951],[1755],{"type":23,"value":954},{"type":17,"tag":613,"props":1757,"children":1759},{"className":1758},[894],[1760],{"type":17,"tag":613,"props":1761,"children":1764},{"className":1762,"style":1763},[899],"height:0.15em;",[1765],{"type":17,"tag":613,"props":1766,"children":1767},{},[],{"type":17,"tag":613,"props":1769,"children":1771},{"className":1770},[823],[1772,1777],{"type":17,"tag":613,"props":1773,"children":1775},{"className":1774},[823,824],[1776],{"type":23,"value":1505},{"type":17,"tag":613,"props":1778,"children":1780},{"className":1779},[1018],[1781],{"type":17,"tag":613,"props":1782,"children":1784},{"className":1783},[888,889],[1785,1815],{"type":17,"tag":613,"props":1786,"children":1788},{"className":1787},[894],[1789,1810],{"type":17,"tag":613,"props":1790,"children":1792},{"className":1791,"style":1732},[899],[1793],{"type":17,"tag":613,"props":1794,"children":1796},{"style":1795},"top:-2.55em;margin-left:0em;margin-right:0.05em;",[1797,1801],{"type":17,"tag":613,"props":1798,"children":1800},{"className":1799,"style":1040},[909],[],{"type":17,"tag":613,"props":1802,"children":1804},{"className":1803},[1045,1046,869,1047],[1805],{"type":17,"tag":613,"props":1806,"children":1808},{"className":1807},[823,1002,1047],[1809],{"type":23,"value":1420},{"type":17,"tag":613,"props":1811,"children":1813},{"className":1812},[951],[1814],{"type":23,"value":954},{"type":17,"tag":613,"props":1816,"children":1818},{"className":1817},[894],[1819],{"type":17,"tag":613,"props":1820,"children":1822},{"className":1821,"style":1763},[899],[1823],{"type":17,"tag":613,"props":1824,"children":1825},{},[],{"type":17,"tag":613,"props":1827,"children":1830},{"className":1828},[1829],"mpunct",[1831],{"type":23,"value":1514},{"type":17,"tag":613,"props":1833,"children":1836},{"className":1834,"style":1835},[831],"margin-right:2em;",[],{"type":17,"tag":613,"props":1838,"children":1840},{"className":1839,"style":1705},[831],[],{"type":17,"tag":613,"props":1842,"children":1844},{"className":1843},[823],[1845],{"type":17,"tag":613,"props":1846,"children":1848},{"className":1847},[823],[1849],{"type":17,"tag":613,"props":1850,"children":1852},{"className":1851,"style":945},[823,944],[1853],{"type":23,"value":752},{"type":17,"tag":613,"props":1855,"children":1857},{"className":1856,"style":832},[831],[],{"type":17,"tag":613,"props":1859,"children":1861},{"className":1860},[837],[1862],{"type":23,"value":703},{"type":17,"tag":613,"props":1864,"children":1866},{"className":1865,"style":832},[831],[],{"type":17,"tag":613,"props":1868,"children":1870},{"className":1869},[812],[1871,1875,1938,1942,1999,2004,2061,2066,2072],{"type":17,"tag":613,"props":1872,"children":1874},{"className":1873,"style":1628},[817],[],{"type":17,"tag":613,"props":1876,"children":1878},{"className":1877},[1633,1634],[1879],{"type":17,"tag":613,"props":1880,"children":1882},{"className":1881},[888,889],[1883,1927],{"type":17,"tag":613,"props":1884,"children":1886},{"className":1885},[894],[1887,1922],{"type":17,"tag":613,"props":1888,"children":1890},{"className":1889,"style":1647},[899],[1891,1907],{"type":17,"tag":613,"props":1892,"children":1893},{"style":1651},[1894,1898],{"type":17,"tag":613,"props":1895,"children":1897},{"className":1896,"style":1656},[909],[],{"type":17,"tag":613,"props":1899,"children":1901},{"className":1900},[1045,1046,869,1047],[1902],{"type":17,"tag":613,"props":1903,"children":1905},{"className":1904},[823,1002,1047],[1906],{"type":23,"value":1420},{"type":17,"tag":613,"props":1908,"children":1909},{"style":1669},[1910,1914],{"type":17,"tag":613,"props":1911,"children":1913},{"className":1912,"style":1656},[909],[],{"type":17,"tag":613,"props":1915,"children":1916},{},[1917],{"type":17,"tag":613,"props":1918,"children":1920},{"className":1919},[1633,1681,1682],[1921],{"type":23,"value":1482},{"type":17,"tag":613,"props":1923,"children":1925},{"className":1924},[951],[1926],{"type":23,"value":954},{"type":17,"tag":613,"props":1928,"children":1930},{"className":1929},[894],[1931],{"type":17,"tag":613,"props":1932,"children":1934},{"className":1933,"style":1697},[899],[1935],{"type":17,"tag":613,"props":1936,"children":1937},{},[],{"type":17,"tag":613,"props":1939,"children":1941},{"className":1940,"style":1705},[831],[],{"type":17,"tag":613,"props":1943,"children":1945},{"className":1944},[823],[1946,1951],{"type":17,"tag":613,"props":1947,"children":1949},{"className":1948,"style":1714},[823,1002],[1950],{"type":23,"value":775},{"type":17,"tag":613,"props":1952,"children":1954},{"className":1953},[1018],[1955],{"type":17,"tag":613,"props":1956,"children":1958},{"className":1957},[888,889],[1959,1988],{"type":17,"tag":613,"props":1960,"children":1962},{"className":1961},[894],[1963,1983],{"type":17,"tag":613,"props":1964,"children":1966},{"className":1965,"style":1732},[899],[1967],{"type":17,"tag":613,"props":1968,"children":1969},{"style":1736},[1970,1974],{"type":17,"tag":613,"props":1971,"children":1973},{"className":1972,"style":1040},[909],[],{"type":17,"tag":613,"props":1975,"children":1977},{"className":1976},[1045,1046,869,1047],[1978],{"type":17,"tag":613,"props":1979,"children":1981},{"className":1980},[823,1002,1047],[1982],{"type":23,"value":1420},{"type":17,"tag":613,"props":1984,"children":1986},{"className":1985},[951],[1987],{"type":23,"value":954},{"type":17,"tag":613,"props":1989,"children":1991},{"className":1990},[894],[1992],{"type":17,"tag":613,"props":1993,"children":1995},{"className":1994,"style":1763},[899],[1996],{"type":17,"tag":613,"props":1997,"children":1998},{},[],{"type":17,"tag":613,"props":2000,"children":2002},{"className":2001},[861],[2003],{"type":23,"value":1553},{"type":17,"tag":613,"props":2005,"children":2007},{"className":2006},[823],[2008,2013],{"type":17,"tag":613,"props":2009,"children":2011},{"className":2010},[823,824],[2012],{"type":23,"value":18},{"type":17,"tag":613,"props":2014,"children":2016},{"className":2015},[1018],[2017],{"type":17,"tag":613,"props":2018,"children":2020},{"className":2019},[888,889],[2021,2050],{"type":17,"tag":613,"props":2022,"children":2024},{"className":2023},[894],[2025,2045],{"type":17,"tag":613,"props":2026,"children":2028},{"className":2027,"style":1732},[899],[2029],{"type":17,"tag":613,"props":2030,"children":2031},{"style":1795},[2032,2036],{"type":17,"tag":613,"props":2033,"children":2035},{"className":2034,"style":1040},[909],[],{"type":17,"tag":613,"props":2037,"children":2039},{"className":2038},[1045,1046,869,1047],[2040],{"type":17,"tag":613,"props":2041,"children":2043},{"className":2042},[823,1002,1047],[2044],{"type":23,"value":1420},{"type":17,"tag":613,"props":2046,"children":2048},{"className":2047},[951],[2049],{"type":23,"value":954},{"type":17,"tag":613,"props":2051,"children":2053},{"className":2052},[894],[2054],{"type":17,"tag":613,"props":2055,"children":2057},{"className":2056,"style":1763},[899],[2058],{"type":17,"tag":613,"props":2059,"children":2060},{},[],{"type":17,"tag":613,"props":2062,"children":2065},{"className":2063,"style":2064},[831],"margin-right:0.2222em;",[],{"type":17,"tag":613,"props":2067,"children":2070},{"className":2068},[2069],"mbin",[2071],{"type":23,"value":1569},{"type":17,"tag":613,"props":2073,"children":2075},{"className":2074,"style":2064},[831],[],{"type":17,"tag":613,"props":2077,"children":2079},{"className":2078},[812],[2080,2085,2142],{"type":17,"tag":613,"props":2081,"children":2084},{"className":2082,"style":2083},[817],"height:1em;vertical-align:-0.25em;",[],{"type":17,"tag":613,"props":2086,"children":2088},{"className":2087},[823],[2089,2094],{"type":17,"tag":613,"props":2090,"children":2092},{"className":2091},[823,824],[2093],{"type":23,"value":1505},{"type":17,"tag":613,"props":2095,"children":2097},{"className":2096},[1018],[2098],{"type":17,"tag":613,"props":2099,"children":2101},{"className":2100},[888,889],[2102,2131],{"type":17,"tag":613,"props":2103,"children":2105},{"className":2104},[894],[2106,2126],{"type":17,"tag":613,"props":2107,"children":2109},{"className":2108,"style":1732},[899],[2110],{"type":17,"tag":613,"props":2111,"children":2112},{"style":1795},[2113,2117],{"type":17,"tag":613,"props":2114,"children":2116},{"className":2115,"style":1040},[909],[],{"type":17,"tag":613,"props":2118,"children":2120},{"className":2119},[1045,1046,869,1047],[2121],{"type":17,"tag":613,"props":2122,"children":2124},{"className":2123},[823,1002,1047],[2125],{"type":23,"value":1420},{"type":17,"tag":613,"props":2127,"children":2129},{"className":2128},[951],[2130],{"type":23,"value":954},{"type":17,"tag":613,"props":2132,"children":2134},{"className":2133},[894],[2135],{"type":17,"tag":613,"props":2136,"children":2138},{"className":2137,"style":1763},[899],[2139],{"type":17,"tag":613,"props":2140,"children":2141},{},[],{"type":17,"tag":613,"props":2143,"children":2145},{"className":2144},[970],[2146],{"type":23,"value":1585},{"type":17,"tag":18,"props":2148,"children":2149},{},[2150,2152,2254,2256,2359],{"type":23,"value":2151},"where ",{"type":17,"tag":613,"props":2153,"children":2155},{"className":2154},[670],[2156,2185],{"type":17,"tag":613,"props":2157,"children":2159},{"className":2158},[675],[2160],{"type":17,"tag":678,"props":2161,"children":2162},{"xmlns":680},[2163],{"type":17,"tag":684,"props":2164,"children":2165},{},[2166,2180],{"type":17,"tag":688,"props":2167,"children":2168},{},[2169],{"type":17,"tag":768,"props":2170,"children":2171},{},[2172,2176],{"type":17,"tag":692,"props":2173,"children":2174},{"mathvariant":694},[2175],{"type":23,"value":18},{"type":17,"tag":692,"props":2177,"children":2178},{},[2179],{"type":23,"value":1420},{"type":17,"tag":798,"props":2181,"children":2182},{"encoding":800},[2183],{"type":23,"value":2184},"\\mathbf{p}_i",{"type":17,"tag":613,"props":2186,"children":2188},{"className":2187,"ariaHidden":709},[807],[2189],{"type":17,"tag":613,"props":2190,"children":2192},{"className":2191},[812],[2193,2197],{"type":17,"tag":613,"props":2194,"children":2196},{"className":2195,"style":818},[817],[],{"type":17,"tag":613,"props":2198,"children":2200},{"className":2199},[823],[2201,2206],{"type":17,"tag":613,"props":2202,"children":2204},{"className":2203},[823,824],[2205],{"type":23,"value":18},{"type":17,"tag":613,"props":2207,"children":2209},{"className":2208},[1018],[2210],{"type":17,"tag":613,"props":2211,"children":2213},{"className":2212},[888,889],[2214,2243],{"type":17,"tag":613,"props":2215,"children":2217},{"className":2216},[894],[2218,2238],{"type":17,"tag":613,"props":2219,"children":2221},{"className":2220,"style":1732},[899],[2222],{"type":17,"tag":613,"props":2223,"children":2224},{"style":1795},[2225,2229],{"type":17,"tag":613,"props":2226,"children":2228},{"className":2227,"style":1040},[909],[],{"type":17,"tag":613,"props":2230,"children":2232},{"className":2231},[1045,1046,869,1047],[2233],{"type":17,"tag":613,"props":2234,"children":2236},{"className":2235},[823,1002,1047],[2237],{"type":23,"value":1420},{"type":17,"tag":613,"props":2239,"children":2241},{"className":2240},[951],[2242],{"type":23,"value":954},{"type":17,"tag":613,"props":2244,"children":2246},{"className":2245},[894],[2247],{"type":17,"tag":613,"props":2248,"children":2250},{"className":2249,"style":1763},[899],[2251],{"type":17,"tag":613,"props":2252,"children":2253},{},[],{"type":23,"value":2255}," is the rotor position relative to the center of mass and ",{"type":17,"tag":613,"props":2257,"children":2259},{"className":2258},[670],[2260,2289],{"type":17,"tag":613,"props":2261,"children":2263},{"className":2262},[675],[2264],{"type":17,"tag":678,"props":2265,"children":2266},{"xmlns":680},[2267],{"type":17,"tag":684,"props":2268,"children":2269},{},[2270,2284],{"type":17,"tag":688,"props":2271,"children":2272},{},[2273],{"type":17,"tag":768,"props":2274,"children":2275},{},[2276,2280],{"type":17,"tag":692,"props":2277,"children":2278},{"mathvariant":694},[2279],{"type":23,"value":1505},{"type":17,"tag":692,"props":2281,"children":2282},{},[2283],{"type":23,"value":1420},{"type":17,"tag":798,"props":2285,"children":2286},{"encoding":800},[2287],{"type":23,"value":2288},"\\mathbf{x}_i",{"type":17,"tag":613,"props":2290,"children":2292},{"className":2291,"ariaHidden":709},[807],[2293],{"type":17,"tag":613,"props":2294,"children":2296},{"className":2295},[812],[2297,2302],{"type":17,"tag":613,"props":2298,"children":2301},{"className":2299,"style":2300},[817],"height:0.5944em;vertical-align:-0.15em;",[],{"type":17,"tag":613,"props":2303,"children":2305},{"className":2304},[823],[2306,2311],{"type":17,"tag":613,"props":2307,"children":2309},{"className":2308},[823,824],[2310],{"type":23,"value":1505},{"type":17,"tag":613,"props":2312,"children":2314},{"className":2313},[1018],[2315],{"type":17,"tag":613,"props":2316,"children":2318},{"className":2317},[888,889],[2319,2348],{"type":17,"tag":613,"props":2320,"children":2322},{"className":2321},[894],[2323,2343],{"type":17,"tag":613,"props":2324,"children":2326},{"className":2325,"style":1732},[899],[2327],{"type":17,"tag":613,"props":2328,"children":2329},{"style":1795},[2330,2334],{"type":17,"tag":613,"props":2331,"children":2333},{"className":2332,"style":1040},[909],[],{"type":17,"tag":613,"props":2335,"children":2337},{"className":2336},[1045,1046,869,1047],[2338],{"type":17,"tag":613,"props":2339,"children":2341},{"className":2340},[823,1002,1047],[2342],{"type":23,"value":1420},{"type":17,"tag":613,"props":2344,"children":2346},{"className":2345},[951],[2347],{"type":23,"value":954},{"type":17,"tag":613,"props":2349,"children":2351},{"className":2350},[894],[2352],{"type":17,"tag":613,"props":2353,"children":2355},{"className":2354,"style":1763},[899],[2356],{"type":17,"tag":613,"props":2357,"children":2358},{},[],{"type":23,"value":2360}," is the rotor thrust-axis direction.",{"type":17,"tag":513,"props":2362,"children":2364},{"id":2363},"conventional-multirotor-vs-omnicopter",[2365],{"type":23,"value":2366},"🧩 Conventional multirotor vs. Omnicopter",{"type":17,"tag":247,"props":2368,"children":2369},{},[2370,2391],{"type":17,"tag":251,"props":2371,"children":2372},{},[2373],{"type":17,"tag":255,"props":2374,"children":2375},{},[2376,2381,2387],{"type":17,"tag":259,"props":2377,"children":2378},{},[2379],{"type":23,"value":2380},"Capability",{"type":17,"tag":259,"props":2382,"children":2384},{"align":2383},"right",[2385],{"type":23,"value":2386},"Conventional quad \u002F octocopter",{"type":17,"tag":259,"props":2388,"children":2389},{"align":2383},[2390],{"type":23,"value":659},{"type":17,"tag":270,"props":2392,"children":2393},{},[2394,2411,2428,2445,2461,2478,2496],{"type":17,"tag":255,"props":2395,"children":2396},{},[2397,2402,2407],{"type":17,"tag":277,"props":2398,"children":2399},{},[2400],{"type":23,"value":2401},"Move up\u002Fdown without tilting",{"type":17,"tag":277,"props":2403,"children":2404},{"align":2383},[2405],{"type":23,"value":2406},"✅",{"type":17,"tag":277,"props":2408,"children":2409},{"align":2383},[2410],{"type":23,"value":2406},{"type":17,"tag":255,"props":2412,"children":2413},{},[2414,2419,2424],{"type":17,"tag":277,"props":2415,"children":2416},{},[2417],{"type":23,"value":2418},"Move sideways without tilting",{"type":17,"tag":277,"props":2420,"children":2421},{"align":2383},[2422],{"type":23,"value":2423},"❌",{"type":17,"tag":277,"props":2425,"children":2426},{"align":2383},[2427],{"type":23,"value":2406},{"type":17,"tag":255,"props":2429,"children":2430},{},[2431,2436,2440],{"type":17,"tag":277,"props":2432,"children":2433},{},[2434],{"type":23,"value":2435},"Hover at arbitrary attitude",{"type":17,"tag":277,"props":2437,"children":2438},{"align":2383},[2439],{"type":23,"value":2423},{"type":17,"tag":277,"props":2441,"children":2442},{"align":2383},[2443],{"type":23,"value":2444},"✅, within actuator limits",{"type":17,"tag":255,"props":2446,"children":2447},{},[2448,2453,2457],{"type":17,"tag":277,"props":2449,"children":2450},{},[2451],{"type":23,"value":2452},"Independently command 3D force",{"type":17,"tag":277,"props":2454,"children":2455},{"align":2383},[2456],{"type":23,"value":2423},{"type":17,"tag":277,"props":2458,"children":2459},{"align":2383},[2460],{"type":23,"value":2406},{"type":17,"tag":255,"props":2462,"children":2463},{},[2464,2469,2474],{"type":17,"tag":277,"props":2465,"children":2466},{},[2467],{"type":23,"value":2468},"Independently command 3D torque",{"type":17,"tag":277,"props":2470,"children":2471},{"align":2383},[2472],{"type":23,"value":2473},"Mostly limited",{"type":17,"tag":277,"props":2475,"children":2476},{"align":2383},[2477],{"type":23,"value":2406},{"type":17,"tag":255,"props":2479,"children":2480},{},[2481,2486,2491],{"type":17,"tag":277,"props":2482,"children":2483},{},[2484],{"type":23,"value":2485},"Actuator redundancy for fault recovery",{"type":17,"tag":277,"props":2487,"children":2488},{"align":2383},[2489],{"type":23,"value":2490},"Limited",{"type":17,"tag":277,"props":2492,"children":2493},{"align":2383},[2494],{"type":23,"value":2495},"Stronger, depending on configuration",{"type":17,"tag":255,"props":2497,"children":2498},{},[2499,2504,2509],{"type":17,"tag":277,"props":2500,"children":2501},{},[2502],{"type":23,"value":2503},"Control difficulty",{"type":17,"tag":277,"props":2505,"children":2506},{"align":2383},[2507],{"type":23,"value":2508},"Medium",{"type":17,"tag":277,"props":2510,"children":2511},{"align":2383},[2512],{"type":23,"value":2513},"High",{"type":17,"tag":136,"props":2515,"children":2516},{},[],{"type":17,"tag":140,"props":2518,"children":2520},{"id":2519},"why-build-one",[2521],{"type":23,"value":2522},"💡 Why Build One?",{"type":17,"tag":18,"props":2524,"children":2525},{},[2526,2528,2533],{"type":23,"value":2527},"The design motivation is simple: ",{"type":17,"tag":152,"props":2529,"children":2530},{},[2531],{"type":23,"value":2532},"many aerial robotics tasks require force control, not just position control",{"type":23,"value":158},{"type":17,"tag":18,"props":2535,"children":2536},{},[2537],{"type":23,"value":2538},"Traditional multirotors are excellent for photography, mapping, inspection, and general flight. However, their under-actuation becomes a bottleneck when the vehicle needs to:",{"type":17,"tag":172,"props":2540,"children":2541},{},[2542,2547,2552,2557,2562],{"type":17,"tag":176,"props":2543,"children":2544},{},[2545],{"type":23,"value":2546},"🧱 interact physically with walls, ceilings, tools, or objects;",{"type":17,"tag":176,"props":2548,"children":2549},{},[2550],{"type":23,"value":2551},"🪛 apply force while maintaining a chosen attitude;",{"type":17,"tag":176,"props":2553,"children":2554},{},[2555],{"type":23,"value":2556},"🧭 fly through constrained spaces without pointing the whole body in the direction of motion;",{"type":17,"tag":176,"props":2558,"children":2559},{},[2560],{"type":23,"value":2561},"🧪 test advanced control allocation and fault-tolerant control algorithms;",{"type":17,"tag":176,"props":2563,"children":2564},{},[2565],{"type":23,"value":2566},"🛟 survive partial actuator degradation by redistributing control effort.",{"type":17,"tag":18,"props":2568,"children":2569},{},[2570,2572,2577],{"type":23,"value":2571},"For our project, the Omnicopter is valuable not because it is easy to fly, but because it is a ",{"type":17,"tag":152,"props":2573,"children":2574},{},[2575],{"type":23,"value":2576},"rich control problem",{"type":23,"value":2578},":",{"type":17,"tag":603,"props":2580,"children":2582},{"className":605,"code":2581,"language":23,"meta":7,"style":7},"Geometry design\n    ↓\n6D force\u002Ftorque map\n    ↓\nOptimal control allocation\n    ↓\nRobust tracking under uncertainty\n    ↓\nFault diagnosis and recovery\n",[2583],{"type":17,"tag":609,"props":2584,"children":2585},{"__ignoreMap":7},[2586,2594,2602,2610,2617,2626,2634,2643,2651],{"type":17,"tag":613,"props":2587,"children":2588},{"class":615,"line":616},[2589],{"type":17,"tag":613,"props":2590,"children":2591},{},[2592],{"type":23,"value":2593},"Geometry design\n",{"type":17,"tag":613,"props":2595,"children":2596},{"class":615,"line":625},[2597],{"type":17,"tag":613,"props":2598,"children":2599},{},[2600],{"type":23,"value":2601},"    ↓\n",{"type":17,"tag":613,"props":2603,"children":2604},{"class":615,"line":634},[2605],{"type":17,"tag":613,"props":2606,"children":2607},{},[2608],{"type":23,"value":2609},"6D force\u002Ftorque map\n",{"type":17,"tag":613,"props":2611,"children":2612},{"class":615,"line":643},[2613],{"type":17,"tag":613,"props":2614,"children":2615},{},[2616],{"type":23,"value":2601},{"type":17,"tag":613,"props":2618,"children":2620},{"class":615,"line":2619},5,[2621],{"type":17,"tag":613,"props":2622,"children":2623},{},[2624],{"type":23,"value":2625},"Optimal control allocation\n",{"type":17,"tag":613,"props":2627,"children":2629},{"class":615,"line":2628},6,[2630],{"type":17,"tag":613,"props":2631,"children":2632},{},[2633],{"type":23,"value":2601},{"type":17,"tag":613,"props":2635,"children":2637},{"class":615,"line":2636},7,[2638],{"type":17,"tag":613,"props":2639,"children":2640},{},[2641],{"type":23,"value":2642},"Robust tracking under uncertainty\n",{"type":17,"tag":613,"props":2644,"children":2646},{"class":615,"line":2645},8,[2647],{"type":17,"tag":613,"props":2648,"children":2649},{},[2650],{"type":23,"value":2601},{"type":17,"tag":613,"props":2652,"children":2654},{"class":615,"line":2653},9,[2655],{"type":17,"tag":613,"props":2656,"children":2657},{},[2658],{"type":23,"value":2659},"Fault diagnosis and recovery\n",{"type":17,"tag":136,"props":2661,"children":2662},{},[],{"type":17,"tag":140,"props":2664,"children":2666},{"id":2665},"implementation-path",[2667],{"type":23,"value":2668},"🧱 Implementation Path",{"type":17,"tag":18,"props":2670,"children":2671},{},[2672],{"type":23,"value":2673},"An Omnicopter can be implemented in several ways. Our project focuses on two useful reference families:",{"type":17,"tag":2675,"props":2676,"children":2677},"ol",{},[2678,2688],{"type":17,"tag":176,"props":2679,"children":2680},{},[2681,2686],{"type":17,"tag":152,"props":2682,"children":2683},{},[2684],{"type":23,"value":2685},"ETH-style cubic Omnicopter",{"type":23,"value":2687}," — an eight-rotor, fixed-pitch, reversible-propeller configuration.",{"type":17,"tag":176,"props":2689,"children":2690},{},[2691,2696],{"type":17,"tag":152,"props":2692,"children":2693},{},[2694],{"type":23,"value":2695},"Lynchpin-style tangential Omnicopter",{"type":23,"value":2697}," — a modular 6-DoF concept based on a geometric frame and tangential thrust logic.",{"type":17,"tag":136,"props":2699,"children":2700},{},[],{"type":17,"tag":140,"props":2702,"children":2704},{"id":2703},"eth-style-cubic-configuration",[2705],{"type":23,"value":2706},"🔷 ETH-style Cubic Configuration",{"type":17,"tag":18,"props":2708,"children":2709},{"align":20},[2710,2711],{"type":23,"value":24},{"type":17,"tag":26,"props":2712,"children":2715},{"src":2713,"alt":2714,"width":29},"assets\u002Feth_cube_geometry.svg","ETH-style cubic Omnicopter geometry",[],{"type":17,"tag":18,"props":2717,"children":2718},{},[2719,2721,2726],{"type":23,"value":2720},"The ETH-style Omnicopter is one of the most important reference designs for this project. It uses ",{"type":17,"tag":152,"props":2722,"children":2723},{},[2724],{"type":23,"value":2725},"eight fixed-pitch rotors",{"type":23,"value":2727}," mounted around a symmetric cube-like frame. The rotors are not all pointing in the same direction. Instead, their thrust axes are arranged so that the combined actuator set can generate force and torque in all three dimensions.",{"type":17,"tag":513,"props":2729,"children":2731},{"id":2730},"eth-design-logic",[2732],{"type":23,"value":2733},"🧠 ETH design logic",{"type":17,"tag":18,"props":2735,"children":2736},{},[2737],{"type":23,"value":2738},"The ETH configuration follows several key ideas:",{"type":17,"tag":247,"props":2740,"children":2741},{},[2742,2758],{"type":17,"tag":251,"props":2743,"children":2744},{},[2745],{"type":17,"tag":255,"props":2746,"children":2747},{},[2748,2753],{"type":17,"tag":259,"props":2749,"children":2750},{},[2751],{"type":23,"value":2752},"Design idea",{"type":17,"tag":259,"props":2754,"children":2755},{},[2756],{"type":23,"value":2757},"Why it matters",{"type":17,"tag":270,"props":2759,"children":2760},{},[2761,2774,2787,2800,2813],{"type":17,"tag":255,"props":2762,"children":2763},{},[2764,2769],{"type":17,"tag":277,"props":2765,"children":2766},{},[2767],{"type":23,"value":2768},"🧊 Symmetric 3D frame",{"type":17,"tag":277,"props":2770,"children":2771},{},[2772],{"type":23,"value":2773},"Makes the vehicle dynamics closer to orientation-invariant",{"type":17,"tag":255,"props":2775,"children":2776},{},[2777,2782],{"type":17,"tag":277,"props":2778,"children":2779},{},[2780],{"type":23,"value":2781},"🌀 Tilted thrust axes",{"type":17,"tag":277,"props":2783,"children":2784},{},[2785],{"type":23,"value":2786},"Allows force generation beyond the body vertical direction",{"type":17,"tag":255,"props":2788,"children":2789},{},[2790,2795],{"type":17,"tag":277,"props":2791,"children":2792},{},[2793],{"type":23,"value":2794},"🔁 Reversible motor-propeller actuators",{"type":17,"tag":277,"props":2796,"children":2797},{},[2798],{"type":23,"value":2799},"Allows positive and negative thrust along each rotor axis",{"type":17,"tag":255,"props":2801,"children":2802},{},[2803,2808],{"type":17,"tag":277,"props":2804,"children":2805},{},[2806],{"type":23,"value":2807},"🎛️ Over-actuation",{"type":17,"tag":277,"props":2809,"children":2810},{},[2811],{"type":23,"value":2812},"More actuators than 6D wrench dimensions creates redundancy",{"type":17,"tag":255,"props":2814,"children":2815},{},[2816,2821],{"type":17,"tag":277,"props":2817,"children":2818},{},[2819],{"type":23,"value":2820},"🧮 Control allocation",{"type":17,"tag":277,"props":2822,"children":2823},{},[2824],{"type":23,"value":2825},"Converts desired force\u002Ftorque into individual motor commands",{"type":17,"tag":513,"props":2827,"children":2829},{"id":2828},"advantages",[2830],{"type":23,"value":2831},"✅ Advantages",{"type":17,"tag":172,"props":2833,"children":2834},{},[2835,2840,2845,2850],{"type":17,"tag":176,"props":2836,"children":2837},{},[2838],{"type":23,"value":2839},"Strong theoretical foundation for 6-DoF force\u002Ftorque authority.",{"type":17,"tag":176,"props":2841,"children":2842},{},[2843],{"type":23,"value":2844},"Compatible with optimization-based allocation and null-space methods.",{"type":17,"tag":176,"props":2846,"children":2847},{},[2848],{"type":23,"value":2849},"Suitable for studying arbitrary-attitude hover and decoupled translation\u002Frotation.",{"type":17,"tag":176,"props":2851,"children":2852},{},[2853],{"type":23,"value":2854},"Closely connected to PX4 Omnicopter documentation and open-source implementation references.",{"type":17,"tag":513,"props":2856,"children":2858},{"id":2857},"️-practical-issues",[2859],{"type":23,"value":2860},"⚠️ Practical issues",{"type":17,"tag":172,"props":2862,"children":2863},{},[2864,2869,2874,2879],{"type":17,"tag":176,"props":2865,"children":2866},{},[2867],{"type":23,"value":2868},"Bidirectional propellers and ESC 3D mode need careful setup.",{"type":17,"tag":176,"props":2870,"children":2871},{},[2872],{"type":23,"value":2873},"Motor reversal is slower than same-direction thrust changes.",{"type":17,"tag":176,"props":2875,"children":2876},{},[2877],{"type":23,"value":2878},"Aerodynamic interference between nearby rotors can produce model mismatch.",{"type":17,"tag":176,"props":2880,"children":2881},{},[2882],{"type":23,"value":2883},"A pseudo-inverse allocator can command infeasible thrusts unless constraints are handled.",{"type":17,"tag":513,"props":2885,"children":2887},{"id":2886},"why-it-is-useful-for-us",[2888],{"type":23,"value":2889},"📌 Why it is useful for us",{"type":17,"tag":18,"props":2891,"children":2892},{},[2893],{"type":23,"value":2894},"The ETH configuration is a strong baseline for our research because it gives a clear mathematical structure:",{"type":17,"tag":603,"props":2896,"children":2898},{"className":605,"code":2897,"language":23,"meta":7,"style":7},"Desired position + attitude\n        ↓\nDesired 3D force + 3D torque\n        ↓\nAllocation matrix M\n        ↓\n8 reversible rotor thrust commands\n",[2899],{"type":17,"tag":609,"props":2900,"children":2901},{"__ignoreMap":7},[2902,2910,2918,2926,2933,2941,2948],{"type":17,"tag":613,"props":2903,"children":2904},{"class":615,"line":616},[2905],{"type":17,"tag":613,"props":2906,"children":2907},{},[2908],{"type":23,"value":2909},"Desired position + attitude\n",{"type":17,"tag":613,"props":2911,"children":2912},{"class":615,"line":625},[2913],{"type":17,"tag":613,"props":2914,"children":2915},{},[2916],{"type":23,"value":2917},"        ↓\n",{"type":17,"tag":613,"props":2919,"children":2920},{"class":615,"line":634},[2921],{"type":17,"tag":613,"props":2922,"children":2923},{},[2924],{"type":23,"value":2925},"Desired 3D force + 3D torque\n",{"type":17,"tag":613,"props":2927,"children":2928},{"class":615,"line":643},[2929],{"type":17,"tag":613,"props":2930,"children":2931},{},[2932],{"type":23,"value":2917},{"type":17,"tag":613,"props":2934,"children":2935},{"class":615,"line":2619},[2936],{"type":17,"tag":613,"props":2937,"children":2938},{},[2939],{"type":23,"value":2940},"Allocation matrix M\n",{"type":17,"tag":613,"props":2942,"children":2943},{"class":615,"line":2628},[2944],{"type":17,"tag":613,"props":2945,"children":2946},{},[2947],{"type":23,"value":2917},{"type":17,"tag":613,"props":2949,"children":2950},{"class":615,"line":2636},[2951],{"type":17,"tag":613,"props":2952,"children":2953},{},[2954],{"type":23,"value":2955},"8 reversible rotor thrust commands\n",{"type":17,"tag":18,"props":2957,"children":2958},{},[2959,2961,2966,2967,2972,2973,2978,2979,2984],{"type":23,"value":2960},"This is ideal for studying ",{"type":17,"tag":152,"props":2962,"children":2963},{},[2964],{"type":23,"value":2965},"optimal allocation",{"type":23,"value":223},{"type":17,"tag":152,"props":2968,"children":2969},{},[2970],{"type":23,"value":2971},"actuator saturation",{"type":23,"value":223},{"type":17,"tag":152,"props":2974,"children":2975},{},[2976],{"type":23,"value":2977},"null-space optimization",{"type":23,"value":230},{"type":17,"tag":152,"props":2980,"children":2981},{},[2982],{"type":23,"value":2983},"fault-tolerant reconfiguration",{"type":23,"value":158},{"type":17,"tag":136,"props":2986,"children":2987},{},[],{"type":17,"tag":140,"props":2989,"children":2991},{"id":2990},"lynchpin-style-tangential-configuration",[2992],{"type":23,"value":2993},"🟣 Lynchpin-style Tangential Configuration",{"type":17,"tag":18,"props":2995,"children":2996},{"align":20},[2997,2998],{"type":23,"value":24},{"type":17,"tag":26,"props":2999,"children":3002},{"src":3000,"alt":3001,"width":29},"assets\u002Flynchpin_geometry.svg","Lynchpin-style Omnicopter geometry",[],{"type":17,"tag":18,"props":3004,"children":3005},{},[3006,3008,3013,3015,3020],{"type":23,"value":3007},"The Lynchpin-style configuration is another useful reference because it approaches 6-DoF flight from a different geometric intuition. Instead of emphasizing a cube-like 8-rotor layout, it uses a ",{"type":17,"tag":152,"props":3009,"children":3010},{},[3011],{"type":23,"value":3012},"collapsed-dodecahedron-inspired modular frame",{"type":23,"value":3014}," and places motors\u002Fpropellers around the frame in a way that supports ",{"type":17,"tag":152,"props":3016,"children":3017},{},[3018],{"type":23,"value":3019},"tangential omnidirectional flight",{"type":23,"value":158},{"type":17,"tag":18,"props":3022,"children":3023},{},[3024],{"type":23,"value":3025},"The Lynchpin contest requirement can be summarized as:",{"type":17,"tag":204,"props":3027,"children":3028},{},[3029],{"type":17,"tag":18,"props":3030,"children":3031},{},[3032],{"type":23,"value":3033},"The drone should rotate into any orientation while maintaining position, and it should move in any direction regardless of its orientation.",{"type":17,"tag":513,"props":3035,"children":3037},{"id":3036},"lynchpin-design-logic",[3038],{"type":23,"value":3039},"🧠 Lynchpin design logic",{"type":17,"tag":247,"props":3041,"children":3042},{},[3043,3057],{"type":17,"tag":251,"props":3044,"children":3045},{},[3046],{"type":17,"tag":255,"props":3047,"children":3048},{},[3049,3053],{"type":17,"tag":259,"props":3050,"children":3051},{},[3052],{"type":23,"value":2752},{"type":17,"tag":259,"props":3054,"children":3055},{},[3056],{"type":23,"value":2757},{"type":17,"tag":270,"props":3058,"children":3059},{},[3060,3073,3086,3099],{"type":17,"tag":255,"props":3061,"children":3062},{},[3063,3068],{"type":17,"tag":277,"props":3064,"children":3065},{},[3066],{"type":23,"value":3067},"🧬 Modular geometry",{"type":17,"tag":277,"props":3069,"children":3070},{},[3071],{"type":23,"value":3072},"Supports repeated geometric units and possible multi-drone \u002F structure ideas",{"type":17,"tag":255,"props":3074,"children":3075},{},[3076,3081],{"type":17,"tag":277,"props":3077,"children":3078},{},[3079],{"type":23,"value":3080},"🧭 Tangential thrust layout",{"type":17,"tag":277,"props":3082,"children":3083},{},[3084],{"type":23,"value":3085},"Produces forces around a 3D shell rather than only along one body axis",{"type":17,"tag":255,"props":3087,"children":3088},{},[3089,3094],{"type":17,"tag":277,"props":3090,"children":3091},{},[3092],{"type":23,"value":3093},"🔄 Independent position and orientation control",{"type":17,"tag":277,"props":3095,"children":3096},{},[3097],{"type":23,"value":3098},"The pilot\u002Fcontroller should command position and attitude separately",{"type":17,"tag":255,"props":3100,"children":3101},{},[3102,3107],{"type":17,"tag":277,"props":3103,"children":3104},{},[3105],{"type":23,"value":3106},"🛠️ Hobby-grade feasibility",{"type":17,"tag":277,"props":3108,"children":3109},{},[3110],{"type":23,"value":3111},"Demonstrations have used common multirotor components and open autopilot stacks",{"type":17,"tag":513,"props":3113,"children":3115},{"id":3114},"advantages-compared-to-eth-style",[3116],{"type":23,"value":3117},"✅ Advantages (compared to ETH-style)",{"type":17,"tag":172,"props":3119,"children":3120},{},[3121,3126,3131,3136],{"type":17,"tag":176,"props":3122,"children":3123},{},[3124],{"type":23,"value":3125},"Attractive geometry for modular aerial robotics.",{"type":17,"tag":176,"props":3127,"children":3128},{},[3129],{"type":23,"value":3130},"Potentially fewer propulsion units than an 8-rotor cubic configuration.",{"type":17,"tag":176,"props":3132,"children":3133},{},[3134],{"type":23,"value":3135},"Good conceptual reference for arbitrary-attitude motion.",{"type":17,"tag":176,"props":3137,"children":3138},{},[3139],{"type":23,"value":3140},"Useful for comparing how geometry affects allocation conditioning and fault tolerance.",{"type":17,"tag":513,"props":3142,"children":3144},{"id":3143},"️-practical-issues-compared-to-eth-style",[3145],{"type":23,"value":3146},"⚠️ Practical issues (compared to ETH-style)",{"type":17,"tag":172,"props":3148,"children":3149},{},[3150,3155,3160,3165],{"type":17,"tag":176,"props":3151,"children":3152},{},[3153],{"type":23,"value":3154},"Less standardized than the ETH\u002FPX4-style reference design.",{"type":17,"tag":176,"props":3156,"children":3157},{},[3158],{"type":23,"value":3159},"Geometry and actuator directions must be modelled very carefully.",{"type":17,"tag":176,"props":3161,"children":3162},{},[3163],{"type":23,"value":3164},"Fewer actuators may reduce redundancy for fault-tolerant allocation.",{"type":17,"tag":176,"props":3166,"children":3167},{},[3168],{"type":23,"value":3169},"The controller must still handle bidirectional thrust, actuator limits, and motor dynamics.",{"type":17,"tag":513,"props":3171,"children":3173},{"id":3172},"why-the-lynchpin-style-config-is-useful-for-us",[3174],{"type":23,"value":3175},"📌 Why the Lynchpin-style config is useful for us",{"type":17,"tag":18,"props":3177,"children":3178},{},[3179,3181,3186],{"type":23,"value":3180},"The Lynchpin-style configuration is useful as a ",{"type":17,"tag":152,"props":3182,"children":3183},{},[3184],{"type":23,"value":3185},"comparison case",{"type":23,"value":2578},{"type":17,"tag":603,"props":3188,"children":3190},{"className":605,"code":3189,"language":23,"meta":7,"style":7},"ETH-style:      symmetry + 8 rotors + allocation redundancy\nLynchpin-style: modular geometry + tangential logic + compact 6-DoF concept\n",[3191],{"type":17,"tag":609,"props":3192,"children":3193},{"__ignoreMap":7},[3194,3202],{"type":17,"tag":613,"props":3195,"children":3196},{"class":615,"line":616},[3197],{"type":17,"tag":613,"props":3198,"children":3199},{},[3200],{"type":23,"value":3201},"ETH-style:      symmetry + 8 rotors + allocation redundancy\n",{"type":17,"tag":613,"props":3203,"children":3204},{"class":615,"line":625},[3205],{"type":17,"tag":613,"props":3206,"children":3207},{},[3208],{"type":23,"value":3209},"Lynchpin-style: modular geometry + tangential logic + compact 6-DoF concept\n",{"type":17,"tag":18,"props":3211,"children":3212},{},[3213],{"type":23,"value":3214},"By comparing both, we can ask research questions such as:",{"type":17,"tag":172,"props":3216,"children":3217},{},[3218,3223,3228,3233],{"type":17,"tag":176,"props":3219,"children":3220},{},[3221],{"type":23,"value":3222},"Which geometry gives better force\u002Ftorque isotropy?",{"type":17,"tag":176,"props":3224,"children":3225},{},[3226],{"type":23,"value":3227},"Which configuration gives a better-conditioned allocation matrix?",{"type":17,"tag":176,"props":3229,"children":3230},{},[3231],{"type":23,"value":3232},"How much actuator redundancy is needed for safe fault recovery?",{"type":17,"tag":176,"props":3234,"children":3235},{},[3236],{"type":23,"value":3237},"Which design is more efficient for arbitrary-attitude hovering?",{"type":17,"tag":136,"props":3239,"children":3240},{},[],{"type":17,"tag":140,"props":3242,"children":3244},{"id":3243},"️-our-hardware-progress",[3245],{"type":23,"value":3246},"🛠️ Our Hardware Progress",{"type":17,"tag":18,"props":3248,"children":3249},{},[3250],{"type":23,"value":3251},"We have already constructed a complete Omnicopter hardware platform and performed initial tests. This platform is intended to serve as the physical testbed for the control research in this repository.",{"type":17,"tag":513,"props":3253,"children":3255},{"id":3254},"current-progress",[3256],{"type":23,"value":3257},"✅ Current progress",{"type":17,"tag":172,"props":3259,"children":3262},{"className":3260},[3261],"contains-task-list",[3263,3275,3284,3293,3302,3311,3320,3329,3338,3347,3356],{"type":17,"tag":176,"props":3264,"children":3267},{"className":3265},[3266],"task-list-item",[3268,3273],{"type":17,"tag":3269,"props":3270,"children":3272},"input",{"checked":567,"disabled":567,"type":3271},"checkbox",[],{"type":23,"value":3274}," Reviewed ETH Omnicopter and Lynchpin-style design references.",{"type":17,"tag":176,"props":3276,"children":3278},{"className":3277},[3266],[3279,3282],{"type":17,"tag":3269,"props":3280,"children":3281},{"checked":567,"disabled":567,"type":3271},[],{"type":23,"value":3283}," Selected a feasible Omnicopter hardware configuration for research use.",{"type":17,"tag":176,"props":3285,"children":3287},{"className":3286},[3266],[3288,3291],{"type":17,"tag":3269,"props":3289,"children":3290},{"checked":567,"disabled":567,"type":3271},[],{"type":23,"value":3292}," Built a complete Omnicopter hardware platform.",{"type":17,"tag":176,"props":3294,"children":3296},{"className":3295},[3266],[3297,3300],{"type":17,"tag":3269,"props":3298,"children":3299},{"checked":567,"disabled":567,"type":3271},[],{"type":23,"value":3301}," Performed initial hardware-level tests.",{"type":17,"tag":176,"props":3303,"children":3305},{"className":3304},[3266],[3306,3309],{"type":17,"tag":3269,"props":3307,"children":3308},{"checked":567,"disabled":567,"type":3271},[],{"type":23,"value":3310}," Prepared the platform for control-oriented experiments.",{"type":17,"tag":176,"props":3312,"children":3314},{"className":3313},[3266],[3315,3318],{"type":17,"tag":3269,"props":3316,"children":3317},{"disabled":567,"type":3271},[],{"type":23,"value":3319}," Identify or refine the thrust\u002Ftorque allocation matrix.",{"type":17,"tag":176,"props":3321,"children":3323},{"className":3322},[3266],[3324,3327],{"type":17,"tag":3269,"props":3325,"children":3326},{"disabled":567,"type":3271},[],{"type":23,"value":3328}," Build a simulation model for controller validation.",{"type":17,"tag":176,"props":3330,"children":3332},{"className":3331},[3266],[3333,3336],{"type":17,"tag":3269,"props":3334,"children":3335},{"disabled":567,"type":3271},[],{"type":23,"value":3337}," Implement constrained optimal allocation.",{"type":17,"tag":176,"props":3339,"children":3341},{"className":3340},[3266],[3342,3345],{"type":17,"tag":3269,"props":3343,"children":3344},{"disabled":567,"type":3271},[],{"type":23,"value":3346}," Add robust tracking controller.",{"type":17,"tag":176,"props":3348,"children":3350},{"className":3349},[3266],[3351,3354],{"type":17,"tag":3269,"props":3352,"children":3353},{"disabled":567,"type":3271},[],{"type":23,"value":3355}," Add fault diagnosis and fault-tolerant reallocation.",{"type":17,"tag":176,"props":3357,"children":3359},{"className":3358},[3266],[3360,3363],{"type":17,"tag":3269,"props":3361,"children":3362},{"disabled":567,"type":3271},[],{"type":23,"value":3364}," Validate with repeatable flight experiments.",{"type":17,"tag":513,"props":3366,"children":3368},{"id":3367},"hardware-test-evidence-to-add",[3369],{"type":23,"value":3370},"🧪 Hardware test evidence to add",{"type":17,"tag":247,"props":3372,"children":3373},{},[3374,3395],{"type":17,"tag":251,"props":3375,"children":3376},{},[3377],{"type":17,"tag":255,"props":3378,"children":3379},{},[3380,3385,3390],{"type":17,"tag":259,"props":3381,"children":3382},{},[3383],{"type":23,"value":3384},"Evidence",{"type":17,"tag":259,"props":3386,"children":3387},{},[3388],{"type":23,"value":3389},"Suggested file path",{"type":17,"tag":259,"props":3391,"children":3392},{},[3393],{"type":23,"value":3394},"README insertion",{"type":17,"tag":270,"props":3396,"children":3397},{},[3398,3419,3441,3463,3485,3507],{"type":17,"tag":255,"props":3399,"children":3400},{},[3401,3406,3414],{"type":17,"tag":277,"props":3402,"children":3403},{},[3404],{"type":23,"value":3405},"Prototype overview photo",{"type":17,"tag":277,"props":3407,"children":3408},{},[3409],{"type":17,"tag":609,"props":3410,"children":3412},{"className":3411},[],[3413],{"type":23,"value":540},{"type":17,"tag":277,"props":3415,"children":3416},{},[3417],{"type":23,"value":3418},"Replace the placeholder in the media section",{"type":17,"tag":255,"props":3420,"children":3421},{},[3422,3427,3436],{"type":17,"tag":277,"props":3423,"children":3424},{},[3425],{"type":23,"value":3426},"Wiring \u002F ESC close-up",{"type":17,"tag":277,"props":3428,"children":3429},{},[3430],{"type":17,"tag":609,"props":3431,"children":3433},{"className":3432},[],[3434],{"type":23,"value":3435},"assets\u002Fwiring_closeup.jpg",{"type":17,"tag":277,"props":3437,"children":3438},{},[3439],{"type":23,"value":3440},"Add below this table",{"type":17,"tag":255,"props":3442,"children":3443},{},[3444,3449,3458],{"type":17,"tag":277,"props":3445,"children":3446},{},[3447],{"type":23,"value":3448},"Motor direction test",{"type":17,"tag":277,"props":3450,"children":3451},{},[3452],{"type":17,"tag":609,"props":3453,"children":3455},{"className":3454},[],[3456],{"type":23,"value":3457},"assets\u002Fmotor_test_thumbnail.jpg",{"type":17,"tag":277,"props":3459,"children":3460},{},[3461],{"type":23,"value":3462},"Link to video attachment or YouTube",{"type":17,"tag":255,"props":3464,"children":3465},{},[3466,3471,3480],{"type":17,"tag":277,"props":3467,"children":3468},{},[3469],{"type":23,"value":3470},"Bench thrust test plot",{"type":17,"tag":277,"props":3472,"children":3473},{},[3474],{"type":17,"tag":609,"props":3475,"children":3477},{"className":3476},[],[3478],{"type":23,"value":3479},"assets\u002Fthrust_test_plot.png",{"type":17,"tag":277,"props":3481,"children":3482},{},[3483],{"type":23,"value":3484},"Add in the modeling section",{"type":17,"tag":255,"props":3486,"children":3487},{},[3488,3493,3502],{"type":17,"tag":277,"props":3489,"children":3490},{},[3491],{"type":23,"value":3492},"Tethered flight video",{"type":17,"tag":277,"props":3494,"children":3495},{},[3496],{"type":17,"tag":609,"props":3497,"children":3499},{"className":3498},[],[3500],{"type":23,"value":3501},"assets\u002Ftethered_test_thumbnail.jpg",{"type":17,"tag":277,"props":3503,"children":3504},{},[3505],{"type":23,"value":3506},"Link to GitHub user-attachment video",{"type":17,"tag":255,"props":3508,"children":3509},{},[3510,3515,3524],{"type":17,"tag":277,"props":3511,"children":3512},{},[3513],{"type":23,"value":3514},"Flight log plot",{"type":17,"tag":277,"props":3516,"children":3517},{},[3518],{"type":17,"tag":609,"props":3519,"children":3521},{"className":3520},[],[3522],{"type":23,"value":3523},"assets\u002Flog_position_attitude.png",{"type":17,"tag":277,"props":3525,"children":3526},{},[3527],{"type":23,"value":3528},"Add in the experiment section",{"type":17,"tag":136,"props":3530,"children":3531},{},[],{"type":17,"tag":140,"props":3533,"children":3535},{"id":3534},"modeling-foundation",[3536],{"type":23,"value":3537},"🧮 Modeling Foundation",{"type":17,"tag":18,"props":3539,"children":3540},{},[3541,3543,3548,3550,3592],{"type":23,"value":3542},"The Omnicopter can be modelled as a rigid body with six controllable degrees of freedom. The key object is the ",{"type":17,"tag":152,"props":3544,"children":3545},{},[3546],{"type":23,"value":3547},"allocation matrix",{"type":23,"value":3549}," ",{"type":17,"tag":613,"props":3551,"children":3553},{"className":3552},[670],[3554,3575],{"type":17,"tag":613,"props":3555,"children":3557},{"className":3556},[675],[3558],{"type":17,"tag":678,"props":3559,"children":3560},{"xmlns":680},[3561],{"type":17,"tag":684,"props":3562,"children":3563},{},[3564,3571],{"type":17,"tag":688,"props":3565,"children":3566},{},[3567],{"type":17,"tag":692,"props":3568,"children":3569},{},[3570],{"type":23,"value":766},{"type":17,"tag":798,"props":3572,"children":3573},{"encoding":800},[3574],{"type":23,"value":766},{"type":17,"tag":613,"props":3576,"children":3578},{"className":3577,"ariaHidden":709},[807],[3579],{"type":17,"tag":613,"props":3580,"children":3582},{"className":3581},[812],[3583,3587],{"type":17,"tag":613,"props":3584,"children":3586},{"className":3585,"style":1385},[817],[],{"type":17,"tag":613,"props":3588,"children":3590},{"className":3589,"style":1003},[823,1002],[3591],{"type":23,"value":766},{"type":23,"value":2578},{"type":17,"tag":613,"props":3594,"children":3596},{"className":3595},[665],[3597],{"type":17,"tag":613,"props":3598,"children":3600},{"className":3599},[670],[3601,3672],{"type":17,"tag":613,"props":3602,"children":3604},{"className":3603},[675],[3605],{"type":17,"tag":678,"props":3606,"children":3607},{"xmlns":680,"display":681},[3608],{"type":17,"tag":684,"props":3609,"children":3610},{},[3611,3667],{"type":17,"tag":688,"props":3612,"children":3613},{},[3614,3654,3658,3662],{"type":17,"tag":688,"props":3615,"children":3616},{},[3617,3621,3650],{"type":17,"tag":699,"props":3618,"children":3619},{"fence":709},[3620],{"type":23,"value":712},{"type":17,"tag":714,"props":3622,"children":3623},{"rowspacing":716,"columnalign":20,"columnspacing":717},[3624,3637],{"type":17,"tag":720,"props":3625,"children":3626},{},[3627],{"type":17,"tag":724,"props":3628,"children":3629},{},[3630],{"type":17,"tag":728,"props":3631,"children":3632},{"scriptlevel":730,"displaystyle":731},[3633],{"type":17,"tag":692,"props":3634,"children":3635},{"mathvariant":694},[3636],{"type":23,"value":737},{"type":17,"tag":720,"props":3638,"children":3639},{},[3640],{"type":17,"tag":724,"props":3641,"children":3642},{},[3643],{"type":17,"tag":728,"props":3644,"children":3645},{"scriptlevel":730,"displaystyle":731},[3646],{"type":17,"tag":692,"props":3647,"children":3648},{"mathvariant":749},[3649],{"type":23,"value":752},{"type":17,"tag":699,"props":3651,"children":3652},{"fence":709},[3653],{"type":23,"value":757},{"type":17,"tag":699,"props":3655,"children":3656},{},[3657],{"type":23,"value":703},{"type":17,"tag":692,"props":3659,"children":3660},{},[3661],{"type":23,"value":766},{"type":17,"tag":692,"props":3663,"children":3664},{"mathvariant":694},[3665],{"type":23,"value":3666},"u",{"type":17,"tag":798,"props":3668,"children":3669},{"encoding":800},[3670],{"type":23,"value":3671},"\\begin{bmatrix}\n\\mathbf{F} \\\\\n\\boldsymbol{\\tau}\n\\end{bmatrix}\n= M\\mathbf{u}",{"type":17,"tag":613,"props":3673,"children":3675},{"className":3674,"ariaHidden":709},[807],[3676,3799],{"type":17,"tag":613,"props":3677,"children":3679},{"className":3678},[812],[3680,3684,3786,3790,3795],{"type":17,"tag":613,"props":3681,"children":3683},{"className":3682,"style":851},[817],[],{"type":17,"tag":613,"props":3685,"children":3687},{"className":3686},[856],[3688,3697,3777],{"type":17,"tag":613,"props":3689,"children":3691},{"className":3690,"style":863},[861,862],[3692],{"type":17,"tag":613,"props":3693,"children":3695},{"className":3694},[868,869],[3696],{"type":23,"value":712},{"type":17,"tag":613,"props":3698,"children":3700},{"className":3699},[823],[3701],{"type":17,"tag":613,"props":3702,"children":3704},{"className":3703},[714],[3705],{"type":17,"tag":613,"props":3706,"children":3708},{"className":3707},[883],[3709],{"type":17,"tag":613,"props":3710,"children":3712},{"className":3711},[888,889],[3713,3766],{"type":17,"tag":613,"props":3714,"children":3716},{"className":3715},[894],[3717,3761],{"type":17,"tag":613,"props":3718,"children":3720},{"className":3719,"style":900},[899],[3721,3737],{"type":17,"tag":613,"props":3722,"children":3723},{"style":904},[3724,3728],{"type":17,"tag":613,"props":3725,"children":3727},{"className":3726,"style":910},[909],[],{"type":17,"tag":613,"props":3729,"children":3731},{"className":3730},[823],[3732],{"type":17,"tag":613,"props":3733,"children":3735},{"className":3734},[823,824],[3736],{"type":23,"value":737},{"type":17,"tag":613,"props":3738,"children":3739},{"style":923},[3740,3744],{"type":17,"tag":613,"props":3741,"children":3743},{"className":3742,"style":910},[909],[],{"type":17,"tag":613,"props":3745,"children":3747},{"className":3746},[823],[3748],{"type":17,"tag":613,"props":3749,"children":3751},{"className":3750},[823],[3752],{"type":17,"tag":613,"props":3753,"children":3755},{"className":3754},[823],[3756],{"type":17,"tag":613,"props":3757,"children":3759},{"className":3758,"style":945},[823,944],[3760],{"type":23,"value":752},{"type":17,"tag":613,"props":3762,"children":3764},{"className":3763},[951],[3765],{"type":23,"value":954},{"type":17,"tag":613,"props":3767,"children":3769},{"className":3768},[894],[3770],{"type":17,"tag":613,"props":3771,"children":3773},{"className":3772,"style":962},[899],[3774],{"type":17,"tag":613,"props":3775,"children":3776},{},[],{"type":17,"tag":613,"props":3778,"children":3780},{"className":3779,"style":863},[970,862],[3781],{"type":17,"tag":613,"props":3782,"children":3784},{"className":3783},[868,869],[3785],{"type":23,"value":757},{"type":17,"tag":613,"props":3787,"children":3789},{"className":3788,"style":832},[831],[],{"type":17,"tag":613,"props":3791,"children":3793},{"className":3792},[837],[3794],{"type":23,"value":703},{"type":17,"tag":613,"props":3796,"children":3798},{"className":3797,"style":832},[831],[],{"type":17,"tag":613,"props":3800,"children":3802},{"className":3801},[812],[3803,3807,3812],{"type":17,"tag":613,"props":3804,"children":3806},{"className":3805,"style":1385},[817],[],{"type":17,"tag":613,"props":3808,"children":3810},{"className":3809,"style":1003},[823,1002],[3811],{"type":23,"value":766},{"type":17,"tag":613,"props":3813,"children":3815},{"className":3814},[823,824],[3816],{"type":23,"value":3666},{"type":17,"tag":18,"props":3818,"children":3819},{},[3820,3821,3864],{"type":23,"value":2151},{"type":17,"tag":613,"props":3822,"children":3824},{"className":3823},[670],[3825,3847],{"type":17,"tag":613,"props":3826,"children":3828},{"className":3827},[675],[3829],{"type":17,"tag":678,"props":3830,"children":3831},{"xmlns":680},[3832],{"type":17,"tag":684,"props":3833,"children":3834},{},[3835,3842],{"type":17,"tag":688,"props":3836,"children":3837},{},[3838],{"type":17,"tag":692,"props":3839,"children":3840},{"mathvariant":694},[3841],{"type":23,"value":3666},{"type":17,"tag":798,"props":3843,"children":3844},{"encoding":800},[3845],{"type":23,"value":3846},"\\mathbf{u}",{"type":17,"tag":613,"props":3848,"children":3850},{"className":3849,"ariaHidden":709},[807],[3851],{"type":17,"tag":613,"props":3852,"children":3854},{"className":3853},[812],[3855,3859],{"type":17,"tag":613,"props":3856,"children":3858},{"className":3857,"style":1188},[817],[],{"type":17,"tag":613,"props":3860,"children":3862},{"className":3861},[823,824],[3863],{"type":23,"value":3666},{"type":23,"value":3865}," represents individual actuator thrust commands.",{"type":17,"tag":513,"props":3867,"children":3869},{"id":3868},"what-we-need-to-identify",[3870],{"type":23,"value":3871},"🔍 What we need to identify",{"type":17,"tag":247,"props":3873,"children":3874},{},[3875,3891],{"type":17,"tag":251,"props":3876,"children":3877},{},[3878],{"type":17,"tag":255,"props":3879,"children":3880},{},[3881,3886],{"type":17,"tag":259,"props":3882,"children":3883},{},[3884],{"type":23,"value":3885},"Model item",{"type":17,"tag":259,"props":3887,"children":3888},{},[3889],{"type":23,"value":3890},"Why we need it",{"type":17,"tag":270,"props":3892,"children":3893},{},[3894,4008,4122,4135,4148,4161,4174,4187],{"type":17,"tag":255,"props":3895,"children":3896},{},[3897,4003],{"type":17,"tag":277,"props":3898,"children":3899},{},[3900,3902],{"type":23,"value":3901},"Rotor position",{"type":17,"tag":613,"props":3903,"children":3905},{"className":3904},[670],[3906,3934],{"type":17,"tag":613,"props":3907,"children":3909},{"className":3908},[675],[3910],{"type":17,"tag":678,"props":3911,"children":3912},{"xmlns":680},[3913],{"type":17,"tag":684,"props":3914,"children":3915},{},[3916,3930],{"type":17,"tag":688,"props":3917,"children":3918},{},[3919],{"type":17,"tag":768,"props":3920,"children":3921},{},[3922,3926],{"type":17,"tag":692,"props":3923,"children":3924},{"mathvariant":694},[3925],{"type":23,"value":18},{"type":17,"tag":692,"props":3927,"children":3928},{},[3929],{"type":23,"value":1420},{"type":17,"tag":798,"props":3931,"children":3932},{"encoding":800},[3933],{"type":23,"value":2184},{"type":17,"tag":613,"props":3935,"children":3937},{"className":3936,"ariaHidden":709},[807],[3938],{"type":17,"tag":613,"props":3939,"children":3941},{"className":3940},[812],[3942,3946],{"type":17,"tag":613,"props":3943,"children":3945},{"className":3944,"style":818},[817],[],{"type":17,"tag":613,"props":3947,"children":3949},{"className":3948},[823],[3950,3955],{"type":17,"tag":613,"props":3951,"children":3953},{"className":3952},[823,824],[3954],{"type":23,"value":18},{"type":17,"tag":613,"props":3956,"children":3958},{"className":3957},[1018],[3959],{"type":17,"tag":613,"props":3960,"children":3962},{"className":3961},[888,889],[3963,3992],{"type":17,"tag":613,"props":3964,"children":3966},{"className":3965},[894],[3967,3987],{"type":17,"tag":613,"props":3968,"children":3970},{"className":3969,"style":1732},[899],[3971],{"type":17,"tag":613,"props":3972,"children":3973},{"style":1795},[3974,3978],{"type":17,"tag":613,"props":3975,"children":3977},{"className":3976,"style":1040},[909],[],{"type":17,"tag":613,"props":3979,"children":3981},{"className":3980},[1045,1046,869,1047],[3982],{"type":17,"tag":613,"props":3983,"children":3985},{"className":3984},[823,1002,1047],[3986],{"type":23,"value":1420},{"type":17,"tag":613,"props":3988,"children":3990},{"className":3989},[951],[3991],{"type":23,"value":954},{"type":17,"tag":613,"props":3993,"children":3995},{"className":3994},[894],[3996],{"type":17,"tag":613,"props":3997,"children":3999},{"className":3998,"style":1763},[899],[4000],{"type":17,"tag":613,"props":4001,"children":4002},{},[],{"type":17,"tag":277,"props":4004,"children":4005},{},[4006],{"type":23,"value":4007},"Determines torque from off-center thrust",{"type":17,"tag":255,"props":4009,"children":4010},{},[4011,4117],{"type":17,"tag":277,"props":4012,"children":4013},{},[4014,4016],{"type":23,"value":4015},"Rotor axis",{"type":17,"tag":613,"props":4017,"children":4019},{"className":4018},[670],[4020,4048],{"type":17,"tag":613,"props":4021,"children":4023},{"className":4022},[675],[4024],{"type":17,"tag":678,"props":4025,"children":4026},{"xmlns":680},[4027],{"type":17,"tag":684,"props":4028,"children":4029},{},[4030,4044],{"type":17,"tag":688,"props":4031,"children":4032},{},[4033],{"type":17,"tag":768,"props":4034,"children":4035},{},[4036,4040],{"type":17,"tag":692,"props":4037,"children":4038},{"mathvariant":694},[4039],{"type":23,"value":1505},{"type":17,"tag":692,"props":4041,"children":4042},{},[4043],{"type":23,"value":1420},{"type":17,"tag":798,"props":4045,"children":4046},{"encoding":800},[4047],{"type":23,"value":2288},{"type":17,"tag":613,"props":4049,"children":4051},{"className":4050,"ariaHidden":709},[807],[4052],{"type":17,"tag":613,"props":4053,"children":4055},{"className":4054},[812],[4056,4060],{"type":17,"tag":613,"props":4057,"children":4059},{"className":4058,"style":2300},[817],[],{"type":17,"tag":613,"props":4061,"children":4063},{"className":4062},[823],[4064,4069],{"type":17,"tag":613,"props":4065,"children":4067},{"className":4066},[823,824],[4068],{"type":23,"value":1505},{"type":17,"tag":613,"props":4070,"children":4072},{"className":4071},[1018],[4073],{"type":17,"tag":613,"props":4074,"children":4076},{"className":4075},[888,889],[4077,4106],{"type":17,"tag":613,"props":4078,"children":4080},{"className":4079},[894],[4081,4101],{"type":17,"tag":613,"props":4082,"children":4084},{"className":4083,"style":1732},[899],[4085],{"type":17,"tag":613,"props":4086,"children":4087},{"style":1795},[4088,4092],{"type":17,"tag":613,"props":4089,"children":4091},{"className":4090,"style":1040},[909],[],{"type":17,"tag":613,"props":4093,"children":4095},{"className":4094},[1045,1046,869,1047],[4096],{"type":17,"tag":613,"props":4097,"children":4099},{"className":4098},[823,1002,1047],[4100],{"type":23,"value":1420},{"type":17,"tag":613,"props":4102,"children":4104},{"className":4103},[951],[4105],{"type":23,"value":954},{"type":17,"tag":613,"props":4107,"children":4109},{"className":4108},[894],[4110],{"type":17,"tag":613,"props":4111,"children":4113},{"className":4112,"style":1763},[899],[4114],{"type":17,"tag":613,"props":4115,"children":4116},{},[],{"type":17,"tag":277,"props":4118,"children":4119},{},[4120],{"type":23,"value":4121},"Determines the direction of generated force",{"type":17,"tag":255,"props":4123,"children":4124},{},[4125,4130],{"type":17,"tag":277,"props":4126,"children":4127},{},[4128],{"type":23,"value":4129},"Thrust coefficient",{"type":17,"tag":277,"props":4131,"children":4132},{},[4133],{"type":23,"value":4134},"Maps command \u002F RPM to thrust",{"type":17,"tag":255,"props":4136,"children":4137},{},[4138,4143],{"type":17,"tag":277,"props":4139,"children":4140},{},[4141],{"type":23,"value":4142},"Drag torque coefficient",{"type":17,"tag":277,"props":4144,"children":4145},{},[4146],{"type":23,"value":4147},"Improves yaw and torque prediction",{"type":17,"tag":255,"props":4149,"children":4150},{},[4151,4156],{"type":17,"tag":277,"props":4152,"children":4153},{},[4154],{"type":23,"value":4155},"Motor reversal delay",{"type":17,"tag":277,"props":4157,"children":4158},{},[4159],{"type":23,"value":4160},"Important for bidirectional thrust allocation",{"type":17,"tag":255,"props":4162,"children":4163},{},[4164,4169],{"type":17,"tag":277,"props":4165,"children":4166},{},[4167],{"type":23,"value":4168},"Saturation limits",{"type":17,"tag":277,"props":4170,"children":4171},{},[4172],{"type":23,"value":4173},"Required for feasible optimal control",{"type":17,"tag":255,"props":4175,"children":4176},{},[4177,4182],{"type":17,"tag":277,"props":4178,"children":4179},{},[4180],{"type":23,"value":4181},"Rate limits",{"type":17,"tag":277,"props":4183,"children":4184},{},[4185],{"type":23,"value":4186},"Prevents unrealistic thrust changes",{"type":17,"tag":255,"props":4188,"children":4189},{},[4190,4195],{"type":17,"tag":277,"props":4191,"children":4192},{},[4193],{"type":23,"value":4194},"Aerodynamic interference",{"type":17,"tag":277,"props":4196,"children":4197},{},[4198],{"type":23,"value":4199},"Important for robust control and compensation",{"type":17,"tag":513,"props":4201,"children":4203},{"id":4202},"suggested-identification-workflow",[4204],{"type":23,"value":4205},"🧪 Suggested identification workflow",{"type":17,"tag":603,"props":4207,"children":4209},{"className":605,"code":4208,"language":23,"meta":7,"style":7},"1. Measure geometry\n   p_i, x_i, center of mass, frame axes\n\n2. Static actuator calibration\n   command -> thrust, command -> current, command -> RPM\n\n3. Dynamic actuator calibration\n   thrust step response, reversal delay, rate limit\n\n4. Build initial allocation matrix\n   y = M u\n\n5. Validate against IMU \u002F motion capture \u002F log data\n   predicted acceleration vs measured acceleration\n\n6. Update model\n   add bias, scaling, saturation, coupling, disturbance terms\n",[4210],{"type":17,"tag":609,"props":4211,"children":4212},{"__ignoreMap":7},[4213,4221,4229,4237,4245,4253,4260,4268,4276,4283,4292,4301,4309,4318,4327,4335,4344],{"type":17,"tag":613,"props":4214,"children":4215},{"class":615,"line":616},[4216],{"type":17,"tag":613,"props":4217,"children":4218},{},[4219],{"type":23,"value":4220},"1. Measure geometry\n",{"type":17,"tag":613,"props":4222,"children":4223},{"class":615,"line":625},[4224],{"type":17,"tag":613,"props":4225,"children":4226},{},[4227],{"type":23,"value":4228},"   p_i, x_i, center of mass, frame axes\n",{"type":17,"tag":613,"props":4230,"children":4231},{"class":615,"line":634},[4232],{"type":17,"tag":613,"props":4233,"children":4234},{"emptyLinePlaceholder":567},[4235],{"type":23,"value":4236},"\n",{"type":17,"tag":613,"props":4238,"children":4239},{"class":615,"line":643},[4240],{"type":17,"tag":613,"props":4241,"children":4242},{},[4243],{"type":23,"value":4244},"2. Static actuator calibration\n",{"type":17,"tag":613,"props":4246,"children":4247},{"class":615,"line":2619},[4248],{"type":17,"tag":613,"props":4249,"children":4250},{},[4251],{"type":23,"value":4252},"   command -> thrust, command -> current, command -> RPM\n",{"type":17,"tag":613,"props":4254,"children":4255},{"class":615,"line":2628},[4256],{"type":17,"tag":613,"props":4257,"children":4258},{"emptyLinePlaceholder":567},[4259],{"type":23,"value":4236},{"type":17,"tag":613,"props":4261,"children":4262},{"class":615,"line":2636},[4263],{"type":17,"tag":613,"props":4264,"children":4265},{},[4266],{"type":23,"value":4267},"3. Dynamic actuator calibration\n",{"type":17,"tag":613,"props":4269,"children":4270},{"class":615,"line":2645},[4271],{"type":17,"tag":613,"props":4272,"children":4273},{},[4274],{"type":23,"value":4275},"   thrust step response, reversal delay, rate limit\n",{"type":17,"tag":613,"props":4277,"children":4278},{"class":615,"line":2653},[4279],{"type":17,"tag":613,"props":4280,"children":4281},{"emptyLinePlaceholder":567},[4282],{"type":23,"value":4236},{"type":17,"tag":613,"props":4284,"children":4286},{"class":615,"line":4285},10,[4287],{"type":17,"tag":613,"props":4288,"children":4289},{},[4290],{"type":23,"value":4291},"4. Build initial allocation matrix\n",{"type":17,"tag":613,"props":4293,"children":4295},{"class":615,"line":4294},11,[4296],{"type":17,"tag":613,"props":4297,"children":4298},{},[4299],{"type":23,"value":4300},"   y = M u\n",{"type":17,"tag":613,"props":4302,"children":4304},{"class":615,"line":4303},12,[4305],{"type":17,"tag":613,"props":4306,"children":4307},{"emptyLinePlaceholder":567},[4308],{"type":23,"value":4236},{"type":17,"tag":613,"props":4310,"children":4312},{"class":615,"line":4311},13,[4313],{"type":17,"tag":613,"props":4314,"children":4315},{},[4316],{"type":23,"value":4317},"5. Validate against IMU \u002F motion capture \u002F log data\n",{"type":17,"tag":613,"props":4319,"children":4321},{"class":615,"line":4320},14,[4322],{"type":17,"tag":613,"props":4323,"children":4324},{},[4325],{"type":23,"value":4326},"   predicted acceleration vs measured acceleration\n",{"type":17,"tag":613,"props":4328,"children":4330},{"class":615,"line":4329},15,[4331],{"type":17,"tag":613,"props":4332,"children":4333},{"emptyLinePlaceholder":567},[4334],{"type":23,"value":4236},{"type":17,"tag":613,"props":4336,"children":4338},{"class":615,"line":4337},16,[4339],{"type":17,"tag":613,"props":4340,"children":4341},{},[4342],{"type":23,"value":4343},"6. Update model\n",{"type":17,"tag":613,"props":4345,"children":4347},{"class":615,"line":4346},17,[4348],{"type":17,"tag":613,"props":4349,"children":4350},{},[4351],{"type":23,"value":4352},"   add bias, scaling, saturation, coupling, disturbance terms\n",{"type":17,"tag":136,"props":4354,"children":4355},{},[],{"type":17,"tag":140,"props":4357,"children":4359},{"id":4358},"research-focus",[4360],{"type":23,"value":4361},"🧠 Research Focus",{"type":17,"tag":18,"props":4363,"children":4364},{"align":20},[4365,4366],{"type":23,"value":24},{"type":17,"tag":26,"props":4367,"children":4370},{"src":4368,"alt":4369,"width":29},"assets\u002Fcontrol_stack.svg","Omnicopter control stack",[],{"type":17,"tag":18,"props":4372,"children":4373},{},[4374],{"type":23,"value":4375},"This project lands on three major control directions:",{"type":17,"tag":2675,"props":4377,"children":4378},{},[4379,4389,4399],{"type":17,"tag":176,"props":4380,"children":4381},{},[4382,4387],{"type":17,"tag":152,"props":4383,"children":4384},{},[4385],{"type":23,"value":4386},"Optimal Control",{"type":23,"value":4388}," — make the 6D motion and motor allocation efficient and constraint-aware.",{"type":17,"tag":176,"props":4390,"children":4391},{},[4392,4397],{"type":17,"tag":152,"props":4393,"children":4394},{},[4395],{"type":23,"value":4396},"Robust Control",{"type":23,"value":4398}," — maintain stable tracking under modeling errors, disturbances, and aerodynamic coupling.",{"type":17,"tag":176,"props":4400,"children":4401},{},[4402,4407],{"type":17,"tag":152,"props":4403,"children":4404},{},[4405],{"type":23,"value":4406},"Fault Diagnosis \u002F Fault-Tolerant Control",{"type":23,"value":4408}," — detect degraded actuators or sensors and reconfigure the controller.",{"type":17,"tag":136,"props":4410,"children":4411},{},[],{"type":17,"tag":140,"props":4413,"children":4415},{"id":4414},"_1-optimal-control",[4416],{"type":23,"value":4417},"🎯 1. Optimal Control",{"type":17,"tag":18,"props":4419,"children":4420},{},[4421],{"type":23,"value":4422},"Optimal control is used when we want the vehicle to satisfy motion goals while minimizing a cost and respecting constraints.",{"type":17,"tag":18,"props":4424,"children":4425},{},[4426,4428,4433],{"type":23,"value":4427},"For an Omnicopter, the most immediate optimal-control problem is ",{"type":17,"tag":152,"props":4429,"children":4430},{},[4431],{"type":23,"value":4432},"control allocation",{"type":23,"value":2578},{"type":17,"tag":204,"props":4435,"children":4436},{},[4437],{"type":17,"tag":18,"props":4438,"children":4439},{},[4440],{"type":23,"value":4441},"Given a desired 6D wrench, choose motor thrusts that generate it safely and efficiently.",{"type":17,"tag":513,"props":4443,"children":4445},{"id":4444},"baseline-allocation",[4446],{"type":23,"value":4447},"🧩 Baseline allocation",{"type":17,"tag":18,"props":4449,"children":4450},{},[4451],{"type":23,"value":4452},"A simple baseline is the pseudo-inverse allocator:",{"type":17,"tag":613,"props":4454,"children":4456},{"className":4455},[665],[4457],{"type":17,"tag":613,"props":4458,"children":4460},{"className":4459},[670],[4461,4525],{"type":17,"tag":613,"props":4462,"children":4464},{"className":4463},[675],[4465],{"type":17,"tag":678,"props":4466,"children":4467},{"xmlns":680,"display":681},[4468],{"type":17,"tag":684,"props":4469,"children":4470},{},[4471,4520],{"type":17,"tag":688,"props":4472,"children":4473},{},[4474,4478,4482,4495],{"type":17,"tag":692,"props":4475,"children":4476},{"mathvariant":694},[4477],{"type":23,"value":3666},{"type":17,"tag":699,"props":4479,"children":4480},{},[4481],{"type":23,"value":703},{"type":17,"tag":4483,"props":4484,"children":4485},"msup",{},[4486,4490],{"type":17,"tag":692,"props":4487,"children":4488},{},[4489],{"type":23,"value":766},{"type":17,"tag":699,"props":4491,"children":4492},{},[4493],{"type":23,"value":4494},"†",{"type":17,"tag":768,"props":4496,"children":4497},{},[4498,4502],{"type":17,"tag":692,"props":4499,"children":4500},{"mathvariant":694},[4501],{"type":23,"value":697},{"type":17,"tag":688,"props":4503,"children":4504},{},[4505,4510,4515],{"type":17,"tag":692,"props":4506,"children":4507},{},[4508],{"type":23,"value":4509},"d",{"type":17,"tag":692,"props":4511,"children":4512},{},[4513],{"type":23,"value":4514},"e",{"type":17,"tag":692,"props":4516,"children":4517},{},[4518],{"type":23,"value":4519},"s",{"type":17,"tag":798,"props":4521,"children":4522},{"encoding":800},[4523],{"type":23,"value":4524},"\\mathbf{u} = M^\\dagger \\mathbf{y}_{des}",{"type":17,"tag":613,"props":4526,"children":4528},{"className":4527,"ariaHidden":709},[807],[4529,4555],{"type":17,"tag":613,"props":4530,"children":4532},{"className":4531},[812],[4533,4537,4542,4546,4551],{"type":17,"tag":613,"props":4534,"children":4536},{"className":4535,"style":1188},[817],[],{"type":17,"tag":613,"props":4538,"children":4540},{"className":4539},[823,824],[4541],{"type":23,"value":3666},{"type":17,"tag":613,"props":4543,"children":4545},{"className":4544,"style":832},[831],[],{"type":17,"tag":613,"props":4547,"children":4549},{"className":4548},[837],[4550],{"type":23,"value":703},{"type":17,"tag":613,"props":4552,"children":4554},{"className":4553,"style":832},[831],[],{"type":17,"tag":613,"props":4556,"children":4558},{"className":4557},[812],[4559,4564,4607],{"type":17,"tag":613,"props":4560,"children":4563},{"className":4561,"style":4562},[817],"height:1.0935em;vertical-align:-0.1944em;",[],{"type":17,"tag":613,"props":4565,"children":4567},{"className":4566},[823],[4568,4573],{"type":17,"tag":613,"props":4569,"children":4571},{"className":4570,"style":1003},[823,1002],[4572],{"type":23,"value":766},{"type":17,"tag":613,"props":4574,"children":4576},{"className":4575},[1018],[4577],{"type":17,"tag":613,"props":4578,"children":4580},{"className":4579},[888],[4581],{"type":17,"tag":613,"props":4582,"children":4584},{"className":4583},[894],[4585],{"type":17,"tag":613,"props":4586,"children":4589},{"className":4587,"style":4588},[899],"height:0.8991em;",[4590],{"type":17,"tag":613,"props":4591,"children":4593},{"style":4592},"top:-3.113em;margin-right:0.05em;",[4594,4598],{"type":17,"tag":613,"props":4595,"children":4597},{"className":4596,"style":1040},[909],[],{"type":17,"tag":613,"props":4599,"children":4601},{"className":4600},[1045,1046,869,1047],[4602],{"type":17,"tag":613,"props":4603,"children":4605},{"className":4604},[2069,1047],[4606],{"type":23,"value":4494},{"type":17,"tag":613,"props":4608,"children":4610},{"className":4609},[823],[4611,4616],{"type":17,"tag":613,"props":4612,"children":4614},{"className":4613,"style":825},[823,824],[4615],{"type":23,"value":697},{"type":17,"tag":613,"props":4617,"children":4619},{"className":4618},[1018],[4620],{"type":17,"tag":613,"props":4621,"children":4623},{"className":4622},[888,889],[4624,4665],{"type":17,"tag":613,"props":4625,"children":4627},{"className":4626},[894],[4628,4660],{"type":17,"tag":613,"props":4629,"children":4632},{"className":4630,"style":4631},[899],"height:0.3361em;",[4633],{"type":17,"tag":613,"props":4634,"children":4636},{"style":4635},"top:-2.55em;margin-left:-0.016em;margin-right:0.05em;",[4637,4641],{"type":17,"tag":613,"props":4638,"children":4640},{"className":4639,"style":1040},[909],[],{"type":17,"tag":613,"props":4642,"children":4644},{"className":4643},[1045,1046,869,1047],[4645],{"type":17,"tag":613,"props":4646,"children":4648},{"className":4647},[823,1047],[4649,4654],{"type":17,"tag":613,"props":4650,"children":4652},{"className":4651},[823,1002,1047],[4653],{"type":23,"value":4509},{"type":17,"tag":613,"props":4655,"children":4657},{"className":4656},[823,1002,1047],[4658],{"type":23,"value":4659},"es",{"type":17,"tag":613,"props":4661,"children":4663},{"className":4662},[951],[4664],{"type":23,"value":954},{"type":17,"tag":613,"props":4666,"children":4668},{"className":4667},[894],[4669],{"type":17,"tag":613,"props":4670,"children":4672},{"className":4671,"style":1763},[899],[4673],{"type":17,"tag":613,"props":4674,"children":4675},{},[],{"type":17,"tag":18,"props":4677,"children":4678},{},[4679],{"type":23,"value":4680},"This is easy to implement, but it may fail when:",{"type":17,"tag":172,"props":4682,"children":4683},{},[4684,4689,4694,4699,4704],{"type":17,"tag":176,"props":4685,"children":4686},{},[4687],{"type":23,"value":4688},"one or more motors saturate;",{"type":17,"tag":176,"props":4690,"children":4691},{},[4692],{"type":23,"value":4693},"thrust commands require impossible reversal timing;",{"type":17,"tag":176,"props":4695,"children":4696},{},[4697],{"type":23,"value":4698},"the desired wrench is outside the attainable wrench set;",{"type":17,"tag":176,"props":4700,"children":4701},{},[4702],{"type":23,"value":4703},"a motor is degraded or failed;",{"type":17,"tag":176,"props":4705,"children":4706},{},[4707],{"type":23,"value":4708},"we want to minimize energy, noise, heat, or current.",{"type":17,"tag":513,"props":4710,"children":4712},{"id":4711},"️-better-allocation-constrained-qp",[4713],{"type":23,"value":4714},"⚖️ Better allocation: constrained QP",{"type":17,"tag":18,"props":4716,"children":4717},{},[4718],{"type":23,"value":4719},"A more practical allocator can be written as a quadratic program:",{"type":17,"tag":613,"props":4721,"children":4723},{"className":4722},[665],[4724],{"type":17,"tag":613,"props":4725,"children":4727},{"className":4726},[670],[4728,5227],{"type":17,"tag":613,"props":4729,"children":4731},{"className":4730},[675],[4732],{"type":17,"tag":678,"props":4733,"children":4734},{"xmlns":680,"display":681},[4735],{"type":17,"tag":684,"props":4736,"children":4737},{},[4738,5222],{"type":17,"tag":714,"props":4739,"children":4743},{"rowspacing":4740,"columnalign":4741,"columnspacing":4742},"0.25em","right left","0em",[4744,5012,5103],{"type":17,"tag":720,"props":4745,"children":4746},{},[4747,4779],{"type":17,"tag":724,"props":4748,"children":4749},{},[4750],{"type":17,"tag":728,"props":4751,"children":4752},{"scriptlevel":730,"displaystyle":709},[4753],{"type":17,"tag":688,"props":4754,"children":4755},{},[4756,4776],{"type":17,"tag":1475,"props":4757,"children":4758},{},[4759,4772],{"type":17,"tag":688,"props":4760,"children":4761},{},[4762,4767],{"type":17,"tag":692,"props":4763,"children":4764},{},[4765],{"type":23,"value":4766},"min",{"type":17,"tag":699,"props":4768,"children":4769},{},[4770],{"type":23,"value":4771},"⁡",{"type":17,"tag":692,"props":4773,"children":4774},{"mathvariant":694},[4775],{"type":23,"value":3666},{"type":17,"tag":831,"props":4777,"children":4778},{"width":717},[],{"type":17,"tag":724,"props":4780,"children":4781},{},[4782],{"type":17,"tag":728,"props":4783,"children":4784},{"scriptlevel":730,"displaystyle":709},[4785],{"type":17,"tag":688,"props":4786,"children":4787},{},[4788,4791,4797,4801,4805,4810,4832,4851,4856,4861,4865,4869,4873,4900,4911,4915,4920,4943,4947,4951,4955,4959,4964,5000,5004,5008],{"type":17,"tag":688,"props":4789,"children":4790},{},[],{"type":17,"tag":692,"props":4792,"children":4794},{"mathvariant":4793},"normal",[4795],{"type":23,"value":4796},"∥",{"type":17,"tag":692,"props":4798,"children":4799},{},[4800],{"type":23,"value":766},{"type":17,"tag":692,"props":4802,"children":4803},{"mathvariant":694},[4804],{"type":23,"value":3666},{"type":17,"tag":699,"props":4806,"children":4807},{},[4808],{"type":23,"value":4809},"−",{"type":17,"tag":768,"props":4811,"children":4812},{},[4813,4817],{"type":17,"tag":692,"props":4814,"children":4815},{"mathvariant":694},[4816],{"type":23,"value":697},{"type":17,"tag":688,"props":4818,"children":4819},{},[4820,4824,4828],{"type":17,"tag":692,"props":4821,"children":4822},{},[4823],{"type":23,"value":4509},{"type":17,"tag":692,"props":4825,"children":4826},{},[4827],{"type":23,"value":4514},{"type":17,"tag":692,"props":4829,"children":4830},{},[4831],{"type":23,"value":4519},{"type":17,"tag":4833,"props":4834,"children":4835},"msubsup",{},[4836,4840,4845],{"type":17,"tag":692,"props":4837,"children":4838},{"mathvariant":4793},[4839],{"type":23,"value":4796},{"type":17,"tag":692,"props":4841,"children":4842},{},[4843],{"type":23,"value":4844},"Q",{"type":17,"tag":4846,"props":4847,"children":4848},"mn",{},[4849],{"type":23,"value":4850},"2",{"type":17,"tag":699,"props":4852,"children":4853},{},[4854],{"type":23,"value":4855},"+",{"type":17,"tag":692,"props":4857,"children":4858},{},[4859],{"type":23,"value":4860},"λ",{"type":17,"tag":692,"props":4862,"children":4863},{"mathvariant":4793},[4864],{"type":23,"value":4796},{"type":17,"tag":692,"props":4866,"children":4867},{"mathvariant":694},[4868],{"type":23,"value":3666},{"type":17,"tag":699,"props":4870,"children":4871},{},[4872],{"type":23,"value":4809},{"type":17,"tag":768,"props":4874,"children":4875},{},[4876,4880],{"type":17,"tag":692,"props":4877,"children":4878},{"mathvariant":694},[4879],{"type":23,"value":3666},{"type":17,"tag":688,"props":4881,"children":4882},{},[4883,4887,4891,4895],{"type":17,"tag":692,"props":4884,"children":4885},{},[4886],{"type":23,"value":18},{"type":17,"tag":692,"props":4888,"children":4889},{},[4890],{"type":23,"value":787},{"type":17,"tag":692,"props":4892,"children":4893},{},[4894],{"type":23,"value":4514},{"type":17,"tag":692,"props":4896,"children":4897},{},[4898],{"type":23,"value":4899},"v",{"type":17,"tag":4483,"props":4901,"children":4902},{},[4903,4907],{"type":17,"tag":692,"props":4904,"children":4905},{"mathvariant":4793},[4906],{"type":23,"value":4796},{"type":17,"tag":4846,"props":4908,"children":4909},{},[4910],{"type":23,"value":4850},{"type":17,"tag":699,"props":4912,"children":4913},{},[4914],{"type":23,"value":4855},{"type":17,"tag":692,"props":4916,"children":4917},{},[4918],{"type":23,"value":4919},"ρ",{"type":17,"tag":768,"props":4921,"children":4922},{},[4923,4928],{"type":17,"tag":692,"props":4924,"children":4925},{},[4926],{"type":23,"value":4927},"J",{"type":17,"tag":688,"props":4929,"children":4930},{},[4931,4935,4939],{"type":17,"tag":692,"props":4932,"children":4933},{},[4934],{"type":23,"value":787},{"type":17,"tag":692,"props":4936,"children":4937},{},[4938],{"type":23,"value":4514},{"type":17,"tag":692,"props":4940,"children":4941},{},[4942],{"type":23,"value":4899},{"type":17,"tag":699,"props":4944,"children":4945},{"stretchy":731},[4946],{"type":23,"value":1553},{"type":17,"tag":692,"props":4948,"children":4949},{"mathvariant":694},[4950],{"type":23,"value":3666},{"type":17,"tag":699,"props":4952,"children":4953},{"stretchy":731},[4954],{"type":23,"value":1585},{"type":17,"tag":699,"props":4956,"children":4957},{},[4958],{"type":23,"value":4855},{"type":17,"tag":692,"props":4960,"children":4961},{},[4962],{"type":23,"value":4963},"η",{"type":17,"tag":768,"props":4965,"children":4966},{},[4967,4971],{"type":17,"tag":692,"props":4968,"children":4969},{},[4970],{"type":23,"value":4927},{"type":17,"tag":688,"props":4972,"children":4973},{},[4974,4978,4983,4987,4991,4996],{"type":17,"tag":692,"props":4975,"children":4976},{},[4977],{"type":23,"value":4514},{"type":17,"tag":692,"props":4979,"children":4980},{},[4981],{"type":23,"value":4982},"n",{"type":17,"tag":692,"props":4984,"children":4985},{},[4986],{"type":23,"value":4514},{"type":17,"tag":692,"props":4988,"children":4989},{},[4990],{"type":23,"value":787},{"type":17,"tag":692,"props":4992,"children":4993},{},[4994],{"type":23,"value":4995},"g",{"type":17,"tag":692,"props":4997,"children":4998},{},[4999],{"type":23,"value":697},{"type":17,"tag":699,"props":5001,"children":5002},{"stretchy":731},[5003],{"type":23,"value":1553},{"type":17,"tag":692,"props":5005,"children":5006},{"mathvariant":694},[5007],{"type":23,"value":3666},{"type":17,"tag":699,"props":5009,"children":5010},{"stretchy":731},[5011],{"type":23,"value":1585},{"type":17,"tag":720,"props":5013,"children":5014},{},[5015,5033],{"type":17,"tag":724,"props":5016,"children":5017},{},[5018],{"type":17,"tag":728,"props":5019,"children":5020},{"scriptlevel":730,"displaystyle":709},[5021],{"type":17,"tag":688,"props":5022,"children":5023},{},[5024,5030],{"type":17,"tag":5025,"props":5026,"children":5027},"mtext",{},[5028],{"type":23,"value":5029},"s.t.",{"type":17,"tag":831,"props":5031,"children":5032},{"width":717},[],{"type":17,"tag":724,"props":5034,"children":5035},{},[5036],{"type":17,"tag":728,"props":5037,"children":5038},{"scriptlevel":730,"displaystyle":709},[5039],{"type":17,"tag":688,"props":5040,"children":5041},{},[5042,5045,5068,5073,5077,5081],{"type":17,"tag":688,"props":5043,"children":5044},{},[],{"type":17,"tag":768,"props":5046,"children":5047},{},[5048,5052],{"type":17,"tag":692,"props":5049,"children":5050},{"mathvariant":694},[5051],{"type":23,"value":3666},{"type":17,"tag":688,"props":5053,"children":5054},{},[5055,5060,5064],{"type":17,"tag":692,"props":5056,"children":5057},{},[5058],{"type":23,"value":5059},"m",{"type":17,"tag":692,"props":5061,"children":5062},{},[5063],{"type":23,"value":1420},{"type":17,"tag":692,"props":5065,"children":5066},{},[5067],{"type":23,"value":4982},{"type":17,"tag":699,"props":5069,"children":5070},{},[5071],{"type":23,"value":5072},"≤",{"type":17,"tag":692,"props":5074,"children":5075},{"mathvariant":694},[5076],{"type":23,"value":3666},{"type":17,"tag":699,"props":5078,"children":5079},{},[5080],{"type":23,"value":5072},{"type":17,"tag":768,"props":5082,"children":5083},{},[5084,5088],{"type":17,"tag":692,"props":5085,"children":5086},{"mathvariant":694},[5087],{"type":23,"value":3666},{"type":17,"tag":688,"props":5089,"children":5090},{},[5091,5095,5099],{"type":17,"tag":692,"props":5092,"children":5093},{},[5094],{"type":23,"value":5059},{"type":17,"tag":692,"props":5096,"children":5097},{},[5098],{"type":23,"value":86},{"type":17,"tag":692,"props":5100,"children":5101},{},[5102],{"type":23,"value":1505},{"type":17,"tag":720,"props":5104,"children":5105},{},[5106,5115],{"type":17,"tag":724,"props":5107,"children":5108},{},[5109],{"type":17,"tag":728,"props":5110,"children":5111},{"scriptlevel":730,"displaystyle":709},[5112],{"type":17,"tag":688,"props":5113,"children":5114},{},[],{"type":17,"tag":724,"props":5116,"children":5117},{},[5118],{"type":17,"tag":728,"props":5119,"children":5120},{"scriptlevel":730,"displaystyle":709},[5121],{"type":17,"tag":688,"props":5122,"children":5123},{},[5124,5127,5132,5154,5158,5162,5166,5192,5196,5200],{"type":17,"tag":688,"props":5125,"children":5126},{},[],{"type":17,"tag":692,"props":5128,"children":5129},{"mathvariant":4793},[5130],{"type":23,"value":5131},"Δ",{"type":17,"tag":768,"props":5133,"children":5134},{},[5135,5139],{"type":17,"tag":692,"props":5136,"children":5137},{"mathvariant":694},[5138],{"type":23,"value":3666},{"type":17,"tag":688,"props":5140,"children":5141},{},[5142,5146,5150],{"type":17,"tag":692,"props":5143,"children":5144},{},[5145],{"type":23,"value":5059},{"type":17,"tag":692,"props":5147,"children":5148},{},[5149],{"type":23,"value":1420},{"type":17,"tag":692,"props":5151,"children":5152},{},[5153],{"type":23,"value":4982},{"type":17,"tag":699,"props":5155,"children":5156},{},[5157],{"type":23,"value":5072},{"type":17,"tag":692,"props":5159,"children":5160},{"mathvariant":694},[5161],{"type":23,"value":3666},{"type":17,"tag":699,"props":5163,"children":5164},{},[5165],{"type":23,"value":4809},{"type":17,"tag":768,"props":5167,"children":5168},{},[5169,5173],{"type":17,"tag":692,"props":5170,"children":5171},{"mathvariant":694},[5172],{"type":23,"value":3666},{"type":17,"tag":688,"props":5174,"children":5175},{},[5176,5180,5184,5188],{"type":17,"tag":692,"props":5177,"children":5178},{},[5179],{"type":23,"value":18},{"type":17,"tag":692,"props":5181,"children":5182},{},[5183],{"type":23,"value":787},{"type":17,"tag":692,"props":5185,"children":5186},{},[5187],{"type":23,"value":4514},{"type":17,"tag":692,"props":5189,"children":5190},{},[5191],{"type":23,"value":4899},{"type":17,"tag":699,"props":5193,"children":5194},{},[5195],{"type":23,"value":5072},{"type":17,"tag":692,"props":5197,"children":5198},{"mathvariant":4793},[5199],{"type":23,"value":5131},{"type":17,"tag":768,"props":5201,"children":5202},{},[5203,5207],{"type":17,"tag":692,"props":5204,"children":5205},{"mathvariant":694},[5206],{"type":23,"value":3666},{"type":17,"tag":688,"props":5208,"children":5209},{},[5210,5214,5218],{"type":17,"tag":692,"props":5211,"children":5212},{},[5213],{"type":23,"value":5059},{"type":17,"tag":692,"props":5215,"children":5216},{},[5217],{"type":23,"value":86},{"type":17,"tag":692,"props":5219,"children":5220},{},[5221],{"type":23,"value":1505},{"type":17,"tag":798,"props":5223,"children":5224},{"encoding":800},[5225],{"type":23,"value":5226},"\\begin{aligned}\n\\min_{\\mathbf{u}} \\quad &\n\\|M\\mathbf{u} - \\mathbf{y}_{des}\\|_Q^2\n+ \\lambda \\|\\mathbf{u} - \\mathbf{u}_{prev}\\|^2\n+ \\rho J_{rev}(\\mathbf{u})\n+ \\eta J_{energy}(\\mathbf{u}) \\\\\n\\text{s.t.} \\quad &\n\\mathbf{u}_{min} \\leq \\mathbf{u} \\leq \\mathbf{u}_{max} \\\\\n& \\Delta \\mathbf{u}_{min} \\leq \\mathbf{u} - \\mathbf{u}_{prev} \\leq \\Delta \\mathbf{u}_{max}\n\\end{aligned}",{"type":17,"tag":613,"props":5228,"children":5230},{"className":5229,"ariaHidden":709},[807],[5231],{"type":17,"tag":613,"props":5232,"children":5234},{"className":5233},[812],[5235,5240],{"type":17,"tag":613,"props":5236,"children":5239},{"className":5237,"style":5238},[817],"height:4.5641em;vertical-align:-2.0321em;",[],{"type":17,"tag":613,"props":5241,"children":5243},{"className":5242},[823],[5244],{"type":17,"tag":613,"props":5245,"children":5247},{"className":5246},[714],[5248,5408],{"type":17,"tag":613,"props":5249,"children":5252},{"className":5250},[5251],"col-align-r",[5253],{"type":17,"tag":613,"props":5254,"children":5256},{"className":5255},[888,889],[5257,5396],{"type":17,"tag":613,"props":5258,"children":5260},{"className":5259},[894],[5261,5391],{"type":17,"tag":613,"props":5262,"children":5265},{"className":5263,"style":5264},[899],"height:2.5321em;",[5266,5354,5379],{"type":17,"tag":613,"props":5267,"children":5269},{"style":5268},"top:-4.6679em;",[5270,5274],{"type":17,"tag":613,"props":5271,"children":5273},{"className":5272,"style":910},[909],[],{"type":17,"tag":613,"props":5275,"children":5277},{"className":5276},[823],[5278,5349],{"type":17,"tag":613,"props":5279,"children":5281},{"className":5280},[1633,1634],[5282],{"type":17,"tag":613,"props":5283,"children":5285},{"className":5284},[888,889],[5286,5337],{"type":17,"tag":613,"props":5287,"children":5289},{"className":5288},[894],[5290,5332],{"type":17,"tag":613,"props":5291,"children":5294},{"className":5292,"style":5293},[899],"height:0.6679em;",[5295,5316],{"type":17,"tag":613,"props":5296,"children":5298},{"style":5297},"top:-2.4em;margin-left:0em;",[5299,5303],{"type":17,"tag":613,"props":5300,"children":5302},{"className":5301,"style":910},[909],[],{"type":17,"tag":613,"props":5304,"children":5306},{"className":5305},[1045,1046,869,1047],[5307],{"type":17,"tag":613,"props":5308,"children":5310},{"className":5309},[823,1047],[5311],{"type":17,"tag":613,"props":5312,"children":5314},{"className":5313},[823,824,1047],[5315],{"type":23,"value":3666},{"type":17,"tag":613,"props":5317,"children":5319},{"style":5318},"top:-3em;",[5320,5324],{"type":17,"tag":613,"props":5321,"children":5323},{"className":5322,"style":910},[909],[],{"type":17,"tag":613,"props":5325,"children":5326},{},[5327],{"type":17,"tag":613,"props":5328,"children":5330},{"className":5329},[1633],[5331],{"type":23,"value":4766},{"type":17,"tag":613,"props":5333,"children":5335},{"className":5334},[951],[5336],{"type":23,"value":954},{"type":17,"tag":613,"props":5338,"children":5340},{"className":5339},[894],[5341],{"type":17,"tag":613,"props":5342,"children":5345},{"className":5343,"style":5344},[899],"height:0.7em;",[5346],{"type":17,"tag":613,"props":5347,"children":5348},{},[],{"type":17,"tag":613,"props":5350,"children":5353},{"className":5351,"style":5352},[831],"margin-right:1em;",[],{"type":17,"tag":613,"props":5355,"children":5357},{"style":5356},"top:-2.8279em;",[5358,5362],{"type":17,"tag":613,"props":5359,"children":5361},{"className":5360,"style":910},[909],[],{"type":17,"tag":613,"props":5363,"children":5365},{"className":5364},[823],[5366,5375],{"type":17,"tag":613,"props":5367,"children":5369},{"className":5368},[823,23],[5370],{"type":17,"tag":613,"props":5371,"children":5373},{"className":5372},[823],[5374],{"type":23,"value":5029},{"type":17,"tag":613,"props":5376,"children":5378},{"className":5377,"style":5352},[831],[],{"type":17,"tag":613,"props":5380,"children":5382},{"style":5381},"top:-1.3279em;",[5383,5387],{"type":17,"tag":613,"props":5384,"children":5386},{"className":5385,"style":910},[909],[],{"type":17,"tag":613,"props":5388,"children":5390},{"className":5389},[823],[],{"type":17,"tag":613,"props":5392,"children":5394},{"className":5393},[951],[5395],{"type":23,"value":954},{"type":17,"tag":613,"props":5397,"children":5399},{"className":5398},[894],[5400],{"type":17,"tag":613,"props":5401,"children":5404},{"className":5402,"style":5403},[899],"height:2.0321em;",[5405],{"type":17,"tag":613,"props":5406,"children":5407},{},[],{"type":17,"tag":613,"props":5409,"children":5412},{"className":5410},[5411],"col-align-l",[5413],{"type":17,"tag":613,"props":5414,"children":5416},{"className":5415},[888,889],[5417,6441],{"type":17,"tag":613,"props":5418,"children":5420},{"className":5419},[894],[5421,6436],{"type":17,"tag":613,"props":5422,"children":5424},{"className":5423,"style":5264},[899],[5425,5990,6164],{"type":17,"tag":613,"props":5426,"children":5427},{"style":5268},[5428,5432],{"type":17,"tag":613,"props":5429,"children":5431},{"className":5430,"style":910},[909],[],{"type":17,"tag":613,"props":5433,"children":5435},{"className":5434},[823],[5436,5440,5445,5450,5455,5459,5464,5468,5534,5610,5614,5619,5623,5628,5633,5638,5642,5647,5651,5728,5769,5773,5778,5782,5787,5860,5865,5870,5875,5879,5884,5888,5893,5975,5980,5985],{"type":17,"tag":613,"props":5437,"children":5439},{"className":5438},[823],[],{"type":17,"tag":613,"props":5441,"children":5443},{"className":5442},[823],[5444],{"type":23,"value":4796},{"type":17,"tag":613,"props":5446,"children":5448},{"className":5447,"style":1003},[823,1002],[5449],{"type":23,"value":766},{"type":17,"tag":613,"props":5451,"children":5453},{"className":5452},[823,824],[5454],{"type":23,"value":3666},{"type":17,"tag":613,"props":5456,"children":5458},{"className":5457,"style":2064},[831],[],{"type":17,"tag":613,"props":5460,"children":5462},{"className":5461},[2069],[5463],{"type":23,"value":4809},{"type":17,"tag":613,"props":5465,"children":5467},{"className":5466,"style":2064},[831],[],{"type":17,"tag":613,"props":5469,"children":5471},{"className":5470},[823],[5472,5477],{"type":17,"tag":613,"props":5473,"children":5475},{"className":5474,"style":825},[823,824],[5476],{"type":23,"value":697},{"type":17,"tag":613,"props":5478,"children":5480},{"className":5479},[1018],[5481],{"type":17,"tag":613,"props":5482,"children":5484},{"className":5483},[888,889],[5485,5523],{"type":17,"tag":613,"props":5486,"children":5488},{"className":5487},[894],[5489,5518],{"type":17,"tag":613,"props":5490,"children":5492},{"className":5491,"style":4631},[899],[5493],{"type":17,"tag":613,"props":5494,"children":5495},{"style":4635},[5496,5500],{"type":17,"tag":613,"props":5497,"children":5499},{"className":5498,"style":1040},[909],[],{"type":17,"tag":613,"props":5501,"children":5503},{"className":5502},[1045,1046,869,1047],[5504],{"type":17,"tag":613,"props":5505,"children":5507},{"className":5506},[823,1047],[5508,5513],{"type":17,"tag":613,"props":5509,"children":5511},{"className":5510},[823,1002,1047],[5512],{"type":23,"value":4509},{"type":17,"tag":613,"props":5514,"children":5516},{"className":5515},[823,1002,1047],[5517],{"type":23,"value":4659},{"type":17,"tag":613,"props":5519,"children":5521},{"className":5520},[951],[5522],{"type":23,"value":954},{"type":17,"tag":613,"props":5524,"children":5526},{"className":5525},[894],[5527],{"type":17,"tag":613,"props":5528,"children":5530},{"className":5529,"style":1763},[899],[5531],{"type":17,"tag":613,"props":5532,"children":5533},{},[],{"type":17,"tag":613,"props":5535,"children":5537},{"className":5536},[823],[5538,5543],{"type":17,"tag":613,"props":5539,"children":5541},{"className":5540},[823],[5542],{"type":23,"value":4796},{"type":17,"tag":613,"props":5544,"children":5546},{"className":5545},[1018],[5547],{"type":17,"tag":613,"props":5548,"children":5550},{"className":5549},[888,889],[5551,5598],{"type":17,"tag":613,"props":5552,"children":5554},{"className":5553},[894],[5555,5593],{"type":17,"tag":613,"props":5556,"children":5559},{"className":5557,"style":5558},[899],"height:0.8641em;",[5560,5577],{"type":17,"tag":613,"props":5561,"children":5563},{"style":5562},"top:-2.453em;margin-left:0em;margin-right:0.05em;",[5564,5568],{"type":17,"tag":613,"props":5565,"children":5567},{"className":5566,"style":1040},[909],[],{"type":17,"tag":613,"props":5569,"children":5571},{"className":5570},[1045,1046,869,1047],[5572],{"type":17,"tag":613,"props":5573,"children":5575},{"className":5574},[823,1002,1047],[5576],{"type":23,"value":4844},{"type":17,"tag":613,"props":5578,"children":5579},{"style":4592},[5580,5584],{"type":17,"tag":613,"props":5581,"children":5583},{"className":5582,"style":1040},[909],[],{"type":17,"tag":613,"props":5585,"children":5587},{"className":5586},[1045,1046,869,1047],[5588],{"type":17,"tag":613,"props":5589,"children":5591},{"className":5590},[823,1047],[5592],{"type":23,"value":4850},{"type":17,"tag":613,"props":5594,"children":5596},{"className":5595},[951],[5597],{"type":23,"value":954},{"type":17,"tag":613,"props":5599,"children":5601},{"className":5600},[894],[5602],{"type":17,"tag":613,"props":5603,"children":5606},{"className":5604,"style":5605},[899],"height:0.3831em;",[5607],{"type":17,"tag":613,"props":5608,"children":5609},{},[],{"type":17,"tag":613,"props":5611,"children":5613},{"className":5612,"style":2064},[831],[],{"type":17,"tag":613,"props":5615,"children":5617},{"className":5616},[2069],[5618],{"type":23,"value":4855},{"type":17,"tag":613,"props":5620,"children":5622},{"className":5621,"style":2064},[831],[],{"type":17,"tag":613,"props":5624,"children":5626},{"className":5625},[823,1002],[5627],{"type":23,"value":4860},{"type":17,"tag":613,"props":5629,"children":5631},{"className":5630},[823],[5632],{"type":23,"value":4796},{"type":17,"tag":613,"props":5634,"children":5636},{"className":5635},[823,824],[5637],{"type":23,"value":3666},{"type":17,"tag":613,"props":5639,"children":5641},{"className":5640,"style":2064},[831],[],{"type":17,"tag":613,"props":5643,"children":5645},{"className":5644},[2069],[5646],{"type":23,"value":4809},{"type":17,"tag":613,"props":5648,"children":5650},{"className":5649,"style":2064},[831],[],{"type":17,"tag":613,"props":5652,"children":5654},{"className":5653},[823],[5655,5660],{"type":17,"tag":613,"props":5656,"children":5658},{"className":5657},[823,824],[5659],{"type":23,"value":3666},{"type":17,"tag":613,"props":5661,"children":5663},{"className":5662},[1018],[5664],{"type":17,"tag":613,"props":5665,"children":5667},{"className":5666},[888,889],[5668,5717],{"type":17,"tag":613,"props":5669,"children":5671},{"className":5670},[894],[5672,5712],{"type":17,"tag":613,"props":5673,"children":5675},{"className":5674,"style":1031},[899],[5676],{"type":17,"tag":613,"props":5677,"children":5678},{"style":1795},[5679,5683],{"type":17,"tag":613,"props":5680,"children":5682},{"className":5681,"style":1040},[909],[],{"type":17,"tag":613,"props":5684,"children":5686},{"className":5685},[1045,1046,869,1047],[5687],{"type":17,"tag":613,"props":5688,"children":5690},{"className":5689},[823,1047],[5691,5696,5701,5706],{"type":17,"tag":613,"props":5692,"children":5694},{"className":5693},[823,1002,1047],[5695],{"type":23,"value":18},{"type":17,"tag":613,"props":5697,"children":5699},{"className":5698,"style":1061},[823,1002,1047],[5700],{"type":23,"value":787},{"type":17,"tag":613,"props":5702,"children":5704},{"className":5703},[823,1002,1047],[5705],{"type":23,"value":4514},{"type":17,"tag":613,"props":5707,"children":5710},{"className":5708,"style":5709},[823,1002,1047],"margin-right:0.0359em;",[5711],{"type":23,"value":4899},{"type":17,"tag":613,"props":5713,"children":5715},{"className":5714},[951],[5716],{"type":23,"value":954},{"type":17,"tag":613,"props":5718,"children":5720},{"className":5719},[894],[5721],{"type":17,"tag":613,"props":5722,"children":5724},{"className":5723,"style":1086},[899],[5725],{"type":17,"tag":613,"props":5726,"children":5727},{},[],{"type":17,"tag":613,"props":5729,"children":5731},{"className":5730},[823],[5732,5737],{"type":17,"tag":613,"props":5733,"children":5735},{"className":5734},[823],[5736],{"type":23,"value":4796},{"type":17,"tag":613,"props":5738,"children":5740},{"className":5739},[1018],[5741],{"type":17,"tag":613,"props":5742,"children":5744},{"className":5743},[888],[5745],{"type":17,"tag":613,"props":5746,"children":5748},{"className":5747},[894],[5749],{"type":17,"tag":613,"props":5750,"children":5752},{"className":5751,"style":5558},[899],[5753],{"type":17,"tag":613,"props":5754,"children":5755},{"style":4592},[5756,5760],{"type":17,"tag":613,"props":5757,"children":5759},{"className":5758,"style":1040},[909],[],{"type":17,"tag":613,"props":5761,"children":5763},{"className":5762},[1045,1046,869,1047],[5764],{"type":17,"tag":613,"props":5765,"children":5767},{"className":5766},[823,1047],[5768],{"type":23,"value":4850},{"type":17,"tag":613,"props":5770,"children":5772},{"className":5771,"style":2064},[831],[],{"type":17,"tag":613,"props":5774,"children":5776},{"className":5775},[2069],[5777],{"type":23,"value":4855},{"type":17,"tag":613,"props":5779,"children":5781},{"className":5780,"style":2064},[831],[],{"type":17,"tag":613,"props":5783,"children":5785},{"className":5784},[823,1002],[5786],{"type":23,"value":4919},{"type":17,"tag":613,"props":5788,"children":5790},{"className":5789},[823],[5791,5797],{"type":17,"tag":613,"props":5792,"children":5795},{"className":5793,"style":5794},[823,1002],"margin-right:0.0962em;",[5796],{"type":23,"value":4927},{"type":17,"tag":613,"props":5798,"children":5800},{"className":5799},[1018],[5801],{"type":17,"tag":613,"props":5802,"children":5804},{"className":5803},[888,889],[5805,5849],{"type":17,"tag":613,"props":5806,"children":5808},{"className":5807},[894],[5809,5844],{"type":17,"tag":613,"props":5810,"children":5812},{"className":5811,"style":1031},[899],[5813],{"type":17,"tag":613,"props":5814,"children":5816},{"style":5815},"top:-2.55em;margin-left:-0.0962em;margin-right:0.05em;",[5817,5821],{"type":17,"tag":613,"props":5818,"children":5820},{"className":5819,"style":1040},[909],[],{"type":17,"tag":613,"props":5822,"children":5824},{"className":5823},[1045,1046,869,1047],[5825],{"type":17,"tag":613,"props":5826,"children":5828},{"className":5827},[823,1047],[5829,5834,5839],{"type":17,"tag":613,"props":5830,"children":5832},{"className":5831,"style":1061},[823,1002,1047],[5833],{"type":23,"value":787},{"type":17,"tag":613,"props":5835,"children":5837},{"className":5836},[823,1002,1047],[5838],{"type":23,"value":4514},{"type":17,"tag":613,"props":5840,"children":5842},{"className":5841,"style":5709},[823,1002,1047],[5843],{"type":23,"value":4899},{"type":17,"tag":613,"props":5845,"children":5847},{"className":5846},[951],[5848],{"type":23,"value":954},{"type":17,"tag":613,"props":5850,"children":5852},{"className":5851},[894],[5853],{"type":17,"tag":613,"props":5854,"children":5856},{"className":5855,"style":1763},[899],[5857],{"type":17,"tag":613,"props":5858,"children":5859},{},[],{"type":17,"tag":613,"props":5861,"children":5863},{"className":5862},[861],[5864],{"type":23,"value":1553},{"type":17,"tag":613,"props":5866,"children":5868},{"className":5867},[823,824],[5869],{"type":23,"value":3666},{"type":17,"tag":613,"props":5871,"children":5873},{"className":5872},[970],[5874],{"type":23,"value":1585},{"type":17,"tag":613,"props":5876,"children":5878},{"className":5877,"style":2064},[831],[],{"type":17,"tag":613,"props":5880,"children":5882},{"className":5881},[2069],[5883],{"type":23,"value":4855},{"type":17,"tag":613,"props":5885,"children":5887},{"className":5886,"style":2064},[831],[],{"type":17,"tag":613,"props":5889,"children":5891},{"className":5890,"style":5709},[823,1002],[5892],{"type":23,"value":4963},{"type":17,"tag":613,"props":5894,"children":5896},{"className":5895},[823],[5897,5902],{"type":17,"tag":613,"props":5898,"children":5900},{"className":5899,"style":5794},[823,1002],[5901],{"type":23,"value":4927},{"type":17,"tag":613,"props":5903,"children":5905},{"className":5904},[1018],[5906],{"type":17,"tag":613,"props":5907,"children":5909},{"className":5908},[888,889],[5910,5964],{"type":17,"tag":613,"props":5911,"children":5913},{"className":5912},[894],[5914,5959],{"type":17,"tag":613,"props":5915,"children":5917},{"className":5916,"style":1031},[899],[5918],{"type":17,"tag":613,"props":5919,"children":5920},{"style":5815},[5921,5925],{"type":17,"tag":613,"props":5922,"children":5924},{"className":5923,"style":1040},[909],[],{"type":17,"tag":613,"props":5926,"children":5928},{"className":5927},[1045,1046,869,1047],[5929],{"type":17,"tag":613,"props":5930,"children":5932},{"className":5931},[823,1047],[5933,5938,5943,5949,5954],{"type":17,"tag":613,"props":5934,"children":5936},{"className":5935},[823,1002,1047],[5937],{"type":23,"value":4514},{"type":17,"tag":613,"props":5939,"children":5941},{"className":5940},[823,1002,1047],[5942],{"type":23,"value":4982},{"type":17,"tag":613,"props":5944,"children":5946},{"className":5945,"style":1061},[823,1002,1047],[5947],{"type":23,"value":5948},"er",{"type":17,"tag":613,"props":5950,"children":5952},{"className":5951,"style":5709},[823,1002,1047],[5953],{"type":23,"value":4995},{"type":17,"tag":613,"props":5955,"children":5957},{"className":5956,"style":5709},[823,1002,1047],[5958],{"type":23,"value":697},{"type":17,"tag":613,"props":5960,"children":5962},{"className":5961},[951],[5963],{"type":23,"value":954},{"type":17,"tag":613,"props":5965,"children":5967},{"className":5966},[894],[5968],{"type":17,"tag":613,"props":5969,"children":5971},{"className":5970,"style":1086},[899],[5972],{"type":17,"tag":613,"props":5973,"children":5974},{},[],{"type":17,"tag":613,"props":5976,"children":5978},{"className":5977},[861],[5979],{"type":23,"value":1553},{"type":17,"tag":613,"props":5981,"children":5983},{"className":5982},[823,824],[5984],{"type":23,"value":3666},{"type":17,"tag":613,"props":5986,"children":5988},{"className":5987},[970],[5989],{"type":23,"value":1585},{"type":17,"tag":613,"props":5991,"children":5992},{"style":5356},[5993,5997],{"type":17,"tag":613,"props":5994,"children":5996},{"className":5995,"style":910},[909],[],{"type":17,"tag":613,"props":5998,"children":6000},{"className":5999},[823],[6001,6005,6066,6070,6075,6079,6084,6088,6093,6097],{"type":17,"tag":613,"props":6002,"children":6004},{"className":6003},[823],[],{"type":17,"tag":613,"props":6006,"children":6008},{"className":6007},[823],[6009,6014],{"type":17,"tag":613,"props":6010,"children":6012},{"className":6011},[823,824],[6013],{"type":23,"value":3666},{"type":17,"tag":613,"props":6015,"children":6017},{"className":6016},[1018],[6018],{"type":17,"tag":613,"props":6019,"children":6021},{"className":6020},[888,889],[6022,6055],{"type":17,"tag":613,"props":6023,"children":6025},{"className":6024},[894],[6026,6050],{"type":17,"tag":613,"props":6027,"children":6029},{"className":6028,"style":1732},[899],[6030],{"type":17,"tag":613,"props":6031,"children":6032},{"style":1795},[6033,6037],{"type":17,"tag":613,"props":6034,"children":6036},{"className":6035,"style":1040},[909],[],{"type":17,"tag":613,"props":6038,"children":6040},{"className":6039},[1045,1046,869,1047],[6041],{"type":17,"tag":613,"props":6042,"children":6044},{"className":6043},[823,1047],[6045],{"type":17,"tag":613,"props":6046,"children":6048},{"className":6047},[823,1002,1047],[6049],{"type":23,"value":4766},{"type":17,"tag":613,"props":6051,"children":6053},{"className":6052},[951],[6054],{"type":23,"value":954},{"type":17,"tag":613,"props":6056,"children":6058},{"className":6057},[894],[6059],{"type":17,"tag":613,"props":6060,"children":6062},{"className":6061,"style":1763},[899],[6063],{"type":17,"tag":613,"props":6064,"children":6065},{},[],{"type":17,"tag":613,"props":6067,"children":6069},{"className":6068,"style":832},[831],[],{"type":17,"tag":613,"props":6071,"children":6073},{"className":6072},[837],[6074],{"type":23,"value":5072},{"type":17,"tag":613,"props":6076,"children":6078},{"className":6077,"style":832},[831],[],{"type":17,"tag":613,"props":6080,"children":6082},{"className":6081},[823,824],[6083],{"type":23,"value":3666},{"type":17,"tag":613,"props":6085,"children":6087},{"className":6086,"style":832},[831],[],{"type":17,"tag":613,"props":6089,"children":6091},{"className":6090},[837],[6092],{"type":23,"value":5072},{"type":17,"tag":613,"props":6094,"children":6096},{"className":6095,"style":832},[831],[],{"type":17,"tag":613,"props":6098,"children":6100},{"className":6099},[823],[6101,6106],{"type":17,"tag":613,"props":6102,"children":6104},{"className":6103},[823,824],[6105],{"type":23,"value":3666},{"type":17,"tag":613,"props":6107,"children":6109},{"className":6108},[1018],[6110],{"type":17,"tag":613,"props":6111,"children":6113},{"className":6112},[888,889],[6114,6153],{"type":17,"tag":613,"props":6115,"children":6117},{"className":6116},[894],[6118,6148],{"type":17,"tag":613,"props":6119,"children":6121},{"className":6120,"style":1031},[899],[6122],{"type":17,"tag":613,"props":6123,"children":6124},{"style":1795},[6125,6129],{"type":17,"tag":613,"props":6126,"children":6128},{"className":6127,"style":1040},[909],[],{"type":17,"tag":613,"props":6130,"children":6132},{"className":6131},[1045,1046,869,1047],[6133],{"type":17,"tag":613,"props":6134,"children":6136},{"className":6135},[823,1047],[6137,6143],{"type":17,"tag":613,"props":6138,"children":6140},{"className":6139},[823,1002,1047],[6141],{"type":23,"value":6142},"ma",{"type":17,"tag":613,"props":6144,"children":6146},{"className":6145},[823,1002,1047],[6147],{"type":23,"value":1505},{"type":17,"tag":613,"props":6149,"children":6151},{"className":6150},[951],[6152],{"type":23,"value":954},{"type":17,"tag":613,"props":6154,"children":6156},{"className":6155},[894],[6157],{"type":17,"tag":613,"props":6158,"children":6160},{"className":6159,"style":1763},[899],[6161],{"type":17,"tag":613,"props":6162,"children":6163},{},[],{"type":17,"tag":613,"props":6165,"children":6166},{"style":5381},[6167,6171],{"type":17,"tag":613,"props":6168,"children":6170},{"className":6169,"style":910},[909],[],{"type":17,"tag":613,"props":6172,"children":6174},{"className":6173},[823],[6175,6179,6184,6245,6249,6254,6258,6263,6267,6272,6276,6352,6356,6361,6365,6370],{"type":17,"tag":613,"props":6176,"children":6178},{"className":6177},[823],[],{"type":17,"tag":613,"props":6180,"children":6182},{"className":6181},[823],[6183],{"type":23,"value":5131},{"type":17,"tag":613,"props":6185,"children":6187},{"className":6186},[823],[6188,6193],{"type":17,"tag":613,"props":6189,"children":6191},{"className":6190},[823,824],[6192],{"type":23,"value":3666},{"type":17,"tag":613,"props":6194,"children":6196},{"className":6195},[1018],[6197],{"type":17,"tag":613,"props":6198,"children":6200},{"className":6199},[888,889],[6201,6234],{"type":17,"tag":613,"props":6202,"children":6204},{"className":6203},[894],[6205,6229],{"type":17,"tag":613,"props":6206,"children":6208},{"className":6207,"style":1732},[899],[6209],{"type":17,"tag":613,"props":6210,"children":6211},{"style":1795},[6212,6216],{"type":17,"tag":613,"props":6213,"children":6215},{"className":6214,"style":1040},[909],[],{"type":17,"tag":613,"props":6217,"children":6219},{"className":6218},[1045,1046,869,1047],[6220],{"type":17,"tag":613,"props":6221,"children":6223},{"className":6222},[823,1047],[6224],{"type":17,"tag":613,"props":6225,"children":6227},{"className":6226},[823,1002,1047],[6228],{"type":23,"value":4766},{"type":17,"tag":613,"props":6230,"children":6232},{"className":6231},[951],[6233],{"type":23,"value":954},{"type":17,"tag":613,"props":6235,"children":6237},{"className":6236},[894],[6238],{"type":17,"tag":613,"props":6239,"children":6241},{"className":6240,"style":1763},[899],[6242],{"type":17,"tag":613,"props":6243,"children":6244},{},[],{"type":17,"tag":613,"props":6246,"children":6248},{"className":6247,"style":832},[831],[],{"type":17,"tag":613,"props":6250,"children":6252},{"className":6251},[837],[6253],{"type":23,"value":5072},{"type":17,"tag":613,"props":6255,"children":6257},{"className":6256,"style":832},[831],[],{"type":17,"tag":613,"props":6259,"children":6261},{"className":6260},[823,824],[6262],{"type":23,"value":3666},{"type":17,"tag":613,"props":6264,"children":6266},{"className":6265,"style":2064},[831],[],{"type":17,"tag":613,"props":6268,"children":6270},{"className":6269},[2069],[6271],{"type":23,"value":4809},{"type":17,"tag":613,"props":6273,"children":6275},{"className":6274,"style":2064},[831],[],{"type":17,"tag":613,"props":6277,"children":6279},{"className":6278},[823],[6280,6285],{"type":17,"tag":613,"props":6281,"children":6283},{"className":6282},[823,824],[6284],{"type":23,"value":3666},{"type":17,"tag":613,"props":6286,"children":6288},{"className":6287},[1018],[6289],{"type":17,"tag":613,"props":6290,"children":6292},{"className":6291},[888,889],[6293,6341],{"type":17,"tag":613,"props":6294,"children":6296},{"className":6295},[894],[6297,6336],{"type":17,"tag":613,"props":6298,"children":6300},{"className":6299,"style":1031},[899],[6301],{"type":17,"tag":613,"props":6302,"children":6303},{"style":1795},[6304,6308],{"type":17,"tag":613,"props":6305,"children":6307},{"className":6306,"style":1040},[909],[],{"type":17,"tag":613,"props":6309,"children":6311},{"className":6310},[1045,1046,869,1047],[6312],{"type":17,"tag":613,"props":6313,"children":6315},{"className":6314},[823,1047],[6316,6321,6326,6331],{"type":17,"tag":613,"props":6317,"children":6319},{"className":6318},[823,1002,1047],[6320],{"type":23,"value":18},{"type":17,"tag":613,"props":6322,"children":6324},{"className":6323,"style":1061},[823,1002,1047],[6325],{"type":23,"value":787},{"type":17,"tag":613,"props":6327,"children":6329},{"className":6328},[823,1002,1047],[6330],{"type":23,"value":4514},{"type":17,"tag":613,"props":6332,"children":6334},{"className":6333,"style":5709},[823,1002,1047],[6335],{"type":23,"value":4899},{"type":17,"tag":613,"props":6337,"children":6339},{"className":6338},[951],[6340],{"type":23,"value":954},{"type":17,"tag":613,"props":6342,"children":6344},{"className":6343},[894],[6345],{"type":17,"tag":613,"props":6346,"children":6348},{"className":6347,"style":1086},[899],[6349],{"type":17,"tag":613,"props":6350,"children":6351},{},[],{"type":17,"tag":613,"props":6353,"children":6355},{"className":6354,"style":832},[831],[],{"type":17,"tag":613,"props":6357,"children":6359},{"className":6358},[837],[6360],{"type":23,"value":5072},{"type":17,"tag":613,"props":6362,"children":6364},{"className":6363,"style":832},[831],[],{"type":17,"tag":613,"props":6366,"children":6368},{"className":6367},[823],[6369],{"type":23,"value":5131},{"type":17,"tag":613,"props":6371,"children":6373},{"className":6372},[823],[6374,6379],{"type":17,"tag":613,"props":6375,"children":6377},{"className":6376},[823,824],[6378],{"type":23,"value":3666},{"type":17,"tag":613,"props":6380,"children":6382},{"className":6381},[1018],[6383],{"type":17,"tag":613,"props":6384,"children":6386},{"className":6385},[888,889],[6387,6425],{"type":17,"tag":613,"props":6388,"children":6390},{"className":6389},[894],[6391,6420],{"type":17,"tag":613,"props":6392,"children":6394},{"className":6393,"style":1031},[899],[6395],{"type":17,"tag":613,"props":6396,"children":6397},{"style":1795},[6398,6402],{"type":17,"tag":613,"props":6399,"children":6401},{"className":6400,"style":1040},[909],[],{"type":17,"tag":613,"props":6403,"children":6405},{"className":6404},[1045,1046,869,1047],[6406],{"type":17,"tag":613,"props":6407,"children":6409},{"className":6408},[823,1047],[6410,6415],{"type":17,"tag":613,"props":6411,"children":6413},{"className":6412},[823,1002,1047],[6414],{"type":23,"value":6142},{"type":17,"tag":613,"props":6416,"children":6418},{"className":6417},[823,1002,1047],[6419],{"type":23,"value":1505},{"type":17,"tag":613,"props":6421,"children":6423},{"className":6422},[951],[6424],{"type":23,"value":954},{"type":17,"tag":613,"props":6426,"children":6428},{"className":6427},[894],[6429],{"type":17,"tag":613,"props":6430,"children":6432},{"className":6431,"style":1763},[899],[6433],{"type":17,"tag":613,"props":6434,"children":6435},{},[],{"type":17,"tag":613,"props":6437,"children":6439},{"className":6438},[951],[6440],{"type":23,"value":954},{"type":17,"tag":613,"props":6442,"children":6444},{"className":6443},[894],[6445],{"type":17,"tag":613,"props":6446,"children":6448},{"className":6447,"style":5403},[899],[6449],{"type":17,"tag":613,"props":6450,"children":6451},{},[],{"type":17,"tag":18,"props":6453,"children":6454},{},[6455],{"type":23,"value":1095},{"type":17,"tag":172,"props":6457,"children":6458},{},[6459,6731,6968,7101,7256],{"type":17,"tag":176,"props":6460,"children":6461},{},[6462,6729],{"type":17,"tag":613,"props":6463,"children":6465},{"className":6464},[670],[6466,6537],{"type":17,"tag":613,"props":6467,"children":6469},{"className":6468},[675],[6470],{"type":17,"tag":678,"props":6471,"children":6472},{"xmlns":680},[6473],{"type":17,"tag":684,"props":6474,"children":6475},{},[6476,6532],{"type":17,"tag":688,"props":6477,"children":6478},{},[6479,6483,6487,6491,6495,6517],{"type":17,"tag":692,"props":6480,"children":6481},{"mathvariant":4793},[6482],{"type":23,"value":4796},{"type":17,"tag":692,"props":6484,"children":6485},{},[6486],{"type":23,"value":766},{"type":17,"tag":692,"props":6488,"children":6489},{"mathvariant":694},[6490],{"type":23,"value":3666},{"type":17,"tag":699,"props":6492,"children":6493},{},[6494],{"type":23,"value":4809},{"type":17,"tag":768,"props":6496,"children":6497},{},[6498,6502],{"type":17,"tag":692,"props":6499,"children":6500},{"mathvariant":694},[6501],{"type":23,"value":697},{"type":17,"tag":688,"props":6503,"children":6504},{},[6505,6509,6513],{"type":17,"tag":692,"props":6506,"children":6507},{},[6508],{"type":23,"value":4509},{"type":17,"tag":692,"props":6510,"children":6511},{},[6512],{"type":23,"value":4514},{"type":17,"tag":692,"props":6514,"children":6515},{},[6516],{"type":23,"value":4519},{"type":17,"tag":4833,"props":6518,"children":6519},{},[6520,6524,6528],{"type":17,"tag":692,"props":6521,"children":6522},{"mathvariant":4793},[6523],{"type":23,"value":4796},{"type":17,"tag":692,"props":6525,"children":6526},{},[6527],{"type":23,"value":4844},{"type":17,"tag":4846,"props":6529,"children":6530},{},[6531],{"type":23,"value":4850},{"type":17,"tag":798,"props":6533,"children":6534},{"encoding":800},[6535],{"type":23,"value":6536},"\\|M\\mathbf{u} - \\mathbf{y}_{des}\\|_Q^2",{"type":17,"tag":613,"props":6538,"children":6540},{"className":6539,"ariaHidden":709},[807],[6541,6577],{"type":17,"tag":613,"props":6542,"children":6544},{"className":6543},[812],[6545,6549,6554,6559,6564,6568,6573],{"type":17,"tag":613,"props":6546,"children":6548},{"className":6547,"style":2083},[817],[],{"type":17,"tag":613,"props":6550,"children":6552},{"className":6551},[823],[6553],{"type":23,"value":4796},{"type":17,"tag":613,"props":6555,"children":6557},{"className":6556,"style":1003},[823,1002],[6558],{"type":23,"value":766},{"type":17,"tag":613,"props":6560,"children":6562},{"className":6561},[823,824],[6563],{"type":23,"value":3666},{"type":17,"tag":613,"props":6565,"children":6567},{"className":6566,"style":2064},[831],[],{"type":17,"tag":613,"props":6569,"children":6571},{"className":6570},[2069],[6572],{"type":23,"value":4809},{"type":17,"tag":613,"props":6574,"children":6576},{"className":6575,"style":2064},[831],[],{"type":17,"tag":613,"props":6578,"children":6580},{"className":6579},[812],[6581,6586,6652],{"type":17,"tag":613,"props":6582,"children":6585},{"className":6583,"style":6584},[817],"height:1.2255em;vertical-align:-0.4114em;",[],{"type":17,"tag":613,"props":6587,"children":6589},{"className":6588},[823],[6590,6595],{"type":17,"tag":613,"props":6591,"children":6593},{"className":6592,"style":825},[823,824],[6594],{"type":23,"value":697},{"type":17,"tag":613,"props":6596,"children":6598},{"className":6597},[1018],[6599],{"type":17,"tag":613,"props":6600,"children":6602},{"className":6601},[888,889],[6603,6641],{"type":17,"tag":613,"props":6604,"children":6606},{"className":6605},[894],[6607,6636],{"type":17,"tag":613,"props":6608,"children":6610},{"className":6609,"style":4631},[899],[6611],{"type":17,"tag":613,"props":6612,"children":6613},{"style":4635},[6614,6618],{"type":17,"tag":613,"props":6615,"children":6617},{"className":6616,"style":1040},[909],[],{"type":17,"tag":613,"props":6619,"children":6621},{"className":6620},[1045,1046,869,1047],[6622],{"type":17,"tag":613,"props":6623,"children":6625},{"className":6624},[823,1047],[6626,6631],{"type":17,"tag":613,"props":6627,"children":6629},{"className":6628},[823,1002,1047],[6630],{"type":23,"value":4509},{"type":17,"tag":613,"props":6632,"children":6634},{"className":6633},[823,1002,1047],[6635],{"type":23,"value":4659},{"type":17,"tag":613,"props":6637,"children":6639},{"className":6638},[951],[6640],{"type":23,"value":954},{"type":17,"tag":613,"props":6642,"children":6644},{"className":6643},[894],[6645],{"type":17,"tag":613,"props":6646,"children":6648},{"className":6647,"style":1763},[899],[6649],{"type":17,"tag":613,"props":6650,"children":6651},{},[],{"type":17,"tag":613,"props":6653,"children":6655},{"className":6654},[823],[6656,6661],{"type":17,"tag":613,"props":6657,"children":6659},{"className":6658},[823],[6660],{"type":23,"value":4796},{"type":17,"tag":613,"props":6662,"children":6664},{"className":6663},[1018],[6665],{"type":17,"tag":613,"props":6666,"children":6668},{"className":6667},[888,889],[6669,6717],{"type":17,"tag":613,"props":6670,"children":6672},{"className":6671},[894],[6673,6712],{"type":17,"tag":613,"props":6674,"children":6677},{"className":6675,"style":6676},[899],"height:0.8141em;",[6678,6695],{"type":17,"tag":613,"props":6679,"children":6681},{"style":6680},"top:-2.4247em;margin-left:0em;margin-right:0.05em;",[6682,6686],{"type":17,"tag":613,"props":6683,"children":6685},{"className":6684,"style":1040},[909],[],{"type":17,"tag":613,"props":6687,"children":6689},{"className":6688},[1045,1046,869,1047],[6690],{"type":17,"tag":613,"props":6691,"children":6693},{"className":6692},[823,1002,1047],[6694],{"type":23,"value":4844},{"type":17,"tag":613,"props":6696,"children":6698},{"style":6697},"top:-3.063em;margin-right:0.05em;",[6699,6703],{"type":17,"tag":613,"props":6700,"children":6702},{"className":6701,"style":1040},[909],[],{"type":17,"tag":613,"props":6704,"children":6706},{"className":6705},[1045,1046,869,1047],[6707],{"type":17,"tag":613,"props":6708,"children":6710},{"className":6709},[823,1047],[6711],{"type":23,"value":4850},{"type":17,"tag":613,"props":6713,"children":6715},{"className":6714},[951],[6716],{"type":23,"value":954},{"type":17,"tag":613,"props":6718,"children":6720},{"className":6719},[894],[6721],{"type":17,"tag":613,"props":6722,"children":6725},{"className":6723,"style":6724},[899],"height:0.4114em;",[6726],{"type":17,"tag":613,"props":6727,"children":6728},{},[],{"type":23,"value":6730}," tracks the desired wrench;",{"type":17,"tag":176,"props":6732,"children":6733},{},[6734,6966],{"type":17,"tag":613,"props":6735,"children":6737},{"className":6736},[670],[6738,6805],{"type":17,"tag":613,"props":6739,"children":6741},{"className":6740},[675],[6742],{"type":17,"tag":678,"props":6743,"children":6744},{"xmlns":680},[6745],{"type":17,"tag":684,"props":6746,"children":6747},{},[6748,6800],{"type":17,"tag":688,"props":6749,"children":6750},{},[6751,6755,6759,6763,6789],{"type":17,"tag":692,"props":6752,"children":6753},{"mathvariant":4793},[6754],{"type":23,"value":4796},{"type":17,"tag":692,"props":6756,"children":6757},{"mathvariant":694},[6758],{"type":23,"value":3666},{"type":17,"tag":699,"props":6760,"children":6761},{},[6762],{"type":23,"value":4809},{"type":17,"tag":768,"props":6764,"children":6765},{},[6766,6770],{"type":17,"tag":692,"props":6767,"children":6768},{"mathvariant":694},[6769],{"type":23,"value":3666},{"type":17,"tag":688,"props":6771,"children":6772},{},[6773,6777,6781,6785],{"type":17,"tag":692,"props":6774,"children":6775},{},[6776],{"type":23,"value":18},{"type":17,"tag":692,"props":6778,"children":6779},{},[6780],{"type":23,"value":787},{"type":17,"tag":692,"props":6782,"children":6783},{},[6784],{"type":23,"value":4514},{"type":17,"tag":692,"props":6786,"children":6787},{},[6788],{"type":23,"value":4899},{"type":17,"tag":4483,"props":6790,"children":6791},{},[6792,6796],{"type":17,"tag":692,"props":6793,"children":6794},{"mathvariant":4793},[6795],{"type":23,"value":4796},{"type":17,"tag":4846,"props":6797,"children":6798},{},[6799],{"type":23,"value":4850},{"type":17,"tag":798,"props":6801,"children":6802},{"encoding":800},[6803],{"type":23,"value":6804},"\\|\\mathbf{u} - \\mathbf{u}_{prev}\\|^2",{"type":17,"tag":613,"props":6806,"children":6808},{"className":6807,"ariaHidden":709},[807],[6809,6840],{"type":17,"tag":613,"props":6810,"children":6812},{"className":6811},[812],[6813,6817,6822,6827,6831,6836],{"type":17,"tag":613,"props":6814,"children":6816},{"className":6815,"style":2083},[817],[],{"type":17,"tag":613,"props":6818,"children":6820},{"className":6819},[823],[6821],{"type":23,"value":4796},{"type":17,"tag":613,"props":6823,"children":6825},{"className":6824},[823,824],[6826],{"type":23,"value":3666},{"type":17,"tag":613,"props":6828,"children":6830},{"className":6829,"style":2064},[831],[],{"type":17,"tag":613,"props":6832,"children":6834},{"className":6833},[2069],[6835],{"type":23,"value":4809},{"type":17,"tag":613,"props":6837,"children":6839},{"className":6838,"style":2064},[831],[],{"type":17,"tag":613,"props":6841,"children":6843},{"className":6842},[812],[6844,6849,6925],{"type":17,"tag":613,"props":6845,"children":6848},{"className":6846,"style":6847},[817],"height:1.1002em;vertical-align:-0.2861em;",[],{"type":17,"tag":613,"props":6850,"children":6852},{"className":6851},[823],[6853,6858],{"type":17,"tag":613,"props":6854,"children":6856},{"className":6855},[823,824],[6857],{"type":23,"value":3666},{"type":17,"tag":613,"props":6859,"children":6861},{"className":6860},[1018],[6862],{"type":17,"tag":613,"props":6863,"children":6865},{"className":6864},[888,889],[6866,6914],{"type":17,"tag":613,"props":6867,"children":6869},{"className":6868},[894],[6870,6909],{"type":17,"tag":613,"props":6871,"children":6873},{"className":6872,"style":1031},[899],[6874],{"type":17,"tag":613,"props":6875,"children":6876},{"style":1795},[6877,6881],{"type":17,"tag":613,"props":6878,"children":6880},{"className":6879,"style":1040},[909],[],{"type":17,"tag":613,"props":6882,"children":6884},{"className":6883},[1045,1046,869,1047],[6885],{"type":17,"tag":613,"props":6886,"children":6888},{"className":6887},[823,1047],[6889,6894,6899,6904],{"type":17,"tag":613,"props":6890,"children":6892},{"className":6891},[823,1002,1047],[6893],{"type":23,"value":18},{"type":17,"tag":613,"props":6895,"children":6897},{"className":6896,"style":1061},[823,1002,1047],[6898],{"type":23,"value":787},{"type":17,"tag":613,"props":6900,"children":6902},{"className":6901},[823,1002,1047],[6903],{"type":23,"value":4514},{"type":17,"tag":613,"props":6905,"children":6907},{"className":6906,"style":5709},[823,1002,1047],[6908],{"type":23,"value":4899},{"type":17,"tag":613,"props":6910,"children":6912},{"className":6911},[951],[6913],{"type":23,"value":954},{"type":17,"tag":613,"props":6915,"children":6917},{"className":6916},[894],[6918],{"type":17,"tag":613,"props":6919,"children":6921},{"className":6920,"style":1086},[899],[6922],{"type":17,"tag":613,"props":6923,"children":6924},{},[],{"type":17,"tag":613,"props":6926,"children":6928},{"className":6927},[823],[6929,6934],{"type":17,"tag":613,"props":6930,"children":6932},{"className":6931},[823],[6933],{"type":23,"value":4796},{"type":17,"tag":613,"props":6935,"children":6937},{"className":6936},[1018],[6938],{"type":17,"tag":613,"props":6939,"children":6941},{"className":6940},[888],[6942],{"type":17,"tag":613,"props":6943,"children":6945},{"className":6944},[894],[6946],{"type":17,"tag":613,"props":6947,"children":6949},{"className":6948,"style":6676},[899],[6950],{"type":17,"tag":613,"props":6951,"children":6952},{"style":6697},[6953,6957],{"type":17,"tag":613,"props":6954,"children":6956},{"className":6955,"style":1040},[909],[],{"type":17,"tag":613,"props":6958,"children":6960},{"className":6959},[1045,1046,869,1047],[6961],{"type":17,"tag":613,"props":6962,"children":6964},{"className":6963},[823,1047],[6965],{"type":23,"value":4850},{"type":23,"value":6967}," discourages aggressive thrust changes;",{"type":17,"tag":176,"props":6969,"children":6970},{},[6971,7099],{"type":17,"tag":613,"props":6972,"children":6974},{"className":6973},[670],[6975,7015],{"type":17,"tag":613,"props":6976,"children":6978},{"className":6977},[675],[6979],{"type":17,"tag":678,"props":6980,"children":6981},{"xmlns":680},[6982],{"type":17,"tag":684,"props":6983,"children":6984},{},[6985,7010],{"type":17,"tag":688,"props":6986,"children":6987},{},[6988],{"type":17,"tag":768,"props":6989,"children":6990},{},[6991,6995],{"type":17,"tag":692,"props":6992,"children":6993},{},[6994],{"type":23,"value":4927},{"type":17,"tag":688,"props":6996,"children":6997},{},[6998,7002,7006],{"type":17,"tag":692,"props":6999,"children":7000},{},[7001],{"type":23,"value":787},{"type":17,"tag":692,"props":7003,"children":7004},{},[7005],{"type":23,"value":4514},{"type":17,"tag":692,"props":7007,"children":7008},{},[7009],{"type":23,"value":4899},{"type":17,"tag":798,"props":7011,"children":7012},{"encoding":800},[7013],{"type":23,"value":7014},"J_{rev}",{"type":17,"tag":613,"props":7016,"children":7018},{"className":7017,"ariaHidden":709},[807],[7019],{"type":17,"tag":613,"props":7020,"children":7022},{"className":7021},[812],[7023,7028],{"type":17,"tag":613,"props":7024,"children":7027},{"className":7025,"style":7026},[817],"height:0.8333em;vertical-align:-0.15em;",[],{"type":17,"tag":613,"props":7029,"children":7031},{"className":7030},[823],[7032,7037],{"type":17,"tag":613,"props":7033,"children":7035},{"className":7034,"style":5794},[823,1002],[7036],{"type":23,"value":4927},{"type":17,"tag":613,"props":7038,"children":7040},{"className":7039},[1018],[7041],{"type":17,"tag":613,"props":7042,"children":7044},{"className":7043},[888,889],[7045,7088],{"type":17,"tag":613,"props":7046,"children":7048},{"className":7047},[894],[7049,7083],{"type":17,"tag":613,"props":7050,"children":7052},{"className":7051,"style":1031},[899],[7053],{"type":17,"tag":613,"props":7054,"children":7055},{"style":5815},[7056,7060],{"type":17,"tag":613,"props":7057,"children":7059},{"className":7058,"style":1040},[909],[],{"type":17,"tag":613,"props":7061,"children":7063},{"className":7062},[1045,1046,869,1047],[7064],{"type":17,"tag":613,"props":7065,"children":7067},{"className":7066},[823,1047],[7068,7073,7078],{"type":17,"tag":613,"props":7069,"children":7071},{"className":7070,"style":1061},[823,1002,1047],[7072],{"type":23,"value":787},{"type":17,"tag":613,"props":7074,"children":7076},{"className":7075},[823,1002,1047],[7077],{"type":23,"value":4514},{"type":17,"tag":613,"props":7079,"children":7081},{"className":7080,"style":5709},[823,1002,1047],[7082],{"type":23,"value":4899},{"type":17,"tag":613,"props":7084,"children":7086},{"className":7085},[951],[7087],{"type":23,"value":954},{"type":17,"tag":613,"props":7089,"children":7091},{"className":7090},[894],[7092],{"type":17,"tag":613,"props":7093,"children":7095},{"className":7094,"style":1763},[899],[7096],{"type":17,"tag":613,"props":7097,"children":7098},{},[],{"type":23,"value":7100}," penalizes motor reversal;",{"type":17,"tag":176,"props":7102,"children":7103},{},[7104,7254],{"type":17,"tag":613,"props":7105,"children":7107},{"className":7106},[670],[7108,7160],{"type":17,"tag":613,"props":7109,"children":7111},{"className":7110},[675],[7112],{"type":17,"tag":678,"props":7113,"children":7114},{"xmlns":680},[7115],{"type":17,"tag":684,"props":7116,"children":7117},{},[7118,7155],{"type":17,"tag":688,"props":7119,"children":7120},{},[7121],{"type":17,"tag":768,"props":7122,"children":7123},{},[7124,7128],{"type":17,"tag":692,"props":7125,"children":7126},{},[7127],{"type":23,"value":4927},{"type":17,"tag":688,"props":7129,"children":7130},{},[7131,7135,7139,7143,7147,7151],{"type":17,"tag":692,"props":7132,"children":7133},{},[7134],{"type":23,"value":4514},{"type":17,"tag":692,"props":7136,"children":7137},{},[7138],{"type":23,"value":4982},{"type":17,"tag":692,"props":7140,"children":7141},{},[7142],{"type":23,"value":4514},{"type":17,"tag":692,"props":7144,"children":7145},{},[7146],{"type":23,"value":787},{"type":17,"tag":692,"props":7148,"children":7149},{},[7150],{"type":23,"value":4995},{"type":17,"tag":692,"props":7152,"children":7153},{},[7154],{"type":23,"value":697},{"type":17,"tag":798,"props":7156,"children":7157},{"encoding":800},[7158],{"type":23,"value":7159},"J_{energy}",{"type":17,"tag":613,"props":7161,"children":7163},{"className":7162,"ariaHidden":709},[807],[7164],{"type":17,"tag":613,"props":7165,"children":7167},{"className":7166},[812],[7168,7173],{"type":17,"tag":613,"props":7169,"children":7172},{"className":7170,"style":7171},[817],"height:0.9694em;vertical-align:-0.2861em;",[],{"type":17,"tag":613,"props":7174,"children":7176},{"className":7175},[823],[7177,7182],{"type":17,"tag":613,"props":7178,"children":7180},{"className":7179,"style":5794},[823,1002],[7181],{"type":23,"value":4927},{"type":17,"tag":613,"props":7183,"children":7185},{"className":7184},[1018],[7186],{"type":17,"tag":613,"props":7187,"children":7189},{"className":7188},[888,889],[7190,7243],{"type":17,"tag":613,"props":7191,"children":7193},{"className":7192},[894],[7194,7238],{"type":17,"tag":613,"props":7195,"children":7197},{"className":7196,"style":1031},[899],[7198],{"type":17,"tag":613,"props":7199,"children":7200},{"style":5815},[7201,7205],{"type":17,"tag":613,"props":7202,"children":7204},{"className":7203,"style":1040},[909],[],{"type":17,"tag":613,"props":7206,"children":7208},{"className":7207},[1045,1046,869,1047],[7209],{"type":17,"tag":613,"props":7210,"children":7212},{"className":7211},[823,1047],[7213,7218,7223,7228,7233],{"type":17,"tag":613,"props":7214,"children":7216},{"className":7215},[823,1002,1047],[7217],{"type":23,"value":4514},{"type":17,"tag":613,"props":7219,"children":7221},{"className":7220},[823,1002,1047],[7222],{"type":23,"value":4982},{"type":17,"tag":613,"props":7224,"children":7226},{"className":7225,"style":1061},[823,1002,1047],[7227],{"type":23,"value":5948},{"type":17,"tag":613,"props":7229,"children":7231},{"className":7230,"style":5709},[823,1002,1047],[7232],{"type":23,"value":4995},{"type":17,"tag":613,"props":7234,"children":7236},{"className":7235,"style":5709},[823,1002,1047],[7237],{"type":23,"value":697},{"type":17,"tag":613,"props":7239,"children":7241},{"className":7240},[951],[7242],{"type":23,"value":954},{"type":17,"tag":613,"props":7244,"children":7246},{"className":7245},[894],[7247],{"type":17,"tag":613,"props":7248,"children":7250},{"className":7249,"style":1086},[899],[7251],{"type":17,"tag":613,"props":7252,"children":7253},{},[],{"type":23,"value":7255}," penalizes current \u002F power consumption;",{"type":17,"tag":176,"props":7257,"children":7258},{},[7259],{"type":23,"value":7260},"constraints enforce actuator limits.",{"type":17,"tag":513,"props":7262,"children":7264},{"id":7263},"optimal-control-research-questions",[7265],{"type":23,"value":7266},"🧭 Optimal-control research questions",{"type":17,"tag":172,"props":7268,"children":7269},{},[7270,7275,7324,7329,7334],{"type":17,"tag":176,"props":7271,"children":7272},{},[7273],{"type":23,"value":7274},"How can we allocate thrust while avoiding unnecessary motor reversal?",{"type":17,"tag":176,"props":7276,"children":7277},{},[7278,7280,7322],{"type":23,"value":7279},"Can we use the null space of ",{"type":17,"tag":613,"props":7281,"children":7283},{"className":7282},[670],[7284,7305],{"type":17,"tag":613,"props":7285,"children":7287},{"className":7286},[675],[7288],{"type":17,"tag":678,"props":7289,"children":7290},{"xmlns":680},[7291],{"type":17,"tag":684,"props":7292,"children":7293},{},[7294,7301],{"type":17,"tag":688,"props":7295,"children":7296},{},[7297],{"type":17,"tag":692,"props":7298,"children":7299},{},[7300],{"type":23,"value":766},{"type":17,"tag":798,"props":7302,"children":7303},{"encoding":800},[7304],{"type":23,"value":766},{"type":17,"tag":613,"props":7306,"children":7308},{"className":7307,"ariaHidden":709},[807],[7309],{"type":17,"tag":613,"props":7310,"children":7312},{"className":7311},[812],[7313,7317],{"type":17,"tag":613,"props":7314,"children":7316},{"className":7315,"style":1385},[817],[],{"type":17,"tag":613,"props":7318,"children":7320},{"className":7319,"style":1003},[823,1002],[7321],{"type":23,"value":766},{"type":23,"value":7323}," to minimize energy without changing the produced wrench?",{"type":17,"tag":176,"props":7325,"children":7326},{},[7327],{"type":23,"value":7328},"How should force and torque tracking be weighted when full tracking is infeasible?",{"type":17,"tag":176,"props":7330,"children":7331},{},[7332],{"type":23,"value":7333},"Can MPC improve arbitrary-attitude trajectory tracking compared with cascaded PID control?",{"type":17,"tag":176,"props":7335,"children":7336},{},[7337],{"type":23,"value":7338},"How do ETH-style and Lynchpin-style geometries differ in attainable wrench space?",{"type":17,"tag":513,"props":7340,"children":7342},{"id":7341},"planned-experiments",[7343],{"type":23,"value":7344},"🧪 Planned experiments",{"type":17,"tag":247,"props":7346,"children":7347},{},[7348,7364],{"type":17,"tag":251,"props":7349,"children":7350},{},[7351],{"type":17,"tag":255,"props":7352,"children":7353},{},[7354,7359],{"type":17,"tag":259,"props":7355,"children":7356},{},[7357],{"type":23,"value":7358},"Experiment",{"type":17,"tag":259,"props":7360,"children":7361},{},[7362],{"type":23,"value":7363},"Metric",{"type":17,"tag":270,"props":7365,"children":7366},{},[7367,7380,7393,7406,7419,7432],{"type":17,"tag":255,"props":7368,"children":7369},{},[7370,7375],{"type":17,"tag":277,"props":7371,"children":7372},{},[7373],{"type":23,"value":7374},"Static wrench tracking",{"type":17,"tag":277,"props":7376,"children":7377},{},[7378],{"type":23,"value":7379},"force\u002Ftorque error",{"type":17,"tag":255,"props":7381,"children":7382},{},[7383,7388],{"type":17,"tag":277,"props":7384,"children":7385},{},[7386],{"type":23,"value":7387},"Arbitrary-attitude hover",{"type":17,"tag":277,"props":7389,"children":7390},{},[7391],{"type":23,"value":7392},"position and attitude RMS error",{"type":17,"tag":255,"props":7394,"children":7395},{},[7396,7401],{"type":17,"tag":277,"props":7397,"children":7398},{},[7399],{"type":23,"value":7400},"Circular trajectory tracking",{"type":17,"tag":277,"props":7402,"children":7403},{},[7404],{"type":23,"value":7405},"position error, motor usage",{"type":17,"tag":255,"props":7407,"children":7408},{},[7409,7414],{"type":17,"tag":277,"props":7410,"children":7411},{},[7412],{"type":23,"value":7413},"Motor reversal penalty test",{"type":17,"tag":277,"props":7415,"children":7416},{},[7417],{"type":23,"value":7418},"reversal count, tracking degradation",{"type":17,"tag":255,"props":7420,"children":7421},{},[7422,7427],{"type":17,"tag":277,"props":7423,"children":7424},{},[7425],{"type":23,"value":7426},"Energy-aware allocation",{"type":17,"tag":277,"props":7428,"children":7429},{},[7430],{"type":23,"value":7431},"current draw, flight time estimate",{"type":17,"tag":255,"props":7433,"children":7434},{},[7435,7440],{"type":17,"tag":277,"props":7436,"children":7437},{},[7438],{"type":23,"value":7439},"Geometry comparison",{"type":17,"tag":277,"props":7441,"children":7442},{},[7443],{"type":23,"value":7444},"condition number, attainable wrench radius",{"type":17,"tag":136,"props":7446,"children":7447},{},[],{"type":17,"tag":140,"props":7449,"children":7451},{"id":7450},"_2-robust-control",[7452],{"type":23,"value":7453},"🤖 2. Robust Control",{"type":17,"tag":18,"props":7455,"children":7456},{},[7457],{"type":23,"value":7458},"Robust control addresses the gap between the clean mathematical model and the real flying machine.",{"type":17,"tag":18,"props":7460,"children":7461},{},[7462],{"type":23,"value":7463},"In the real platform, we must expect:",{"type":17,"tag":172,"props":7465,"children":7466},{},[7467,7472,7477,7482,7487,7492,7497],{"type":17,"tag":176,"props":7468,"children":7469},{},[7470],{"type":23,"value":7471},"🌬️ aerodynamic interference between rotors;",{"type":17,"tag":176,"props":7473,"children":7474},{},[7475],{"type":23,"value":7476},"📦 payload and center-of-mass changes;",{"type":17,"tag":176,"props":7478,"children":7479},{},[7480],{"type":23,"value":7481},"🧱 frame vibration and flexibility;",{"type":17,"tag":176,"props":7483,"children":7484},{},[7485],{"type":23,"value":7486},"🔁 motor reversal delay;",{"type":17,"tag":176,"props":7488,"children":7489},{},[7490],{"type":23,"value":7491},"📉 inaccurate thrust coefficients;",{"type":17,"tag":176,"props":7493,"children":7494},{},[7495],{"type":23,"value":7496},"🧲 sensor noise, bias, and magnetic disturbance;",{"type":17,"tag":176,"props":7498,"children":7499},{},[7500],{"type":23,"value":7501},"💨 external disturbances such as wind or contact forces.",{"type":17,"tag":513,"props":7503,"children":7505},{"id":7504},"candidate-robust-control-structure",[7506],{"type":23,"value":7507},"🧠 Candidate robust-control structure",{"type":17,"tag":603,"props":7509,"children":7513},{"className":7510,"code":7511,"language":7512,"meta":7,"style":7},"language-mermaid shiki shiki-themes github-light github-dark","flowchart LR\n    Ref[Reference trajectory] --> Nominal[Nominal 6-DoF controller]\n    Nominal --> Alloc[Constrained allocator]\n    Alloc --> Vehicle[Omnicopter hardware]\n    Vehicle --> Est[State estimator]\n    Est --> DOB[Disturbance observer]\n    DOB --> Nominal\n    Est --> Nominal\n","mermaid",[7514],{"type":17,"tag":609,"props":7515,"children":7516},{"__ignoreMap":7},[7517,7525,7533,7541,7549,7557,7565,7573],{"type":17,"tag":613,"props":7518,"children":7519},{"class":615,"line":616},[7520],{"type":17,"tag":613,"props":7521,"children":7522},{},[7523],{"type":23,"value":7524},"flowchart LR\n",{"type":17,"tag":613,"props":7526,"children":7527},{"class":615,"line":625},[7528],{"type":17,"tag":613,"props":7529,"children":7530},{},[7531],{"type":23,"value":7532},"    Ref[Reference trajectory] --> Nominal[Nominal 6-DoF controller]\n",{"type":17,"tag":613,"props":7534,"children":7535},{"class":615,"line":634},[7536],{"type":17,"tag":613,"props":7537,"children":7538},{},[7539],{"type":23,"value":7540},"    Nominal --> Alloc[Constrained allocator]\n",{"type":17,"tag":613,"props":7542,"children":7543},{"class":615,"line":643},[7544],{"type":17,"tag":613,"props":7545,"children":7546},{},[7547],{"type":23,"value":7548},"    Alloc --> Vehicle[Omnicopter hardware]\n",{"type":17,"tag":613,"props":7550,"children":7551},{"class":615,"line":2619},[7552],{"type":17,"tag":613,"props":7553,"children":7554},{},[7555],{"type":23,"value":7556},"    Vehicle --> Est[State estimator]\n",{"type":17,"tag":613,"props":7558,"children":7559},{"class":615,"line":2628},[7560],{"type":17,"tag":613,"props":7561,"children":7562},{},[7563],{"type":23,"value":7564},"    Est --> DOB[Disturbance observer]\n",{"type":17,"tag":613,"props":7566,"children":7567},{"class":615,"line":2636},[7568],{"type":17,"tag":613,"props":7569,"children":7570},{},[7571],{"type":23,"value":7572},"    DOB --> Nominal\n",{"type":17,"tag":613,"props":7574,"children":7575},{"class":615,"line":2645},[7576],{"type":17,"tag":613,"props":7577,"children":7578},{},[7579],{"type":23,"value":7580},"    Est --> Nominal\n",{"type":17,"tag":513,"props":7582,"children":7584},{"id":7583},"methods-we-can-investigate",[7585],{"type":23,"value":7586},"🔧 Methods we can investigate",{"type":17,"tag":247,"props":7588,"children":7589},{},[7590,7606],{"type":17,"tag":251,"props":7591,"children":7592},{},[7593],{"type":17,"tag":255,"props":7594,"children":7595},{},[7596,7601],{"type":17,"tag":259,"props":7597,"children":7598},{},[7599],{"type":23,"value":7600},"Method",{"type":17,"tag":259,"props":7602,"children":7603},{},[7604],{"type":23,"value":7605},"Role in this project",{"type":17,"tag":270,"props":7607,"children":7608},{},[7609,7622,7635,7648,7767,7780],{"type":17,"tag":255,"props":7610,"children":7611},{},[7612,7617],{"type":17,"tag":277,"props":7613,"children":7614},{},[7615],{"type":23,"value":7616},"Disturbance observer",{"type":17,"tag":277,"props":7618,"children":7619},{},[7620],{"type":23,"value":7621},"Estimate unmodeled force\u002Ftorque disturbance",{"type":17,"tag":255,"props":7623,"children":7624},{},[7625,7630],{"type":17,"tag":277,"props":7626,"children":7627},{},[7628],{"type":23,"value":7629},"Tube MPC",{"type":17,"tag":277,"props":7631,"children":7632},{},[7633],{"type":23,"value":7634},"Keep trajectory tracking stable under bounded uncertainty",{"type":17,"tag":255,"props":7636,"children":7637},{},[7638,7643],{"type":17,"tag":277,"props":7639,"children":7640},{},[7641],{"type":23,"value":7642},"Sliding-mode control",{"type":17,"tag":277,"props":7644,"children":7645},{},[7646],{"type":23,"value":7647},"Improve robustness to matched disturbances",{"type":17,"tag":255,"props":7649,"children":7650},{},[7651,7762],{"type":17,"tag":277,"props":7652,"children":7653},{},[7654,7760],{"type":17,"tag":613,"props":7655,"children":7657},{"className":7656},[670],[7658,7689],{"type":17,"tag":613,"props":7659,"children":7661},{"className":7660},[675],[7662],{"type":17,"tag":678,"props":7663,"children":7664},{"xmlns":680},[7665],{"type":17,"tag":684,"props":7666,"children":7667},{},[7668,7684],{"type":17,"tag":688,"props":7669,"children":7670},{},[7671],{"type":17,"tag":768,"props":7672,"children":7673},{},[7674,7679],{"type":17,"tag":692,"props":7675,"children":7676},{},[7677],{"type":23,"value":7678},"H",{"type":17,"tag":692,"props":7680,"children":7681},{"mathvariant":4793},[7682],{"type":23,"value":7683},"∞",{"type":17,"tag":798,"props":7685,"children":7686},{"encoding":800},[7687],{"type":23,"value":7688},"H_\\infty",{"type":17,"tag":613,"props":7690,"children":7692},{"className":7691,"ariaHidden":709},[807],[7693],{"type":17,"tag":613,"props":7694,"children":7696},{"className":7695},[812],[7697,7701],{"type":17,"tag":613,"props":7698,"children":7700},{"className":7699,"style":7026},[817],[],{"type":17,"tag":613,"props":7702,"children":7704},{"className":7703},[823],[7705,7711],{"type":17,"tag":613,"props":7706,"children":7709},{"className":7707,"style":7708},[823,1002],"margin-right:0.0813em;",[7710],{"type":23,"value":7678},{"type":17,"tag":613,"props":7712,"children":7714},{"className":7713},[1018],[7715],{"type":17,"tag":613,"props":7716,"children":7718},{"className":7717},[888,889],[7719,7749],{"type":17,"tag":613,"props":7720,"children":7722},{"className":7721},[894],[7723,7744],{"type":17,"tag":613,"props":7724,"children":7726},{"className":7725,"style":1031},[899],[7727],{"type":17,"tag":613,"props":7728,"children":7730},{"style":7729},"top:-2.55em;margin-left:-0.0813em;margin-right:0.05em;",[7731,7735],{"type":17,"tag":613,"props":7732,"children":7734},{"className":7733,"style":1040},[909],[],{"type":17,"tag":613,"props":7736,"children":7738},{"className":7737},[1045,1046,869,1047],[7739],{"type":17,"tag":613,"props":7740,"children":7742},{"className":7741},[823,1047],[7743],{"type":23,"value":7683},{"type":17,"tag":613,"props":7745,"children":7747},{"className":7746},[951],[7748],{"type":23,"value":954},{"type":17,"tag":613,"props":7750,"children":7752},{"className":7751},[894],[7753],{"type":17,"tag":613,"props":7754,"children":7756},{"className":7755,"style":1763},[899],[7757],{"type":17,"tag":613,"props":7758,"children":7759},{},[],{"type":23,"value":7761}," control",{"type":17,"tag":277,"props":7763,"children":7764},{},[7765],{"type":23,"value":7766},"Design for worst-case disturbance attenuation",{"type":17,"tag":255,"props":7768,"children":7769},{},[7770,7775],{"type":17,"tag":277,"props":7771,"children":7772},{},[7773],{"type":23,"value":7774},"Adaptive control",{"type":17,"tag":277,"props":7776,"children":7777},{},[7778],{"type":23,"value":7779},"Update uncertain parameters online",{"type":17,"tag":255,"props":7781,"children":7782},{},[7783,7788],{"type":17,"tag":277,"props":7784,"children":7785},{},[7786],{"type":23,"value":7787},"Learning compensation",{"type":17,"tag":277,"props":7789,"children":7790},{},[7791],{"type":23,"value":7792},"Learn repeatable aerodynamic coupling from logs",{"type":17,"tag":513,"props":7794,"children":7796},{"id":7795},"robust-control-experiments",[7797],{"type":23,"value":7798},"🧪 Robust-control experiments",{"type":17,"tag":247,"props":7800,"children":7801},{},[7802,7817],{"type":17,"tag":251,"props":7803,"children":7804},{},[7805],{"type":17,"tag":255,"props":7806,"children":7807},{},[7808,7812],{"type":17,"tag":259,"props":7809,"children":7810},{},[7811],{"type":23,"value":7358},{"type":17,"tag":259,"props":7813,"children":7814},{},[7815],{"type":23,"value":7816},"What we learn",{"type":17,"tag":270,"props":7818,"children":7819},{},[7820,7833,7846,7859,7872],{"type":17,"tag":255,"props":7821,"children":7822},{},[7823,7828],{"type":17,"tag":277,"props":7824,"children":7825},{},[7826],{"type":23,"value":7827},"Payload shift test",{"type":17,"tag":277,"props":7829,"children":7830},{},[7831],{"type":23,"value":7832},"sensitivity to center-of-mass error",{"type":17,"tag":255,"props":7834,"children":7835},{},[7836,7841],{"type":17,"tag":277,"props":7837,"children":7838},{},[7839],{"type":23,"value":7840},"Fan disturbance test",{"type":17,"tag":277,"props":7842,"children":7843},{},[7844],{"type":23,"value":7845},"disturbance rejection capability",{"type":17,"tag":255,"props":7847,"children":7848},{},[7849,7854],{"type":17,"tag":277,"props":7850,"children":7851},{},[7852],{"type":23,"value":7853},"Thrust coefficient mismatch",{"type":17,"tag":277,"props":7855,"children":7856},{},[7857],{"type":23,"value":7858},"model-error tolerance",{"type":17,"tag":255,"props":7860,"children":7861},{},[7862,7867],{"type":17,"tag":277,"props":7863,"children":7864},{},[7865],{"type":23,"value":7866},"Aggressive attitude transition",{"type":17,"tag":277,"props":7868,"children":7869},{},[7870],{"type":23,"value":7871},"coupling between translation and rotation",{"type":17,"tag":255,"props":7873,"children":7874},{},[7875,7880],{"type":17,"tag":277,"props":7876,"children":7877},{},[7878],{"type":23,"value":7879},"Repeated trajectory learning",{"type":17,"tag":277,"props":7881,"children":7882},{},[7883],{"type":23,"value":7884},"whether systematic errors can be compensated",{"type":17,"tag":136,"props":7886,"children":7887},{},[],{"type":17,"tag":140,"props":7889,"children":7891},{"id":7890},"_3-fault-diagnosis-and-fault-tolerant-control",[7892],{"type":23,"value":7893},"📈 3. Fault Diagnosis and Fault-Tolerant Control",{"type":17,"tag":18,"props":7895,"children":7896},{"align":20},[7897,7898],{"type":23,"value":24},{"type":17,"tag":26,"props":7899,"children":7902},{"src":7900,"alt":7901,"width":29},"assets\u002Ffault_control.svg","Fault diagnosis and fault-tolerant control",[],{"type":17,"tag":18,"props":7904,"children":7905},{},[7906,7908,7913,7915,7920],{"type":23,"value":7907},"Fault control is the final landing point of this project. Because an Omnicopter is over-actuated or geometrically redundant, it provides an excellent platform for studying ",{"type":17,"tag":152,"props":7909,"children":7910},{},[7911],{"type":23,"value":7912},"fault diagnosis",{"type":23,"value":7914}," and ",{"type":17,"tag":152,"props":7916,"children":7917},{},[7918],{"type":23,"value":7919},"fault-tolerant control allocation",{"type":23,"value":158},{"type":17,"tag":513,"props":7922,"children":7924},{"id":7923},"️-faults-we-care-about",[7925],{"type":23,"value":7926},"⚠️ Faults we care about",{"type":17,"tag":247,"props":7928,"children":7929},{},[7930,7951],{"type":17,"tag":251,"props":7931,"children":7932},{},[7933],{"type":17,"tag":255,"props":7934,"children":7935},{},[7936,7941,7946],{"type":17,"tag":259,"props":7937,"children":7938},{},[7939],{"type":23,"value":7940},"Fault type",{"type":17,"tag":259,"props":7942,"children":7943},{},[7944],{"type":23,"value":7945},"Example",{"type":17,"tag":259,"props":7947,"children":7948},{},[7949],{"type":23,"value":7950},"Expected symptom",{"type":17,"tag":270,"props":7952,"children":7953},{},[7954,7972,7990,8008,8026,8044,8062],{"type":17,"tag":255,"props":7955,"children":7956},{},[7957,7962,7967],{"type":17,"tag":277,"props":7958,"children":7959},{},[7960],{"type":23,"value":7961},"Motor loss of effectiveness",{"type":17,"tag":277,"props":7963,"children":7964},{},[7965],{"type":23,"value":7966},"motor produces only 70% thrust",{"type":17,"tag":277,"props":7968,"children":7969},{},[7970],{"type":23,"value":7971},"acceleration smaller than predicted",{"type":17,"tag":255,"props":7973,"children":7974},{},[7975,7980,7985],{"type":17,"tag":277,"props":7976,"children":7977},{},[7978],{"type":23,"value":7979},"ESC reversal failure",{"type":17,"tag":277,"props":7981,"children":7982},{},[7983],{"type":23,"value":7984},"motor cannot switch direction reliably",{"type":17,"tag":277,"props":7986,"children":7987},{},[7988],{"type":23,"value":7989},"large transient error near zero thrust",{"type":17,"tag":255,"props":7991,"children":7992},{},[7993,7998,8003],{"type":17,"tag":277,"props":7994,"children":7995},{},[7996],{"type":23,"value":7997},"Propeller damage",{"type":17,"tag":277,"props":7999,"children":8000},{},[8001],{"type":23,"value":8002},"reduced thrust or increased vibration",{"type":17,"tag":277,"props":8004,"children":8005},{},[8006],{"type":23,"value":8007},"residual bias + vibration signature",{"type":17,"tag":255,"props":8009,"children":8010},{},[8011,8016,8021],{"type":17,"tag":277,"props":8012,"children":8013},{},[8014],{"type":23,"value":8015},"Motor saturation",{"type":17,"tag":277,"props":8017,"children":8018},{},[8019],{"type":23,"value":8020},"command exceeds physical limit",{"type":17,"tag":277,"props":8022,"children":8023},{},[8024],{"type":23,"value":8025},"wrench tracking error",{"type":17,"tag":255,"props":8027,"children":8028},{},[8029,8034,8039],{"type":17,"tag":277,"props":8030,"children":8031},{},[8032],{"type":23,"value":8033},"IMU bias",{"type":17,"tag":277,"props":8035,"children":8036},{},[8037],{"type":23,"value":8038},"wrong acceleration \u002F attitude estimate",{"type":17,"tag":277,"props":8040,"children":8041},{},[8042],{"type":23,"value":8043},"persistent state-estimation residual",{"type":17,"tag":255,"props":8045,"children":8046},{},[8047,8052,8057],{"type":17,"tag":277,"props":8048,"children":8049},{},[8050],{"type":23,"value":8051},"Magnetometer disturbance",{"type":17,"tag":277,"props":8053,"children":8054},{},[8055],{"type":23,"value":8056},"yaw drift",{"type":17,"tag":277,"props":8058,"children":8059},{},[8060],{"type":23,"value":8061},"heading residual",{"type":17,"tag":255,"props":8063,"children":8064},{},[8065,8070,8075],{"type":17,"tag":277,"props":8066,"children":8067},{},[8068],{"type":23,"value":8069},"Battery voltage sag",{"type":17,"tag":277,"props":8071,"children":8072},{},[8073],{"type":23,"value":8074},"reduced maximum thrust",{"type":17,"tag":277,"props":8076,"children":8077},{},[8078],{"type":23,"value":8079},"growing saturation under load",{"type":17,"tag":513,"props":8081,"children":8083},{"id":8082},"fault-diagnosis-idea",[8084],{"type":23,"value":8085},"🔍 Fault diagnosis idea",{"type":17,"tag":18,"props":8087,"children":8088},{},[8089],{"type":23,"value":8090},"Use the model to predict what should happen, then compare it with what actually happens:",{"type":17,"tag":603,"props":8092,"children":8094},{"className":605,"code":8093,"language":23,"meta":7,"style":7},"motor commands\n    ↓\npredicted force \u002F torque\n    ↓\npredicted acceleration \u002F angular acceleration\n    ↓\ncompare with IMU + estimator\n    ↓\nresidual\n    ↓\nfault detection + isolation\n",[8095],{"type":17,"tag":609,"props":8096,"children":8097},{"__ignoreMap":7},[8098,8106,8113,8121,8128,8136,8143,8151,8158,8166,8173],{"type":17,"tag":613,"props":8099,"children":8100},{"class":615,"line":616},[8101],{"type":17,"tag":613,"props":8102,"children":8103},{},[8104],{"type":23,"value":8105},"motor commands\n",{"type":17,"tag":613,"props":8107,"children":8108},{"class":615,"line":625},[8109],{"type":17,"tag":613,"props":8110,"children":8111},{},[8112],{"type":23,"value":2601},{"type":17,"tag":613,"props":8114,"children":8115},{"class":615,"line":634},[8116],{"type":17,"tag":613,"props":8117,"children":8118},{},[8119],{"type":23,"value":8120},"predicted force \u002F torque\n",{"type":17,"tag":613,"props":8122,"children":8123},{"class":615,"line":643},[8124],{"type":17,"tag":613,"props":8125,"children":8126},{},[8127],{"type":23,"value":2601},{"type":17,"tag":613,"props":8129,"children":8130},{"class":615,"line":2619},[8131],{"type":17,"tag":613,"props":8132,"children":8133},{},[8134],{"type":23,"value":8135},"predicted acceleration \u002F angular acceleration\n",{"type":17,"tag":613,"props":8137,"children":8138},{"class":615,"line":2628},[8139],{"type":17,"tag":613,"props":8140,"children":8141},{},[8142],{"type":23,"value":2601},{"type":17,"tag":613,"props":8144,"children":8145},{"class":615,"line":2636},[8146],{"type":17,"tag":613,"props":8147,"children":8148},{},[8149],{"type":23,"value":8150},"compare with IMU + estimator\n",{"type":17,"tag":613,"props":8152,"children":8153},{"class":615,"line":2645},[8154],{"type":17,"tag":613,"props":8155,"children":8156},{},[8157],{"type":23,"value":2601},{"type":17,"tag":613,"props":8159,"children":8160},{"class":615,"line":2653},[8161],{"type":17,"tag":613,"props":8162,"children":8163},{},[8164],{"type":23,"value":8165},"residual\n",{"type":17,"tag":613,"props":8167,"children":8168},{"class":615,"line":4285},[8169],{"type":17,"tag":613,"props":8170,"children":8171},{},[8172],{"type":23,"value":2601},{"type":17,"tag":613,"props":8174,"children":8175},{"class":615,"line":4294},[8176],{"type":17,"tag":613,"props":8177,"children":8178},{},[8179],{"type":23,"value":8180},"fault detection + isolation\n",{"type":17,"tag":18,"props":8182,"children":8183},{},[8184],{"type":23,"value":8185},"A simple residual can be defined as:",{"type":17,"tag":613,"props":8187,"children":8189},{"className":8188},[665],[8190],{"type":17,"tag":613,"props":8191,"children":8193},{"className":8192},[670],[8194,8300],{"type":17,"tag":613,"props":8195,"children":8197},{"className":8196},[675],[8198],{"type":17,"tag":678,"props":8199,"children":8200},{"xmlns":680,"display":681},[8201],{"type":17,"tag":684,"props":8202,"children":8203},{},[8204,8295],{"type":17,"tag":688,"props":8205,"children":8206},{},[8207,8219,8223,8257,8261],{"type":17,"tag":768,"props":8208,"children":8209},{},[8210,8214],{"type":17,"tag":692,"props":8211,"children":8212},{"mathvariant":694},[8213],{"type":23,"value":787},{"type":17,"tag":692,"props":8215,"children":8216},{},[8217],{"type":23,"value":8218},"k",{"type":17,"tag":699,"props":8220,"children":8221},{},[8222],{"type":23,"value":703},{"type":17,"tag":768,"props":8224,"children":8225},{},[8226,8230],{"type":17,"tag":692,"props":8227,"children":8228},{"mathvariant":694},[8229],{"type":23,"value":86},{"type":17,"tag":688,"props":8231,"children":8232},{},[8233,8237,8241,8245,8249,8253],{"type":17,"tag":692,"props":8234,"children":8235},{},[8236],{"type":23,"value":5059},{"type":17,"tag":692,"props":8238,"children":8239},{},[8240],{"type":23,"value":4514},{"type":17,"tag":692,"props":8242,"children":8243},{},[8244],{"type":23,"value":86},{"type":17,"tag":692,"props":8246,"children":8247},{},[8248],{"type":23,"value":4519},{"type":17,"tag":699,"props":8250,"children":8251},{"separator":709},[8252],{"type":23,"value":1514},{"type":17,"tag":692,"props":8254,"children":8255},{},[8256],{"type":23,"value":8218},{"type":17,"tag":699,"props":8258,"children":8259},{},[8260],{"type":23,"value":4809},{"type":17,"tag":768,"props":8262,"children":8263},{},[8264,8268],{"type":17,"tag":692,"props":8265,"children":8266},{"mathvariant":694},[8267],{"type":23,"value":86},{"type":17,"tag":688,"props":8269,"children":8270},{},[8271,8275,8279,8283,8287,8291],{"type":17,"tag":692,"props":8272,"children":8273},{},[8274],{"type":23,"value":18},{"type":17,"tag":692,"props":8276,"children":8277},{},[8278],{"type":23,"value":787},{"type":17,"tag":692,"props":8280,"children":8281},{},[8282],{"type":23,"value":4514},{"type":17,"tag":692,"props":8284,"children":8285},{},[8286],{"type":23,"value":4509},{"type":17,"tag":699,"props":8288,"children":8289},{"separator":709},[8290],{"type":23,"value":1514},{"type":17,"tag":692,"props":8292,"children":8293},{},[8294],{"type":23,"value":8218},{"type":17,"tag":798,"props":8296,"children":8297},{"encoding":800},[8298],{"type":23,"value":8299},"\\mathbf{r}_k = \\mathbf{a}_{meas,k} - \\mathbf{a}_{pred,k}",{"type":17,"tag":613,"props":8301,"children":8303},{"className":8302,"ariaHidden":709},[807],[8304,8383,8491],{"type":17,"tag":613,"props":8305,"children":8307},{"className":8306},[812],[8308,8312,8370,8374,8379],{"type":17,"tag":613,"props":8309,"children":8311},{"className":8310,"style":2300},[817],[],{"type":17,"tag":613,"props":8313,"children":8315},{"className":8314},[823],[8316,8321],{"type":17,"tag":613,"props":8317,"children":8319},{"className":8318},[823,824],[8320],{"type":23,"value":787},{"type":17,"tag":613,"props":8322,"children":8324},{"className":8323},[1018],[8325],{"type":17,"tag":613,"props":8326,"children":8328},{"className":8327},[888,889],[8329,8359],{"type":17,"tag":613,"props":8330,"children":8332},{"className":8331},[894],[8333,8354],{"type":17,"tag":613,"props":8334,"children":8336},{"className":8335,"style":4631},[899],[8337],{"type":17,"tag":613,"props":8338,"children":8339},{"style":1795},[8340,8344],{"type":17,"tag":613,"props":8341,"children":8343},{"className":8342,"style":1040},[909],[],{"type":17,"tag":613,"props":8345,"children":8347},{"className":8346},[1045,1046,869,1047],[8348],{"type":17,"tag":613,"props":8349,"children":8352},{"className":8350,"style":8351},[823,1002,1047],"margin-right:0.0315em;",[8353],{"type":23,"value":8218},{"type":17,"tag":613,"props":8355,"children":8357},{"className":8356},[951],[8358],{"type":23,"value":954},{"type":17,"tag":613,"props":8360,"children":8362},{"className":8361},[894],[8363],{"type":17,"tag":613,"props":8364,"children":8366},{"className":8365,"style":1763},[899],[8367],{"type":17,"tag":613,"props":8368,"children":8369},{},[],{"type":17,"tag":613,"props":8371,"children":8373},{"className":8372,"style":832},[831],[],{"type":17,"tag":613,"props":8375,"children":8377},{"className":8376},[837],[8378],{"type":23,"value":703},{"type":17,"tag":613,"props":8380,"children":8382},{"className":8381,"style":832},[831],[],{"type":17,"tag":613,"props":8384,"children":8386},{"className":8385},[812],[8387,8392,8478,8482,8487],{"type":17,"tag":613,"props":8388,"children":8391},{"className":8389,"style":8390},[817],"height:0.8694em;vertical-align:-0.2861em;",[],{"type":17,"tag":613,"props":8393,"children":8395},{"className":8394},[823],[8396,8401],{"type":17,"tag":613,"props":8397,"children":8399},{"className":8398},[823,824],[8400],{"type":23,"value":86},{"type":17,"tag":613,"props":8402,"children":8404},{"className":8403},[1018],[8405],{"type":17,"tag":613,"props":8406,"children":8408},{"className":8407},[888,889],[8409,8467],{"type":17,"tag":613,"props":8410,"children":8412},{"className":8411},[894],[8413,8462],{"type":17,"tag":613,"props":8414,"children":8416},{"className":8415,"style":4631},[899],[8417],{"type":17,"tag":613,"props":8418,"children":8419},{"style":1795},[8420,8424],{"type":17,"tag":613,"props":8421,"children":8423},{"className":8422,"style":1040},[909],[],{"type":17,"tag":613,"props":8425,"children":8427},{"className":8426},[1045,1046,869,1047],[8428],{"type":17,"tag":613,"props":8429,"children":8431},{"className":8430},[823,1047],[8432,8437,8442,8447,8452,8457],{"type":17,"tag":613,"props":8433,"children":8435},{"className":8434},[823,1002,1047],[8436],{"type":23,"value":5059},{"type":17,"tag":613,"props":8438,"children":8440},{"className":8439},[823,1002,1047],[8441],{"type":23,"value":4514},{"type":17,"tag":613,"props":8443,"children":8445},{"className":8444},[823,1002,1047],[8446],{"type":23,"value":86},{"type":17,"tag":613,"props":8448,"children":8450},{"className":8449},[823,1002,1047],[8451],{"type":23,"value":4519},{"type":17,"tag":613,"props":8453,"children":8455},{"className":8454},[1829,1047],[8456],{"type":23,"value":1514},{"type":17,"tag":613,"props":8458,"children":8460},{"className":8459,"style":8351},[823,1002,1047],[8461],{"type":23,"value":8218},{"type":17,"tag":613,"props":8463,"children":8465},{"className":8464},[951],[8466],{"type":23,"value":954},{"type":17,"tag":613,"props":8468,"children":8470},{"className":8469},[894],[8471],{"type":17,"tag":613,"props":8472,"children":8474},{"className":8473,"style":1086},[899],[8475],{"type":17,"tag":613,"props":8476,"children":8477},{},[],{"type":17,"tag":613,"props":8479,"children":8481},{"className":8480,"style":2064},[831],[],{"type":17,"tag":613,"props":8483,"children":8485},{"className":8484},[2069],[8486],{"type":23,"value":4809},{"type":17,"tag":613,"props":8488,"children":8490},{"className":8489,"style":2064},[831],[],{"type":17,"tag":613,"props":8492,"children":8494},{"className":8493},[812],[8495,8500],{"type":17,"tag":613,"props":8496,"children":8499},{"className":8497,"style":8498},[817],"height:0.7305em;vertical-align:-0.2861em;",[],{"type":17,"tag":613,"props":8501,"children":8503},{"className":8502},[823],[8504,8509],{"type":17,"tag":613,"props":8505,"children":8507},{"className":8506},[823,824],[8508],{"type":23,"value":86},{"type":17,"tag":613,"props":8510,"children":8512},{"className":8511},[1018],[8513],{"type":17,"tag":613,"props":8514,"children":8516},{"className":8515},[888,889],[8517,8575],{"type":17,"tag":613,"props":8518,"children":8520},{"className":8519},[894],[8521,8570],{"type":17,"tag":613,"props":8522,"children":8524},{"className":8523,"style":4631},[899],[8525],{"type":17,"tag":613,"props":8526,"children":8527},{"style":1795},[8528,8532],{"type":17,"tag":613,"props":8529,"children":8531},{"className":8530,"style":1040},[909],[],{"type":17,"tag":613,"props":8533,"children":8535},{"className":8534},[1045,1046,869,1047],[8536],{"type":17,"tag":613,"props":8537,"children":8539},{"className":8538},[823,1047],[8540,8545,8550,8555,8560,8565],{"type":17,"tag":613,"props":8541,"children":8543},{"className":8542},[823,1002,1047],[8544],{"type":23,"value":18},{"type":17,"tag":613,"props":8546,"children":8548},{"className":8547,"style":1061},[823,1002,1047],[8549],{"type":23,"value":787},{"type":17,"tag":613,"props":8551,"children":8553},{"className":8552},[823,1002,1047],[8554],{"type":23,"value":4514},{"type":17,"tag":613,"props":8556,"children":8558},{"className":8557},[823,1002,1047],[8559],{"type":23,"value":4509},{"type":17,"tag":613,"props":8561,"children":8563},{"className":8562},[1829,1047],[8564],{"type":23,"value":1514},{"type":17,"tag":613,"props":8566,"children":8568},{"className":8567,"style":8351},[823,1002,1047],[8569],{"type":23,"value":8218},{"type":17,"tag":613,"props":8571,"children":8573},{"className":8572},[951],[8574],{"type":23,"value":954},{"type":17,"tag":613,"props":8576,"children":8578},{"className":8577},[894],[8579],{"type":17,"tag":613,"props":8580,"children":8582},{"className":8581,"style":1086},[899],[8583],{"type":17,"tag":613,"props":8584,"children":8585},{},[],{"type":17,"tag":18,"props":8587,"children":8588},{},[8589],{"type":23,"value":8590},"or at the wrench level:",{"type":17,"tag":613,"props":8592,"children":8594},{"className":8593},[665],[8595],{"type":17,"tag":613,"props":8596,"children":8598},{"className":8597},[670],[8599,8691],{"type":17,"tag":613,"props":8600,"children":8602},{"className":8601},[675],[8603],{"type":17,"tag":678,"props":8604,"children":8605},{"xmlns":680,"display":681},[8606],{"type":17,"tag":684,"props":8607,"children":8608},{},[8609,8686],{"type":17,"tag":688,"props":8610,"children":8611},{},[8612,8623,8627,8674,8678,8682],{"type":17,"tag":768,"props":8613,"children":8614},{},[8615,8619],{"type":17,"tag":692,"props":8616,"children":8617},{"mathvariant":694},[8618],{"type":23,"value":787},{"type":17,"tag":692,"props":8620,"children":8621},{},[8622],{"type":23,"value":697},{"type":17,"tag":699,"props":8624,"children":8625},{},[8626],{"type":23,"value":703},{"type":17,"tag":768,"props":8628,"children":8629},{},[8630,8634],{"type":17,"tag":692,"props":8631,"children":8632},{"mathvariant":694},[8633],{"type":23,"value":697},{"type":17,"tag":688,"props":8635,"children":8636},{},[8637,8641,8645,8650,8654,8658,8662,8666,8670],{"type":17,"tag":692,"props":8638,"children":8639},{},[8640],{"type":23,"value":4514},{"type":17,"tag":692,"props":8642,"children":8643},{},[8644],{"type":23,"value":4519},{"type":17,"tag":692,"props":8646,"children":8647},{},[8648],{"type":23,"value":8649},"t",{"type":17,"tag":692,"props":8651,"children":8652},{},[8653],{"type":23,"value":1420},{"type":17,"tag":692,"props":8655,"children":8656},{},[8657],{"type":23,"value":5059},{"type":17,"tag":692,"props":8659,"children":8660},{},[8661],{"type":23,"value":86},{"type":17,"tag":692,"props":8663,"children":8664},{},[8665],{"type":23,"value":8649},{"type":17,"tag":692,"props":8667,"children":8668},{},[8669],{"type":23,"value":4514},{"type":17,"tag":692,"props":8671,"children":8672},{},[8673],{"type":23,"value":4509},{"type":17,"tag":699,"props":8675,"children":8676},{},[8677],{"type":23,"value":4809},{"type":17,"tag":692,"props":8679,"children":8680},{},[8681],{"type":23,"value":766},{"type":17,"tag":692,"props":8683,"children":8684},{"mathvariant":694},[8685],{"type":23,"value":3666},{"type":17,"tag":798,"props":8687,"children":8688},{"encoding":800},[8689],{"type":23,"value":8690},"\\mathbf{r}_y = \\mathbf{y}_{estimated} - M\\mathbf{u}",{"type":17,"tag":613,"props":8692,"children":8694},{"className":8693,"ariaHidden":709},[807],[8695,8773,8882],{"type":17,"tag":613,"props":8696,"children":8698},{"className":8697},[812],[8699,8703,8760,8764,8769],{"type":17,"tag":613,"props":8700,"children":8702},{"className":8701,"style":8498},[817],[],{"type":17,"tag":613,"props":8704,"children":8706},{"className":8705},[823],[8707,8712],{"type":17,"tag":613,"props":8708,"children":8710},{"className":8709},[823,824],[8711],{"type":23,"value":787},{"type":17,"tag":613,"props":8713,"children":8715},{"className":8714},[1018],[8716],{"type":17,"tag":613,"props":8717,"children":8719},{"className":8718},[888,889],[8720,8749],{"type":17,"tag":613,"props":8721,"children":8723},{"className":8722},[894],[8724,8744],{"type":17,"tag":613,"props":8725,"children":8727},{"className":8726,"style":1031},[899],[8728],{"type":17,"tag":613,"props":8729,"children":8730},{"style":1795},[8731,8735],{"type":17,"tag":613,"props":8732,"children":8734},{"className":8733,"style":1040},[909],[],{"type":17,"tag":613,"props":8736,"children":8738},{"className":8737},[1045,1046,869,1047],[8739],{"type":17,"tag":613,"props":8740,"children":8742},{"className":8741,"style":5709},[823,1002,1047],[8743],{"type":23,"value":697},{"type":17,"tag":613,"props":8745,"children":8747},{"className":8746},[951],[8748],{"type":23,"value":954},{"type":17,"tag":613,"props":8750,"children":8752},{"className":8751},[894],[8753],{"type":17,"tag":613,"props":8754,"children":8756},{"className":8755,"style":1086},[899],[8757],{"type":17,"tag":613,"props":8758,"children":8759},{},[],{"type":17,"tag":613,"props":8761,"children":8763},{"className":8762,"style":832},[831],[],{"type":17,"tag":613,"props":8765,"children":8767},{"className":8766},[837],[8768],{"type":23,"value":703},{"type":17,"tag":613,"props":8770,"children":8772},{"className":8771,"style":832},[831],[],{"type":17,"tag":613,"props":8774,"children":8776},{"className":8775},[812],[8777,8782,8869,8873,8878],{"type":17,"tag":613,"props":8778,"children":8781},{"className":8779,"style":8780},[817],"height:0.7778em;vertical-align:-0.1944em;",[],{"type":17,"tag":613,"props":8783,"children":8785},{"className":8784},[823],[8786,8791],{"type":17,"tag":613,"props":8787,"children":8789},{"className":8788,"style":825},[823,824],[8790],{"type":23,"value":697},{"type":17,"tag":613,"props":8792,"children":8794},{"className":8793},[1018],[8795],{"type":17,"tag":613,"props":8796,"children":8798},{"className":8797},[888,889],[8799,8858],{"type":17,"tag":613,"props":8800,"children":8802},{"className":8801},[894],[8803,8853],{"type":17,"tag":613,"props":8804,"children":8806},{"className":8805,"style":4631},[899],[8807],{"type":17,"tag":613,"props":8808,"children":8809},{"style":4635},[8810,8814],{"type":17,"tag":613,"props":8811,"children":8813},{"className":8812,"style":1040},[909],[],{"type":17,"tag":613,"props":8815,"children":8817},{"className":8816},[1045,1046,869,1047],[8818],{"type":17,"tag":613,"props":8819,"children":8821},{"className":8820},[823,1047],[8822,8827,8832,8838,8843,8848],{"type":17,"tag":613,"props":8823,"children":8825},{"className":8824},[823,1002,1047],[8826],{"type":23,"value":4659},{"type":17,"tag":613,"props":8828,"children":8830},{"className":8829},[823,1002,1047],[8831],{"type":23,"value":8649},{"type":17,"tag":613,"props":8833,"children":8835},{"className":8834},[823,1002,1047],[8836],{"type":23,"value":8837},"ima",{"type":17,"tag":613,"props":8839,"children":8841},{"className":8840},[823,1002,1047],[8842],{"type":23,"value":8649},{"type":17,"tag":613,"props":8844,"children":8846},{"className":8845},[823,1002,1047],[8847],{"type":23,"value":4514},{"type":17,"tag":613,"props":8849,"children":8851},{"className":8850},[823,1002,1047],[8852],{"type":23,"value":4509},{"type":17,"tag":613,"props":8854,"children":8856},{"className":8855},[951],[8857],{"type":23,"value":954},{"type":17,"tag":613,"props":8859,"children":8861},{"className":8860},[894],[8862],{"type":17,"tag":613,"props":8863,"children":8865},{"className":8864,"style":1763},[899],[8866],{"type":17,"tag":613,"props":8867,"children":8868},{},[],{"type":17,"tag":613,"props":8870,"children":8872},{"className":8871,"style":2064},[831],[],{"type":17,"tag":613,"props":8874,"children":8876},{"className":8875},[2069],[8877],{"type":23,"value":4809},{"type":17,"tag":613,"props":8879,"children":8881},{"className":8880,"style":2064},[831],[],{"type":17,"tag":613,"props":8883,"children":8885},{"className":8884},[812],[8886,8890,8895],{"type":17,"tag":613,"props":8887,"children":8889},{"className":8888,"style":1385},[817],[],{"type":17,"tag":613,"props":8891,"children":8893},{"className":8892,"style":1003},[823,1002],[8894],{"type":23,"value":766},{"type":17,"tag":613,"props":8896,"children":8898},{"className":8897},[823,824],[8899],{"type":23,"value":3666},{"type":17,"tag":18,"props":8901,"children":8902},{},[8903,8905,8910],{"type":23,"value":8904},"The goal is not only to detect that something is wrong, but also to identify ",{"type":17,"tag":152,"props":8906,"children":8907},{},[8908],{"type":23,"value":8909},"which actuator or sensor is responsible",{"type":23,"value":158},{"type":17,"tag":513,"props":8912,"children":8914},{"id":8913},"fault-tolerant-reallocation",[8915],{"type":23,"value":8916},"🧩 Fault-tolerant reallocation",{"type":17,"tag":18,"props":8918,"children":8919},{},[8920],{"type":23,"value":8921},"Once a fault is identified, the allocator can be reconfigured:",{"type":17,"tag":603,"props":8923,"children":8925},{"className":605,"code":8924,"language":23,"meta":7,"style":7},"normal allocation matrix M\n        ↓ fault detected\nmodified allocation matrix M_fault\n        ↓\nnew actuator constraints\n        ↓\nredistributed motor commands\n        ↓\ndegraded but stable flight\n",[8926],{"type":17,"tag":609,"props":8927,"children":8928},{"__ignoreMap":7},[8929,8937,8945,8953,8960,8968,8975,8983,8990],{"type":17,"tag":613,"props":8930,"children":8931},{"class":615,"line":616},[8932],{"type":17,"tag":613,"props":8933,"children":8934},{},[8935],{"type":23,"value":8936},"normal allocation matrix M\n",{"type":17,"tag":613,"props":8938,"children":8939},{"class":615,"line":625},[8940],{"type":17,"tag":613,"props":8941,"children":8942},{},[8943],{"type":23,"value":8944},"        ↓ fault detected\n",{"type":17,"tag":613,"props":8946,"children":8947},{"class":615,"line":634},[8948],{"type":17,"tag":613,"props":8949,"children":8950},{},[8951],{"type":23,"value":8952},"modified allocation matrix M_fault\n",{"type":17,"tag":613,"props":8954,"children":8955},{"class":615,"line":643},[8956],{"type":17,"tag":613,"props":8957,"children":8958},{},[8959],{"type":23,"value":2917},{"type":17,"tag":613,"props":8961,"children":8962},{"class":615,"line":2619},[8963],{"type":17,"tag":613,"props":8964,"children":8965},{},[8966],{"type":23,"value":8967},"new actuator constraints\n",{"type":17,"tag":613,"props":8969,"children":8970},{"class":615,"line":2628},[8971],{"type":17,"tag":613,"props":8972,"children":8973},{},[8974],{"type":23,"value":2917},{"type":17,"tag":613,"props":8976,"children":8977},{"class":615,"line":2636},[8978],{"type":17,"tag":613,"props":8979,"children":8980},{},[8981],{"type":23,"value":8982},"redistributed motor commands\n",{"type":17,"tag":613,"props":8984,"children":8985},{"class":615,"line":2645},[8986],{"type":17,"tag":613,"props":8987,"children":8988},{},[8989],{"type":23,"value":2917},{"type":17,"tag":613,"props":8991,"children":8992},{"class":615,"line":2653},[8993],{"type":17,"tag":613,"props":8994,"children":8995},{},[8996],{"type":23,"value":8997},"degraded but stable flight\n",{"type":17,"tag":18,"props":8999,"children":9000},{},[9001],{"type":23,"value":9002},"For example, if motor 3 loses effectiveness, we can model it as:",{"type":17,"tag":613,"props":9004,"children":9006},{"className":9005},[665],[9007],{"type":17,"tag":613,"props":9008,"children":9010},{"className":9009},[670],[9011,9172],{"type":17,"tag":613,"props":9012,"children":9014},{"className":9013},[675],[9015],{"type":17,"tag":678,"props":9016,"children":9017},{"xmlns":680,"display":681},[9018],{"type":17,"tag":684,"props":9019,"children":9020},{},[9021,9167],{"type":17,"tag":688,"props":9022,"children":9023},{},[9024,9069,9073,9085,9131,9135,9138,9142,9147,9158,9162],{"type":17,"tag":768,"props":9025,"children":9026},{},[9027,9031],{"type":17,"tag":692,"props":9028,"children":9029},{"mathvariant":694},[9030],{"type":23,"value":3666},{"type":17,"tag":688,"props":9032,"children":9033},{},[9034,9038,9043,9047,9051,9055,9060,9064],{"type":17,"tag":692,"props":9035,"children":9036},{},[9037],{"type":23,"value":86},{"type":17,"tag":692,"props":9039,"children":9040},{},[9041],{"type":23,"value":9042},"c",{"type":17,"tag":692,"props":9044,"children":9045},{},[9046],{"type":23,"value":8649},{"type":17,"tag":692,"props":9048,"children":9049},{},[9050],{"type":23,"value":3666},{"type":17,"tag":692,"props":9052,"children":9053},{},[9054],{"type":23,"value":86},{"type":17,"tag":692,"props":9056,"children":9057},{},[9058],{"type":23,"value":9059},"l",{"type":17,"tag":699,"props":9061,"children":9062},{"separator":709},[9063],{"type":23,"value":1514},{"type":17,"tag":4846,"props":9065,"children":9066},{},[9067],{"type":23,"value":9068},"3",{"type":17,"tag":699,"props":9070,"children":9071},{},[9072],{"type":23,"value":703},{"type":17,"tag":768,"props":9074,"children":9075},{},[9076,9081],{"type":17,"tag":692,"props":9077,"children":9078},{},[9079],{"type":23,"value":9080},"α",{"type":17,"tag":4846,"props":9082,"children":9083},{},[9084],{"type":23,"value":9068},{"type":17,"tag":768,"props":9086,"children":9087},{},[9088,9092],{"type":17,"tag":692,"props":9089,"children":9090},{"mathvariant":694},[9091],{"type":23,"value":3666},{"type":17,"tag":688,"props":9093,"children":9094},{},[9095,9099,9103,9107,9111,9115,9119,9123,9127],{"type":17,"tag":692,"props":9096,"children":9097},{},[9098],{"type":23,"value":9042},{"type":17,"tag":692,"props":9100,"children":9101},{},[9102],{"type":23,"value":792},{"type":17,"tag":692,"props":9104,"children":9105},{},[9106],{"type":23,"value":5059},{"type":17,"tag":692,"props":9108,"children":9109},{},[9110],{"type":23,"value":5059},{"type":17,"tag":692,"props":9112,"children":9113},{},[9114],{"type":23,"value":86},{"type":17,"tag":692,"props":9116,"children":9117},{},[9118],{"type":23,"value":4982},{"type":17,"tag":692,"props":9120,"children":9121},{},[9122],{"type":23,"value":4509},{"type":17,"tag":699,"props":9124,"children":9125},{"separator":709},[9126],{"type":23,"value":1514},{"type":17,"tag":4846,"props":9128,"children":9129},{},[9130],{"type":23,"value":9068},{"type":17,"tag":699,"props":9132,"children":9133},{"separator":709},[9134],{"type":23,"value":1514},{"type":17,"tag":831,"props":9136,"children":9137},{"width":717},[],{"type":17,"tag":4846,"props":9139,"children":9140},{},[9141],{"type":23,"value":730},{"type":17,"tag":699,"props":9143,"children":9144},{},[9145],{"type":23,"value":9146},"\u003C",{"type":17,"tag":768,"props":9148,"children":9149},{},[9150,9154],{"type":17,"tag":692,"props":9151,"children":9152},{},[9153],{"type":23,"value":9080},{"type":17,"tag":4846,"props":9155,"children":9156},{},[9157],{"type":23,"value":9068},{"type":17,"tag":699,"props":9159,"children":9160},{},[9161],{"type":23,"value":9146},{"type":17,"tag":4846,"props":9163,"children":9164},{},[9165],{"type":23,"value":9166},"1",{"type":17,"tag":798,"props":9168,"children":9169},{"encoding":800},[9170],{"type":23,"value":9171},"\\mathbf{u}_{actual,3} = \\alpha_3 \\mathbf{u}_{command,3},\n\\quad 0 \u003C \\alpha_3 \u003C 1",{"type":17,"tag":613,"props":9173,"children":9175},{"className":9174,"ariaHidden":709},[807],[9176,9294,9477,9556],{"type":17,"tag":613,"props":9177,"children":9179},{"className":9178},[812],[9180,9184,9281,9285,9290],{"type":17,"tag":613,"props":9181,"children":9183},{"className":9182,"style":8498},[817],[],{"type":17,"tag":613,"props":9185,"children":9187},{"className":9186},[823],[9188,9193],{"type":17,"tag":613,"props":9189,"children":9191},{"className":9190},[823,824],[9192],{"type":23,"value":3666},{"type":17,"tag":613,"props":9194,"children":9196},{"className":9195},[1018],[9197],{"type":17,"tag":613,"props":9198,"children":9200},{"className":9199},[888,889],[9201,9270],{"type":17,"tag":613,"props":9202,"children":9204},{"className":9203},[894],[9205,9265],{"type":17,"tag":613,"props":9206,"children":9208},{"className":9207,"style":4631},[899],[9209],{"type":17,"tag":613,"props":9210,"children":9211},{"style":1795},[9212,9216],{"type":17,"tag":613,"props":9213,"children":9215},{"className":9214,"style":1040},[909],[],{"type":17,"tag":613,"props":9217,"children":9219},{"className":9218},[1045,1046,869,1047],[9220],{"type":17,"tag":613,"props":9221,"children":9223},{"className":9222},[823,1047],[9224,9229,9234,9239,9244,9249,9255,9260],{"type":17,"tag":613,"props":9225,"children":9227},{"className":9226},[823,1002,1047],[9228],{"type":23,"value":86},{"type":17,"tag":613,"props":9230,"children":9232},{"className":9231},[823,1002,1047],[9233],{"type":23,"value":9042},{"type":17,"tag":613,"props":9235,"children":9237},{"className":9236},[823,1002,1047],[9238],{"type":23,"value":8649},{"type":17,"tag":613,"props":9240,"children":9242},{"className":9241},[823,1002,1047],[9243],{"type":23,"value":3666},{"type":17,"tag":613,"props":9245,"children":9247},{"className":9246},[823,1002,1047],[9248],{"type":23,"value":86},{"type":17,"tag":613,"props":9250,"children":9253},{"className":9251,"style":9252},[823,1002,1047],"margin-right:0.0197em;",[9254],{"type":23,"value":9059},{"type":17,"tag":613,"props":9256,"children":9258},{"className":9257},[1829,1047],[9259],{"type":23,"value":1514},{"type":17,"tag":613,"props":9261,"children":9263},{"className":9262},[823,1047],[9264],{"type":23,"value":9068},{"type":17,"tag":613,"props":9266,"children":9268},{"className":9267},[951],[9269],{"type":23,"value":954},{"type":17,"tag":613,"props":9271,"children":9273},{"className":9272},[894],[9274],{"type":17,"tag":613,"props":9275,"children":9277},{"className":9276,"style":1086},[899],[9278],{"type":17,"tag":613,"props":9279,"children":9280},{},[],{"type":17,"tag":613,"props":9282,"children":9284},{"className":9283,"style":832},[831],[],{"type":17,"tag":613,"props":9286,"children":9288},{"className":9287},[837],[9289],{"type":23,"value":703},{"type":17,"tag":613,"props":9291,"children":9293},{"className":9292,"style":832},[831],[],{"type":17,"tag":613,"props":9295,"children":9297},{"className":9296},[812],[9298,9303,9363,9446,9451,9455,9459,9464,9468,9473],{"type":17,"tag":613,"props":9299,"children":9302},{"className":9300,"style":9301},[817],"height:0.9305em;vertical-align:-0.2861em;",[],{"type":17,"tag":613,"props":9304,"children":9306},{"className":9305},[823],[9307,9313],{"type":17,"tag":613,"props":9308,"children":9311},{"className":9309,"style":9310},[823,1002],"margin-right:0.0037em;",[9312],{"type":23,"value":9080},{"type":17,"tag":613,"props":9314,"children":9316},{"className":9315},[1018],[9317],{"type":17,"tag":613,"props":9318,"children":9320},{"className":9319},[888,889],[9321,9352],{"type":17,"tag":613,"props":9322,"children":9324},{"className":9323},[894],[9325,9347],{"type":17,"tag":613,"props":9326,"children":9329},{"className":9327,"style":9328},[899],"height:0.3011em;",[9330],{"type":17,"tag":613,"props":9331,"children":9333},{"style":9332},"top:-2.55em;margin-left:-0.0037em;margin-right:0.05em;",[9334,9338],{"type":17,"tag":613,"props":9335,"children":9337},{"className":9336,"style":1040},[909],[],{"type":17,"tag":613,"props":9339,"children":9341},{"className":9340},[1045,1046,869,1047],[9342],{"type":17,"tag":613,"props":9343,"children":9345},{"className":9344},[823,1047],[9346],{"type":23,"value":9068},{"type":17,"tag":613,"props":9348,"children":9350},{"className":9349},[951],[9351],{"type":23,"value":954},{"type":17,"tag":613,"props":9353,"children":9355},{"className":9354},[894],[9356],{"type":17,"tag":613,"props":9357,"children":9359},{"className":9358,"style":1763},[899],[9360],{"type":17,"tag":613,"props":9361,"children":9362},{},[],{"type":17,"tag":613,"props":9364,"children":9366},{"className":9365},[823],[9367,9372],{"type":17,"tag":613,"props":9368,"children":9370},{"className":9369},[823,824],[9371],{"type":23,"value":3666},{"type":17,"tag":613,"props":9373,"children":9375},{"className":9374},[1018],[9376],{"type":17,"tag":613,"props":9377,"children":9379},{"className":9378},[888,889],[9380,9435],{"type":17,"tag":613,"props":9381,"children":9383},{"className":9382},[894],[9384,9430],{"type":17,"tag":613,"props":9385,"children":9387},{"className":9386,"style":4631},[899],[9388],{"type":17,"tag":613,"props":9389,"children":9390},{"style":1795},[9391,9395],{"type":17,"tag":613,"props":9392,"children":9394},{"className":9393,"style":1040},[909],[],{"type":17,"tag":613,"props":9396,"children":9398},{"className":9397},[1045,1046,869,1047],[9399],{"type":17,"tag":613,"props":9400,"children":9402},{"className":9401},[823,1047],[9403,9409,9415,9420,9425],{"type":17,"tag":613,"props":9404,"children":9406},{"className":9405},[823,1002,1047],[9407],{"type":23,"value":9408},"co",{"type":17,"tag":613,"props":9410,"children":9412},{"className":9411},[823,1002,1047],[9413],{"type":23,"value":9414},"mman",{"type":17,"tag":613,"props":9416,"children":9418},{"className":9417},[823,1002,1047],[9419],{"type":23,"value":4509},{"type":17,"tag":613,"props":9421,"children":9423},{"className":9422},[1829,1047],[9424],{"type":23,"value":1514},{"type":17,"tag":613,"props":9426,"children":9428},{"className":9427},[823,1047],[9429],{"type":23,"value":9068},{"type":17,"tag":613,"props":9431,"children":9433},{"className":9432},[951],[9434],{"type":23,"value":954},{"type":17,"tag":613,"props":9436,"children":9438},{"className":9437},[894],[9439],{"type":17,"tag":613,"props":9440,"children":9442},{"className":9441,"style":1086},[899],[9443],{"type":17,"tag":613,"props":9444,"children":9445},{},[],{"type":17,"tag":613,"props":9447,"children":9449},{"className":9448},[1829],[9450],{"type":23,"value":1514},{"type":17,"tag":613,"props":9452,"children":9454},{"className":9453,"style":5352},[831],[],{"type":17,"tag":613,"props":9456,"children":9458},{"className":9457,"style":1705},[831],[],{"type":17,"tag":613,"props":9460,"children":9462},{"className":9461},[823],[9463],{"type":23,"value":730},{"type":17,"tag":613,"props":9465,"children":9467},{"className":9466,"style":832},[831],[],{"type":17,"tag":613,"props":9469,"children":9471},{"className":9470},[837],[9472],{"type":23,"value":9146},{"type":17,"tag":613,"props":9474,"children":9476},{"className":9475,"style":832},[831],[],{"type":17,"tag":613,"props":9478,"children":9480},{"className":9479},[812],[9481,9486,9543,9547,9552],{"type":17,"tag":613,"props":9482,"children":9485},{"className":9483,"style":9484},[817],"height:0.6891em;vertical-align:-0.15em;",[],{"type":17,"tag":613,"props":9487,"children":9489},{"className":9488},[823],[9490,9495],{"type":17,"tag":613,"props":9491,"children":9493},{"className":9492,"style":9310},[823,1002],[9494],{"type":23,"value":9080},{"type":17,"tag":613,"props":9496,"children":9498},{"className":9497},[1018],[9499],{"type":17,"tag":613,"props":9500,"children":9502},{"className":9501},[888,889],[9503,9532],{"type":17,"tag":613,"props":9504,"children":9506},{"className":9505},[894],[9507,9527],{"type":17,"tag":613,"props":9508,"children":9510},{"className":9509,"style":9328},[899],[9511],{"type":17,"tag":613,"props":9512,"children":9513},{"style":9332},[9514,9518],{"type":17,"tag":613,"props":9515,"children":9517},{"className":9516,"style":1040},[909],[],{"type":17,"tag":613,"props":9519,"children":9521},{"className":9520},[1045,1046,869,1047],[9522],{"type":17,"tag":613,"props":9523,"children":9525},{"className":9524},[823,1047],[9526],{"type":23,"value":9068},{"type":17,"tag":613,"props":9528,"children":9530},{"className":9529},[951],[9531],{"type":23,"value":954},{"type":17,"tag":613,"props":9533,"children":9535},{"className":9534},[894],[9536],{"type":17,"tag":613,"props":9537,"children":9539},{"className":9538,"style":1763},[899],[9540],{"type":17,"tag":613,"props":9541,"children":9542},{},[],{"type":17,"tag":613,"props":9544,"children":9546},{"className":9545,"style":832},[831],[],{"type":17,"tag":613,"props":9548,"children":9550},{"className":9549},[837],[9551],{"type":23,"value":9146},{"type":17,"tag":613,"props":9553,"children":9555},{"className":9554,"style":832},[831],[],{"type":17,"tag":613,"props":9557,"children":9559},{"className":9558},[812],[9560,9565],{"type":17,"tag":613,"props":9561,"children":9564},{"className":9562,"style":9563},[817],"height:0.6444em;",[],{"type":17,"tag":613,"props":9566,"children":9568},{"className":9567},[823],[9569],{"type":23,"value":9166},{"type":17,"tag":18,"props":9571,"children":9572},{},[9573],{"type":23,"value":9574},"Then the allocator should avoid relying too much on motor 3 and redistribute the remaining wrench among healthy motors.",{"type":17,"tag":513,"props":9576,"children":9578},{"id":9577},"fault-control-experiments",[9579],{"type":23,"value":9580},"🧪 Fault-control experiments",{"type":17,"tag":247,"props":9582,"children":9583},{},[9584,9604],{"type":17,"tag":251,"props":9585,"children":9586},{},[9587],{"type":17,"tag":255,"props":9588,"children":9589},{},[9590,9595,9599],{"type":17,"tag":259,"props":9591,"children":9592},{},[9593],{"type":23,"value":9594},"Stage",{"type":17,"tag":259,"props":9596,"children":9597},{},[9598],{"type":23,"value":7358},{"type":17,"tag":259,"props":9600,"children":9601},{},[9602],{"type":23,"value":9603},"Safety level",{"type":17,"tag":270,"props":9605,"children":9606},{},[9607,9625,9642,9660,9678],{"type":17,"tag":255,"props":9608,"children":9609},{},[9610,9615,9620],{"type":17,"tag":277,"props":9611,"children":9612},{},[9613],{"type":23,"value":9614},"Simulation",{"type":17,"tag":277,"props":9616,"children":9617},{},[9618],{"type":23,"value":9619},"inject motor scaling faults",{"type":17,"tag":277,"props":9621,"children":9622},{},[9623],{"type":23,"value":9624},"safe",{"type":17,"tag":255,"props":9626,"children":9627},{},[9628,9633,9638],{"type":17,"tag":277,"props":9629,"children":9630},{},[9631],{"type":23,"value":9632},"Bench test",{"type":17,"tag":277,"props":9634,"children":9635},{},[9636],{"type":23,"value":9637},"command-limited motor degradation",{"type":17,"tag":277,"props":9639,"children":9640},{},[9641],{"type":23,"value":9624},{"type":17,"tag":255,"props":9643,"children":9644},{},[9645,9650,9655],{"type":17,"tag":277,"props":9646,"children":9647},{},[9648],{"type":23,"value":9649},"Tethered flight",{"type":17,"tag":277,"props":9651,"children":9652},{},[9653],{"type":23,"value":9654},"reduced authority on one motor",{"type":17,"tag":277,"props":9656,"children":9657},{},[9658],{"type":23,"value":9659},"medium",{"type":17,"tag":255,"props":9661,"children":9662},{},[9663,9668,9673],{"type":17,"tag":277,"props":9664,"children":9665},{},[9666],{"type":23,"value":9667},"Free flight",{"type":17,"tag":277,"props":9669,"children":9670},{},[9671],{"type":23,"value":9672},"mild degradation with recovery",{"type":17,"tag":277,"props":9674,"children":9675},{},[9676],{"type":23,"value":9677},"high caution",{"type":17,"tag":255,"props":9679,"children":9680},{},[9681,9686,9691],{"type":17,"tag":277,"props":9682,"children":9683},{},[9684],{"type":23,"value":9685},"Comparative study",{"type":17,"tag":277,"props":9687,"children":9688},{},[9689],{"type":23,"value":9690},"ETH vs Lynchpin fault tolerance",{"type":17,"tag":277,"props":9692,"children":9693},{},[9694],{"type":23,"value":9695},"analysis + simulation first",{"type":17,"tag":136,"props":9697,"children":9698},{},[],{"type":17,"tag":140,"props":9700,"children":9702},{"id":9701},"experiment-plan",[9703],{"type":23,"value":9704},"🧪 Experiment Plan",{"type":17,"tag":513,"props":9706,"children":9708},{"id":9707},"phase-1-safe-hardware-validation",[9709],{"type":23,"value":9710},"Phase 1 — Safe hardware validation",{"type":17,"tag":172,"props":9712,"children":9713},{},[9714,9719,9724,9729],{"type":17,"tag":176,"props":9715,"children":9716},{},[9717],{"type":23,"value":9718},"Verify motor order and thrust directions.",{"type":17,"tag":176,"props":9720,"children":9721},{},[9722],{"type":23,"value":9723},"Confirm ESC 3D \u002F bidirectional mode behavior.",{"type":17,"tag":176,"props":9725,"children":9726},{},[9727],{"type":23,"value":9728},"Check vibration, current draw, and thermal behavior.",{"type":17,"tag":176,"props":9730,"children":9731},{},[9732],{"type":23,"value":9733},"Record motor command, RPM\u002Fcurrent if available, IMU data, and battery voltage.",{"type":17,"tag":513,"props":9735,"children":9737},{"id":9736},"phase-2-model-identification",[9738],{"type":23,"value":9739},"Phase 2 — Model identification",{"type":17,"tag":172,"props":9741,"children":9742},{},[9743,9791,9796,9801],{"type":17,"tag":176,"props":9744,"children":9745},{},[9746,9748,9790],{"type":23,"value":9747},"Measure geometry and build ",{"type":17,"tag":613,"props":9749,"children":9751},{"className":9750},[670],[9752,9773],{"type":17,"tag":613,"props":9753,"children":9755},{"className":9754},[675],[9756],{"type":17,"tag":678,"props":9757,"children":9758},{"xmlns":680},[9759],{"type":17,"tag":684,"props":9760,"children":9761},{},[9762,9769],{"type":17,"tag":688,"props":9763,"children":9764},{},[9765],{"type":17,"tag":692,"props":9766,"children":9767},{},[9768],{"type":23,"value":766},{"type":17,"tag":798,"props":9770,"children":9771},{"encoding":800},[9772],{"type":23,"value":766},{"type":17,"tag":613,"props":9774,"children":9776},{"className":9775,"ariaHidden":709},[807],[9777],{"type":17,"tag":613,"props":9778,"children":9780},{"className":9779},[812],[9781,9785],{"type":17,"tag":613,"props":9782,"children":9784},{"className":9783,"style":1385},[817],[],{"type":17,"tag":613,"props":9786,"children":9788},{"className":9787,"style":1003},[823,1002],[9789],{"type":23,"value":766},{"type":23,"value":158},{"type":17,"tag":176,"props":9792,"children":9793},{},[9794],{"type":23,"value":9795},"Estimate thrust coefficients.",{"type":17,"tag":176,"props":9797,"children":9798},{},[9799],{"type":23,"value":9800},"Identify actuator delay and reversal timing.",{"type":17,"tag":176,"props":9802,"children":9803},{},[9804],{"type":23,"value":9805},"Validate predicted acceleration against logs.",{"type":17,"tag":513,"props":9807,"children":9809},{"id":9808},"phase-3-control-allocation",[9810],{"type":23,"value":9811},"Phase 3 — Control allocation",{"type":17,"tag":172,"props":9813,"children":9814},{},[9815,9820,9825,9830],{"type":17,"tag":176,"props":9816,"children":9817},{},[9818],{"type":23,"value":9819},"Implement pseudo-inverse allocation as baseline.",{"type":17,"tag":176,"props":9821,"children":9822},{},[9823],{"type":23,"value":9824},"Implement constrained QP allocation.",{"type":17,"tag":176,"props":9826,"children":9827},{},[9828],{"type":23,"value":9829},"Add saturation and rate-limit handling.",{"type":17,"tag":176,"props":9831,"children":9832},{},[9833],{"type":23,"value":9834},"Add reversal penalty and energy penalty.",{"type":17,"tag":513,"props":9836,"children":9838},{"id":9837},"phase-4-robust-control",[9839],{"type":23,"value":9840},"Phase 4 — Robust control",{"type":17,"tag":172,"props":9842,"children":9843},{},[9844,9849,9854],{"type":17,"tag":176,"props":9845,"children":9846},{},[9847],{"type":23,"value":9848},"Add disturbance observer or robust feedback layer.",{"type":17,"tag":176,"props":9850,"children":9851},{},[9852],{"type":23,"value":9853},"Test against payload shift and external disturbance.",{"type":17,"tag":176,"props":9855,"children":9856},{},[9857],{"type":23,"value":9858},"Compare nominal controller vs. robust controller.",{"type":17,"tag":513,"props":9860,"children":9862},{"id":9861},"phase-5-fault-diagnosis-and-recovery",[9863],{"type":23,"value":9864},"Phase 5 — Fault diagnosis and recovery",{"type":17,"tag":172,"props":9866,"children":9867},{},[9868,9873,9878,9883],{"type":17,"tag":176,"props":9869,"children":9870},{},[9871],{"type":23,"value":9872},"Design residual generator.",{"type":17,"tag":176,"props":9874,"children":9875},{},[9876],{"type":23,"value":9877},"Inject software faults in simulation.",{"type":17,"tag":176,"props":9879,"children":9880},{},[9881],{"type":23,"value":9882},"Validate detection thresholds.",{"type":17,"tag":176,"props":9884,"children":9885},{},[9886],{"type":23,"value":9887},"Reconfigure allocation after detected faults.",{"type":17,"tag":136,"props":9889,"children":9890},{},[],{"type":17,"tag":140,"props":9892,"children":9894},{"id":9893},"suggested-repository-structure",[9895],{"type":23,"value":9896},"🧰 Suggested Repository Structure",{"type":17,"tag":18,"props":9898,"children":9899},{},[9900],{"type":23,"value":9901},"Inspired by robotics course\u002Fproject repositories, this repository should separate documentation, hardware, control code, simulation, experiments, and references.",{"type":17,"tag":603,"props":9903,"children":9905},{"className":605,"code":9904,"language":23,"meta":7,"style":7},"omnicopter-control-research\u002F\n├── README.md\n├── assets\u002F\n│   ├── omnicopter_banner.svg\n│   ├── eth_cube_geometry.svg\n│   ├── lynchpin_geometry.svg\n│   ├── control_stack.svg\n│   ├── fault_control.svg\n│   ├── research_roadmap.svg\n│   ├── hardware_prototype.jpg\n│   └── bench_test_thumbnail.jpg\n├── docs\u002F\n│   ├── eth_configuration.md\n│   ├── lynchpin_configuration.md\n│   ├── modeling_notes.md\n│   ├── control_allocation.md\n│   ├── robust_control.md\n│   ├── fault_diagnosis.md\n│   ├── experiment_logbook.md\n│   └── image_generation_prompts.md\n├── hardware\u002F\n│   ├── bom.md\n│   ├── wiring.md\n│   ├── esc_configuration.md\n│   ├── safety_checklist.md\n│   └── cad\u002F\n├── firmware\u002F\n│   ├── px4_notes.md\n│   ├── ardupilot_notes.md\n│   └── parameters\u002F\n├── simulation\u002F\n│   ├── gazebo\u002F\n│   ├── matlab\u002F\n│   └── python\u002F\n├── control\u002F\n│   ├── allocation\u002F\n│   ├── mpc\u002F\n│   ├── robust_control\u002F\n│   └── fault_tolerant_control\u002F\n├── experiments\u002F\n│   ├── bench_tests\u002F\n│   ├── tethered_tests\u002F\n│   ├── flight_tests\u002F\n│   └── fault_injection\u002F\n└── references\u002F\n    ├── papers.md\n    └── links.md\n",[9906],{"type":17,"tag":609,"props":9907,"children":9908},{"__ignoreMap":7},[9909,9917,9925,9933,9941,9949,9957,9965,9973,9981,9989,9997,10005,10013,10021,10029,10037,10045,10054,10063,10072,10081,10090,10099,10108,10117,10126,10135,10144,10153,10162,10171,10180,10189,10198,10207,10216,10225,10234,10243,10252,10261,10270,10279,10288,10297,10306],{"type":17,"tag":613,"props":9910,"children":9911},{"class":615,"line":616},[9912],{"type":17,"tag":613,"props":9913,"children":9914},{},[9915],{"type":23,"value":9916},"omnicopter-control-research\u002F\n",{"type":17,"tag":613,"props":9918,"children":9919},{"class":615,"line":625},[9920],{"type":17,"tag":613,"props":9921,"children":9922},{},[9923],{"type":23,"value":9924},"├── README.md\n",{"type":17,"tag":613,"props":9926,"children":9927},{"class":615,"line":634},[9928],{"type":17,"tag":613,"props":9929,"children":9930},{},[9931],{"type":23,"value":9932},"├── assets\u002F\n",{"type":17,"tag":613,"props":9934,"children":9935},{"class":615,"line":643},[9936],{"type":17,"tag":613,"props":9937,"children":9938},{},[9939],{"type":23,"value":9940},"│   ├── omnicopter_banner.svg\n",{"type":17,"tag":613,"props":9942,"children":9943},{"class":615,"line":2619},[9944],{"type":17,"tag":613,"props":9945,"children":9946},{},[9947],{"type":23,"value":9948},"│   ├── eth_cube_geometry.svg\n",{"type":17,"tag":613,"props":9950,"children":9951},{"class":615,"line":2628},[9952],{"type":17,"tag":613,"props":9953,"children":9954},{},[9955],{"type":23,"value":9956},"│   ├── lynchpin_geometry.svg\n",{"type":17,"tag":613,"props":9958,"children":9959},{"class":615,"line":2636},[9960],{"type":17,"tag":613,"props":9961,"children":9962},{},[9963],{"type":23,"value":9964},"│   ├── control_stack.svg\n",{"type":17,"tag":613,"props":9966,"children":9967},{"class":615,"line":2645},[9968],{"type":17,"tag":613,"props":9969,"children":9970},{},[9971],{"type":23,"value":9972},"│   ├── fault_control.svg\n",{"type":17,"tag":613,"props":9974,"children":9975},{"class":615,"line":2653},[9976],{"type":17,"tag":613,"props":9977,"children":9978},{},[9979],{"type":23,"value":9980},"│   ├── research_roadmap.svg\n",{"type":17,"tag":613,"props":9982,"children":9983},{"class":615,"line":4285},[9984],{"type":17,"tag":613,"props":9985,"children":9986},{},[9987],{"type":23,"value":9988},"│   ├── hardware_prototype.jpg\n",{"type":17,"tag":613,"props":9990,"children":9991},{"class":615,"line":4294},[9992],{"type":17,"tag":613,"props":9993,"children":9994},{},[9995],{"type":23,"value":9996},"│   └── bench_test_thumbnail.jpg\n",{"type":17,"tag":613,"props":9998,"children":9999},{"class":615,"line":4303},[10000],{"type":17,"tag":613,"props":10001,"children":10002},{},[10003],{"type":23,"value":10004},"├── docs\u002F\n",{"type":17,"tag":613,"props":10006,"children":10007},{"class":615,"line":4311},[10008],{"type":17,"tag":613,"props":10009,"children":10010},{},[10011],{"type":23,"value":10012},"│   ├── eth_configuration.md\n",{"type":17,"tag":613,"props":10014,"children":10015},{"class":615,"line":4320},[10016],{"type":17,"tag":613,"props":10017,"children":10018},{},[10019],{"type":23,"value":10020},"│   ├── lynchpin_configuration.md\n",{"type":17,"tag":613,"props":10022,"children":10023},{"class":615,"line":4329},[10024],{"type":17,"tag":613,"props":10025,"children":10026},{},[10027],{"type":23,"value":10028},"│   ├── modeling_notes.md\n",{"type":17,"tag":613,"props":10030,"children":10031},{"class":615,"line":4337},[10032],{"type":17,"tag":613,"props":10033,"children":10034},{},[10035],{"type":23,"value":10036},"│   ├── control_allocation.md\n",{"type":17,"tag":613,"props":10038,"children":10039},{"class":615,"line":4346},[10040],{"type":17,"tag":613,"props":10041,"children":10042},{},[10043],{"type":23,"value":10044},"│   ├── robust_control.md\n",{"type":17,"tag":613,"props":10046,"children":10048},{"class":615,"line":10047},18,[10049],{"type":17,"tag":613,"props":10050,"children":10051},{},[10052],{"type":23,"value":10053},"│   ├── fault_diagnosis.md\n",{"type":17,"tag":613,"props":10055,"children":10057},{"class":615,"line":10056},19,[10058],{"type":17,"tag":613,"props":10059,"children":10060},{},[10061],{"type":23,"value":10062},"│   ├── experiment_logbook.md\n",{"type":17,"tag":613,"props":10064,"children":10066},{"class":615,"line":10065},20,[10067],{"type":17,"tag":613,"props":10068,"children":10069},{},[10070],{"type":23,"value":10071},"│   └── image_generation_prompts.md\n",{"type":17,"tag":613,"props":10073,"children":10075},{"class":615,"line":10074},21,[10076],{"type":17,"tag":613,"props":10077,"children":10078},{},[10079],{"type":23,"value":10080},"├── hardware\u002F\n",{"type":17,"tag":613,"props":10082,"children":10084},{"class":615,"line":10083},22,[10085],{"type":17,"tag":613,"props":10086,"children":10087},{},[10088],{"type":23,"value":10089},"│   ├── bom.md\n",{"type":17,"tag":613,"props":10091,"children":10093},{"class":615,"line":10092},23,[10094],{"type":17,"tag":613,"props":10095,"children":10096},{},[10097],{"type":23,"value":10098},"│   ├── wiring.md\n",{"type":17,"tag":613,"props":10100,"children":10102},{"class":615,"line":10101},24,[10103],{"type":17,"tag":613,"props":10104,"children":10105},{},[10106],{"type":23,"value":10107},"│   ├── esc_configuration.md\n",{"type":17,"tag":613,"props":10109,"children":10111},{"class":615,"line":10110},25,[10112],{"type":17,"tag":613,"props":10113,"children":10114},{},[10115],{"type":23,"value":10116},"│   ├── safety_checklist.md\n",{"type":17,"tag":613,"props":10118,"children":10120},{"class":615,"line":10119},26,[10121],{"type":17,"tag":613,"props":10122,"children":10123},{},[10124],{"type":23,"value":10125},"│   └── cad\u002F\n",{"type":17,"tag":613,"props":10127,"children":10129},{"class":615,"line":10128},27,[10130],{"type":17,"tag":613,"props":10131,"children":10132},{},[10133],{"type":23,"value":10134},"├── firmware\u002F\n",{"type":17,"tag":613,"props":10136,"children":10138},{"class":615,"line":10137},28,[10139],{"type":17,"tag":613,"props":10140,"children":10141},{},[10142],{"type":23,"value":10143},"│   ├── px4_notes.md\n",{"type":17,"tag":613,"props":10145,"children":10147},{"class":615,"line":10146},29,[10148],{"type":17,"tag":613,"props":10149,"children":10150},{},[10151],{"type":23,"value":10152},"│   ├── ardupilot_notes.md\n",{"type":17,"tag":613,"props":10154,"children":10156},{"class":615,"line":10155},30,[10157],{"type":17,"tag":613,"props":10158,"children":10159},{},[10160],{"type":23,"value":10161},"│   └── parameters\u002F\n",{"type":17,"tag":613,"props":10163,"children":10165},{"class":615,"line":10164},31,[10166],{"type":17,"tag":613,"props":10167,"children":10168},{},[10169],{"type":23,"value":10170},"├── simulation\u002F\n",{"type":17,"tag":613,"props":10172,"children":10174},{"class":615,"line":10173},32,[10175],{"type":17,"tag":613,"props":10176,"children":10177},{},[10178],{"type":23,"value":10179},"│   ├── gazebo\u002F\n",{"type":17,"tag":613,"props":10181,"children":10183},{"class":615,"line":10182},33,[10184],{"type":17,"tag":613,"props":10185,"children":10186},{},[10187],{"type":23,"value":10188},"│   ├── matlab\u002F\n",{"type":17,"tag":613,"props":10190,"children":10192},{"class":615,"line":10191},34,[10193],{"type":17,"tag":613,"props":10194,"children":10195},{},[10196],{"type":23,"value":10197},"│   └── python\u002F\n",{"type":17,"tag":613,"props":10199,"children":10201},{"class":615,"line":10200},35,[10202],{"type":17,"tag":613,"props":10203,"children":10204},{},[10205],{"type":23,"value":10206},"├── control\u002F\n",{"type":17,"tag":613,"props":10208,"children":10210},{"class":615,"line":10209},36,[10211],{"type":17,"tag":613,"props":10212,"children":10213},{},[10214],{"type":23,"value":10215},"│   ├── allocation\u002F\n",{"type":17,"tag":613,"props":10217,"children":10219},{"class":615,"line":10218},37,[10220],{"type":17,"tag":613,"props":10221,"children":10222},{},[10223],{"type":23,"value":10224},"│   ├── mpc\u002F\n",{"type":17,"tag":613,"props":10226,"children":10228},{"class":615,"line":10227},38,[10229],{"type":17,"tag":613,"props":10230,"children":10231},{},[10232],{"type":23,"value":10233},"│   ├── robust_control\u002F\n",{"type":17,"tag":613,"props":10235,"children":10237},{"class":615,"line":10236},39,[10238],{"type":17,"tag":613,"props":10239,"children":10240},{},[10241],{"type":23,"value":10242},"│   └── fault_tolerant_control\u002F\n",{"type":17,"tag":613,"props":10244,"children":10246},{"class":615,"line":10245},40,[10247],{"type":17,"tag":613,"props":10248,"children":10249},{},[10250],{"type":23,"value":10251},"├── experiments\u002F\n",{"type":17,"tag":613,"props":10253,"children":10255},{"class":615,"line":10254},41,[10256],{"type":17,"tag":613,"props":10257,"children":10258},{},[10259],{"type":23,"value":10260},"│   ├── bench_tests\u002F\n",{"type":17,"tag":613,"props":10262,"children":10264},{"class":615,"line":10263},42,[10265],{"type":17,"tag":613,"props":10266,"children":10267},{},[10268],{"type":23,"value":10269},"│   ├── tethered_tests\u002F\n",{"type":17,"tag":613,"props":10271,"children":10273},{"class":615,"line":10272},43,[10274],{"type":17,"tag":613,"props":10275,"children":10276},{},[10277],{"type":23,"value":10278},"│   ├── flight_tests\u002F\n",{"type":17,"tag":613,"props":10280,"children":10282},{"class":615,"line":10281},44,[10283],{"type":17,"tag":613,"props":10284,"children":10285},{},[10286],{"type":23,"value":10287},"│   └── fault_injection\u002F\n",{"type":17,"tag":613,"props":10289,"children":10291},{"class":615,"line":10290},45,[10292],{"type":17,"tag":613,"props":10293,"children":10294},{},[10295],{"type":23,"value":10296},"└── references\u002F\n",{"type":17,"tag":613,"props":10298,"children":10300},{"class":615,"line":10299},46,[10301],{"type":17,"tag":613,"props":10302,"children":10303},{},[10304],{"type":23,"value":10305},"    ├── papers.md\n",{"type":17,"tag":613,"props":10307,"children":10309},{"class":615,"line":10308},47,[10310],{"type":17,"tag":613,"props":10311,"children":10312},{},[10313],{"type":23,"value":10314},"    └── links.md\n",{"type":17,"tag":136,"props":10316,"children":10317},{},[],{"type":17,"tag":140,"props":10319,"children":10321},{"id":10320},"safety-rules",[10322],{"type":23,"value":10323},"✅ Safety Rules",{"type":17,"tag":18,"props":10325,"children":10326},{},[10327],{"type":23,"value":10328},"Omnicopters are experimental aerial vehicles with bidirectional thrust. Treat every test as high-risk.",{"type":17,"tag":172,"props":10330,"children":10331},{},[10332,10337,10342,10347,10352,10357,10362,10367],{"type":17,"tag":176,"props":10333,"children":10334},{},[10335],{"type":23,"value":10336},"🧤 Remove propellers during firmware, ESC, and motor-order tests.",{"type":17,"tag":176,"props":10338,"children":10339},{},[10340],{"type":23,"value":10341},"🧯 Keep a fire-safe LiPo charging and storage setup.",{"type":17,"tag":176,"props":10343,"children":10344},{},[10345],{"type":23,"value":10346},"🛑 Use a physical kill switch and a clear emergency stop procedure.",{"type":17,"tag":176,"props":10348,"children":10349},{},[10350],{"type":23,"value":10351},"🧍 Keep all people outside the propeller disk danger zone.",{"type":17,"tag":176,"props":10353,"children":10354},{},[10355],{"type":23,"value":10356},"🪢 Use tethered tests before free flight.",{"type":17,"tag":176,"props":10358,"children":10359},{},[10360],{"type":23,"value":10361},"🔋 Monitor battery voltage, current, and motor temperature.",{"type":17,"tag":176,"props":10363,"children":10364},{},[10365],{"type":23,"value":10366},"🧪 Test one change at a time and log everything.",{"type":17,"tag":176,"props":10368,"children":10369},{},[10370],{"type":23,"value":10371},"📝 Write down the exact firmware version, parameter file, and hardware configuration for each test.",{"type":17,"tag":136,"props":10373,"children":10374},{},[],{"type":17,"tag":140,"props":10376,"children":10378},{"id":10377},"evaluation-metrics",[10379],{"type":23,"value":10380},"📊 Evaluation Metrics",{"type":17,"tag":247,"props":10382,"children":10383},{},[10384,10399],{"type":17,"tag":251,"props":10385,"children":10386},{},[10387],{"type":17,"tag":255,"props":10388,"children":10389},{},[10390,10395],{"type":17,"tag":259,"props":10391,"children":10392},{},[10393],{"type":23,"value":10394},"Category",{"type":17,"tag":259,"props":10396,"children":10397},{},[10398],{"type":23,"value":7363},{"type":17,"tag":270,"props":10400,"children":10401},{},[10402,10415,10428,10441,10454,10467,10480],{"type":17,"tag":255,"props":10403,"children":10404},{},[10405,10410],{"type":17,"tag":277,"props":10406,"children":10407},{},[10408],{"type":23,"value":10409},"Tracking",{"type":17,"tag":277,"props":10411,"children":10412},{},[10413],{"type":23,"value":10414},"position RMS error, attitude RMS error, max error",{"type":17,"tag":255,"props":10416,"children":10417},{},[10418,10423],{"type":17,"tag":277,"props":10419,"children":10420},{},[10421],{"type":23,"value":10422},"Allocation",{"type":17,"tag":277,"props":10424,"children":10425},{},[10426],{"type":23,"value":10427},"wrench error, saturation count, reversal count",{"type":17,"tag":255,"props":10429,"children":10430},{},[10431,10436],{"type":17,"tag":277,"props":10432,"children":10433},{},[10434],{"type":23,"value":10435},"Efficiency",{"type":17,"tag":277,"props":10437,"children":10438},{},[10439],{"type":23,"value":10440},"average current, estimated power, thermal load",{"type":17,"tag":255,"props":10442,"children":10443},{},[10444,10449],{"type":17,"tag":277,"props":10445,"children":10446},{},[10447],{"type":23,"value":10448},"Robustness",{"type":17,"tag":277,"props":10450,"children":10451},{},[10452],{"type":23,"value":10453},"disturbance rejection time, overshoot, steady-state error",{"type":17,"tag":255,"props":10455,"children":10456},{},[10457,10462],{"type":17,"tag":277,"props":10458,"children":10459},{},[10460],{"type":23,"value":10461},"Fault diagnosis",{"type":17,"tag":277,"props":10463,"children":10464},{},[10465],{"type":23,"value":10466},"detection delay, false positive rate, isolation accuracy",{"type":17,"tag":255,"props":10468,"children":10469},{},[10470,10475],{"type":17,"tag":277,"props":10471,"children":10472},{},[10473],{"type":23,"value":10474},"Fault tolerance",{"type":17,"tag":277,"props":10476,"children":10477},{},[10478],{"type":23,"value":10479},"stable recovery time, residual tracking performance",{"type":17,"tag":255,"props":10481,"children":10482},{},[10483,10488],{"type":17,"tag":277,"props":10484,"children":10485},{},[10486],{"type":23,"value":10487},"Safety",{"type":17,"tag":277,"props":10489,"children":10490},{},[10491],{"type":23,"value":10492},"number of aborted tests, failsafe trigger correctness",{"type":17,"tag":136,"props":10494,"children":10495},{},[],{"type":17,"tag":140,"props":10497,"children":10499},{"id":10498},"key-takeaways",[10500],{"type":23,"value":10501},"🧾 Key Takeaways",{"type":17,"tag":172,"props":10503,"children":10504},{},[10505,10510,10515,10520,10525],{"type":17,"tag":176,"props":10506,"children":10507},{},[10508],{"type":23,"value":10509},"🚁 An Omnicopter is a 6-DoF multirotor capable of generating force and torque in 3D.",{"type":17,"tag":176,"props":10511,"children":10512},{},[10513],{"type":23,"value":10514},"🧊 The ETH-style cubic design is a strong baseline because it is symmetric, over-actuated, and well connected to PX4 references.",{"type":17,"tag":176,"props":10516,"children":10517},{},[10518],{"type":23,"value":10519},"🟣 The Lynchpin-style design is a useful comparison because it emphasizes modular tangential geometry and independent position\u002Forientation control.",{"type":17,"tag":176,"props":10521,"children":10522},{},[10523],{"type":23,"value":10524},"🛠️ Our hardware platform has already been built and tested, making this project suitable for real control experiments.",{"type":17,"tag":176,"props":10526,"children":10527},{},[10528],{"type":23,"value":10529},"🎯 The main research value is not only flying the vehicle, but building a pipeline for optimal, robust, and fault-aware control.",{"type":17,"tag":136,"props":10531,"children":10532},{},[],{"type":17,"tag":140,"props":10534,"children":10536},{"id":10535},"references",[10537],{"type":23,"value":10538},"🔗 References",{"type":17,"tag":513,"props":10540,"children":10542},{"id":10541},"papers-and-technical-sources",[10543],{"type":23,"value":10544},"Papers and technical sources",{"type":17,"tag":2675,"props":10546,"children":10547},{},[10548,10566,10582,10597,10612],{"type":17,"tag":176,"props":10549,"children":10550},{},[10551,10556,10558,10564],{"type":17,"tag":152,"props":10552,"children":10553},{},[10554],{"type":23,"value":10555},"D. Brescianini and R. D'Andrea",{"type":23,"value":10557},", “Design, Modeling and Control of an Omni-Directional Aerial Vehicle,” ",{"type":17,"tag":10559,"props":10560,"children":10561},"em",{},[10562],{"type":23,"value":10563},"IEEE International Conference on Robotics and Automation (ICRA)",{"type":23,"value":10565},", 2016.",{"type":17,"tag":176,"props":10567,"children":10568},{},[10569,10574,10575],{"type":17,"tag":152,"props":10570,"children":10571},{},[10572],{"type":23,"value":10573},"PX4 Documentation — Omnicopter Build Guide",{"type":23,"value":3549},{"type":17,"tag":86,"props":10576,"children":10580},{"href":10577,"rel":10578},"https:\u002F\u002Fdocs.px4.io\u002Fmain\u002Fen\u002Fframes_multicopter\u002Fomnicopter",[10579],"nofollow",[10581],{"type":23,"value":10577},{"type":17,"tag":176,"props":10583,"children":10584},{},[10585,10590,10591],{"type":17,"tag":152,"props":10586,"children":10587},{},[10588],{"type":23,"value":10589},"PX4 Documentation — Control Allocation",{"type":23,"value":3549},{"type":17,"tag":86,"props":10592,"children":10595},{"href":10593,"rel":10594},"https:\u002F\u002Fdocs.px4.io\u002Fmain\u002Fen\u002Fconcept\u002Fcontrol_allocation",[10579],[10596],{"type":23,"value":10593},{"type":17,"tag":176,"props":10598,"children":10599},{},[10600,10605,10606],{"type":17,"tag":152,"props":10601,"children":10602},{},[10603],{"type":23,"value":10604},"Terry's Lynchpins — Lynchpin Drone Contest",{"type":23,"value":3549},{"type":17,"tag":86,"props":10607,"children":10610},{"href":10608,"rel":10609},"https:\u002F\u002Fwww.terryslynchpins.com\u002Fcontest",[10579],[10611],{"type":23,"value":10608},{"type":17,"tag":176,"props":10613,"children":10614},{},[10615,10620,10621],{"type":17,"tag":152,"props":10616,"children":10617},{},[10618],{"type":23,"value":10619},"Awesome Tech Designs — Omnicopter taxonomy and examples",{"type":23,"value":3549},{"type":17,"tag":86,"props":10622,"children":10625},{"href":10623,"rel":10624},"https:\u002F\u002Fgithub.com\u002Fbpodchezertsev\u002Fawesome-tech-designs\u002Fblob\u002Fmain\u002FOmnicopter.md",[10579],[10626],{"type":23,"value":10623},{"type":17,"tag":513,"props":10628,"children":10630},{"id":10629},"videos",[10631],{"type":23,"value":10632},"Videos",{"type":17,"tag":2675,"props":10634,"children":10635},{},[10636,10649,10663,10677],{"type":17,"tag":176,"props":10637,"children":10638},{},[10639,10643,10644],{"type":17,"tag":152,"props":10640,"children":10641},{},[10642],{"type":23,"value":380},{"type":23,"value":3549},{"type":17,"tag":86,"props":10645,"children":10647},{"href":373,"rel":10646},[10579],[10648],{"type":23,"value":373},{"type":17,"tag":176,"props":10650,"children":10651},{},[10652,10657,10658],{"type":17,"tag":152,"props":10653,"children":10654},{},[10655],{"type":23,"value":10656},"ArduCopter 6DoF — OmniCopter — outside (Lynchpin)",{"type":23,"value":3549},{"type":17,"tag":86,"props":10659,"children":10661},{"href":410,"rel":10660},[10579],[10662],{"type":23,"value":410},{"type":17,"tag":176,"props":10664,"children":10665},{},[10666,10671,10672],{"type":17,"tag":152,"props":10667,"children":10668},{},[10669],{"type":23,"value":10670},"The Omnicopter — ETH Zurich",{"type":23,"value":3549},{"type":17,"tag":86,"props":10673,"children":10675},{"href":448,"rel":10674},[10579],[10676],{"type":23,"value":448},{"type":17,"tag":176,"props":10678,"children":10679},{},[10680,10684,10685],{"type":17,"tag":152,"props":10681,"children":10682},{},[10683],{"type":23,"value":489},{"type":23,"value":3549},{"type":17,"tag":86,"props":10686,"children":10688},{"href":483,"rel":10687},[10579],[10689],{"type":23,"value":483},{"type":17,"tag":136,"props":10691,"children":10692},{},[],{"type":17,"tag":18,"props":10694,"children":10695},{"align":20},[10696,10697,10702,10705],{"type":23,"value":24},{"type":17,"tag":43,"props":10698,"children":10699},{},[10700],{"type":23,"value":10701},"Built with carbon rods, reversible thrust, logs, unstable prototypes, and too much control theory.",{"type":17,"tag":49,"props":10703,"children":10704},{},[],{"type":23,"value":10706},"\n  🚁🧠🛠️📈\n",{"type":17,"tag":10708,"props":10709,"children":10710},"style",{},[10711],{"type":23,"value":10712},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dusk .shiki span {color: var(--shiki-dusk);background: var(--shiki-dusk-bg);font-style: var(--shiki-dusk-font-style);font-weight: var(--shiki-dusk-font-weight);text-decoration: var(--shiki-dusk-text-decoration);}html.dusk .shiki span {color: var(--shiki-dusk);background: var(--shiki-dusk-bg);font-style: var(--shiki-dusk-font-style);font-weight: var(--shiki-dusk-font-weight);text-decoration: var(--shiki-dusk-text-decoration);}",{"title":7,"searchDepth":625,"depth":625,"links":10714},[10715,10716,10717,10720,10723,10724,10725,10731,10737,10741,10745,10746,10752,10757,10763,10770,10771,10772,10773,10774],{"id":142,"depth":625,"text":145},{"id":242,"depth":625,"text":245},{"id":353,"depth":625,"text":356,"children":10718},[10719],{"id":515,"depth":634,"text":518},{"id":586,"depth":625,"text":589,"children":10721},[10722],{"id":2363,"depth":634,"text":2366},{"id":2519,"depth":625,"text":2522},{"id":2665,"depth":625,"text":2668},{"id":2703,"depth":625,"text":2706,"children":10726},[10727,10728,10729,10730],{"id":2730,"depth":634,"text":2733},{"id":2828,"depth":634,"text":2831},{"id":2857,"depth":634,"text":2860},{"id":2886,"depth":634,"text":2889},{"id":2990,"depth":625,"text":2993,"children":10732},[10733,10734,10735,10736],{"id":3036,"depth":634,"text":3039},{"id":3114,"depth":634,"text":3117},{"id":3143,"depth":634,"text":3146},{"id":3172,"depth":634,"text":3175},{"id":3243,"depth":625,"text":3246,"children":10738},[10739,10740],{"id":3254,"depth":634,"text":3257},{"id":3367,"depth":634,"text":3370},{"id":3534,"depth":625,"text":3537,"children":10742},[10743,10744],{"id":3868,"depth":634,"text":3871},{"id":4202,"depth":634,"text":4205},{"id":4358,"depth":625,"text":4361},{"id":4414,"depth":625,"text":4417,"children":10747},[10748,10749,10750,10751],{"id":4444,"depth":634,"text":4447},{"id":4711,"depth":634,"text":4714},{"id":7263,"depth":634,"text":7266},{"id":7341,"depth":634,"text":7344},{"id":7450,"depth":625,"text":7453,"children":10753},[10754,10755,10756],{"id":7504,"depth":634,"text":7507},{"id":7583,"depth":634,"text":7586},{"id":7795,"depth":634,"text":7798},{"id":7890,"depth":625,"text":7893,"children":10758},[10759,10760,10761,10762],{"id":7923,"depth":634,"text":7926},{"id":8082,"depth":634,"text":8085},{"id":8913,"depth":634,"text":8916},{"id":9577,"depth":634,"text":9580},{"id":9701,"depth":625,"text":9704,"children":10764},[10765,10766,10767,10768,10769],{"id":9707,"depth":634,"text":9710},{"id":9736,"depth":634,"text":9739},{"id":9808,"depth":634,"text":9811},{"id":9837,"depth":634,"text":9840},{"id":9861,"depth":634,"text":9864},{"id":9893,"depth":625,"text":9896},{"id":10320,"depth":625,"text":10323},{"id":10377,"depth":625,"text":10380},{"id":10498,"depth":625,"text":10501},{"id":10535,"depth":625,"text":10538,"children":10775},[10776,10777],{"id":10541,"depth":634,"text":10544},{"id":10629,"depth":634,"text":10632},"markdown","content:projects:2026-omnicopter-control-research:index.md","content","projects\u002F2026-omnicopter-control-research\u002Findex.md","projects\u002F2026-omnicopter-control-research\u002Findex","md","en",1782613929546]