多旋翼可能有很多軸,或者對稱或者不對稱。我們以四軸,X 形狀爲例。
爲方便說明,我們把電機進行編號, 右下爲9號,右上爲10號,左下爲11,左上爲3號電機。 1.飛行器保持懸停, 4個電機的轉速保持一致,來使飛行器保持水平。 四個電機的轉速=懸停油門 2.當我們希望飛行器向右飛的時候,我們設定在第一種情況的基礎上,增加左邊兩個電機(3,11)的轉速,減小右邊兩個電機(9,10)的轉速。 9號電機=懸停油門 - 右傾的量 10號電機= 懸停油門 - 右傾的量 11號電機 = 懸停油門 + 右傾的量 3號電機= 懸停油門 + 右傾的量 3.當我們希望飛行器向左飛的時候,上面的公式依然成立,只不過右傾的量是負數了。 4.當我們希望飛行器向前飛的時候,那麼我們要增加後面一組電機(11,9)的轉速,減小前面一組電機(3,10)的轉速 9號電機=懸停油門 + 前飛的量 10號電機= 懸停油門 - 前飛的量 11號電機 = 懸停油門+ 前飛的量 3號電機= 懸停油門 - 前飛的量 5.飛行器向後飛的情況,上面公式依然成立,前飛的量爲負數。 6.當我們希望飛行器順時針旋轉, 我們增加10號,11號 對角線兩個電機的轉速,減小3號,9號這條對角線電機的轉速。 9號電機=懸停油門 - 旋轉的量 10號電機= 懸停油門 + 旋轉的量 11號電機 = 懸停油門 + 旋轉的量 3號電機= 懸停油門 - 旋轉的量 7.當我們希望飛行器逆時針旋轉, 我們減小10號,11號對角線兩個電機的轉速,增加3號,9號這條對角線電機的轉速。繼續使用上面的公式。 8. 最後,針對一個電機,它同時要負責前後左右和旋轉的情況, 那它就疊加了4種情況下的值: 9號電機 = 懸停油門- 右傾的量 + 前飛的量 - 旋轉的量 10號電機 = 懸停油門- 右傾的量 - 前飛的量 + 旋轉的量 11號電機 = 懸停油門 +右傾的量 + 前飛的量 + 旋轉的量 3號電機 = 懸停油門 +右傾的量 - 前飛的量 - 旋轉的量 所以實現代碼如下: #define PIDMIX(X,Y,Z) rcCommand[THROTTLE] + axisPID[ROLL]*X +axisPID[PITCH]*Y + YAW_DIRECTION * axisPID[YAW]*Z #ifdef QUADX motor[0] = PIDMIX(-1,+1,-1);//REAR_R motor[1] = PIDMIX(-1,-1,+1);//FRONT_R motor[2] = PIDMIX(+1,+1,+1);//REAR_L motor[3] = PIDMIX(+1,-1,-1);//FRONT_L #endif 一切對稱,不對稱的多旋翼佈局都基於此理論,如果有愛的童鞋,可以補充解釋 Y3,Y6 ,V尾的公式。甚至可以創造自己發明的佈局,有創意的話就曬出來吧。 |