產品發表 包羅萬象 模型拍賣 綜合討論 直昇機 飛機 同協會 回首頁

 找回密碼
 申請
樓主: ej189

打造CP值最高的跨廠牌發射機 Deviation - DEVO10【固定下載】

 火... [複製鏈接]
發表於 2013年2月6日 12:01 AM | 顯示全部樓層
改天好好看這一篇
謝謝分享
回復 按讚

使用道具 舉報

發表於 2013年2月6日 11:23 AM | 顯示全部樓層
原帖由 suvsuvsuv 於 2013年2月5日 11:00 AM 發表
按鍵(Up;Dn)與(R;L)互換会改变所有界面的操作习惯(目前都是Up/Dn切换按钮、选项),无法实现,但是可以将Listbox界面改到右侧显示,附件最新版本已经按照您的建议调整了界面 ...

感謝 !!
可否提供模擬器... 因為bitbucket.org/sunvsuv/devil10網站一直沒更新,我無法下載自行編譯 !!
回復 按讚

使用道具 舉報

發表於 2013年2月6日 11:28 AM | 顯示全部樓層
原帖由 suvsuvsuv 於 2013年2月5日 11:00 AM 發表
2)拟合曲线目前找不到合适的计算公式,所以暂时无法实 ...

我所採用的"二次B 样条曲线", 不通過 "點", 會有偏離, 但計算較簡易 !!
Bsplin_ex.jpg


excel的試算:
Bsplin_excel.jpg


模擬器(會有偏離):
Bsplin_1.jpg

Bsplin_2.jpg

網絡上原本提供的是: f(t)函式
即 X=f1(t), Y=f2(t),
但遙控器需要的是 Y=f(x),
因此需要先用 X解二次方程( root-X2.jpg )得到t, 再用t計算Y.
但X若是線性, 即n-點的位置(X值)是固定的 =(CHAN_MAX_VALUE-CHAN_MIN_VALUE)/n.
則t可用內插法直接得出較為快速.
  1. /********** Bspline **********/
  2. s16 Bspline(struct Curve *curve, s32 value) // use n-POINT
  3. {
  4.     s32 x0,x1;
  5.     s32 y0,y1,y2;
  6.     s32 b0,b1,b2;
  7.     s32 t,tmp;
  8.     int i;
  9.     int num_points = (curve->type - CURVE_3POINT) * 2 + 3;
  10.     s32 step = 10000/(num_points-1) ; // (2*10000)/(2*(num_points-1) ,use 2n-steps for n-POINT
  11.     for (i = 0; i < num_points; i++) {

  12.         x0 = -10000 + (2*i-1)*step; // n-POINT, X is linear
  13.         x1 = x0 + 2*step;
  14.                
  15.         if(value >= x0 && value <= x1) {
  16.                         y1 = curve->points;  
  17.                         if (i==0) { // end point
  18.                                         y2 = curve->points[i+1];
  19.                                         y0 = y1+y1-y2; // Linear extension
  20.                         } else {
  21.                                 if (i==(num_points-1))        { // end point
  22.                                         y0 = curve->points[i-1];
  23.                                         y2 = y1+y1-y0; // Linear extension
  24.                                 }
  25.                                 else {
  26.                                         y0 = curve->points[i-1];
  27.                                         y2 = curve->points[i+1];
  28.                                 }
  29.                         }
  30.                         
  31.                         b0=100*(y1+y0)/2;  // mid
  32.                         b1=100*(y1-y0);  // delta1
  33.                         b2=100*(y2-2*y1+y0)/2; // (delta2-delta1)/2
  34.                         /*** t = (value-x0)/(x1-x0), use interpolate because X is linear ***/
  35.                         t = 50*(value-x0)/step; // 2-decimals: (100*(value-x0))/(2*step)
  36.                         tmp = b0+b1*t/100+b2*t*t/10000; //Bspline
  37.                         // tmp = b1*t/100+y0;  //Interpolate
  38.             return tmp;
  39.         } //if(value >= x0 && value <= x1)
  40.     } //for (i = 0; i < num_points; i++)
  41.     return PCT_TO_RANGE(curve->points[num_points-1]);
  42. }
  43. /********** Bspline **********/
複製代碼

模擬器: (7點 與 11點 用 Bspline擬合曲線, 僅作為此範例之用)
emu_devo10_Bspline.zip (310.46 KB, 下載次數: 123)

[ 本帖最後由 hmjack2008 於 2013年2月6日 12:53 PM 編輯 ]
回復 按讚

使用道具 舉報

發表於 2013年2月6日 01:08 PM | 顯示全部樓層
原帖由 davidlitmanen 於 2013年2月5日 04:13 PM 發表
是的了解。小弟提一個不學無術的方法,內建81點(比如),但只開放原來的點數設定;配合雲線法只做一次之後列表,用查表法做兩點內插。至於列表的時機點,應該就是那個Auto按下去的瞬間吧?! ...

或者 : 在設定時將 參數計算出(解方程)並儲存參數,後續混控時利用已儲存的 參數 即時計算.
Poly_1.jpg

Poly_3.jpg

[ 本帖最後由 hmjack2008 於 2013年2月6日 01:09 PM 編輯 ]
回復 按讚

使用道具 舉報

發表於 2013年2月6日 01:51 PM | 顯示全部樓層
原帖由 hmjack2008 於 2013年2月6日 01:08 PM 發表

或者 : 在設定時將 參數計算出(解方程)並儲存參數,後續混控時利用已儲存的 參數 即時計算.
851903

851904
这种 方式是非常有效可行的,如果是设计商业遥控我也会这么做,但是deviation使用了文本文件来传递模型文件,导致难以存储大量的曲线拟合值。
回復 按讚

使用道具 舉報

發表於 2013年2月6日 01:59 PM | 顯示全部樓層
原帖由 hmjack2008 於 2013年2月6日 11:23 AM 發表

感謝 !!
可否提供模擬器... 因為bitbucket.org/sunvsuv/devil10網站一直沒更新,我無法下載自行編譯 !!
从PB引入devo7e的修改后,我的repository就改回到下述url了
https://bitbucket.org/sunvsuv/deviationfor6810
回復 按讚

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 申請

本版積分規則

世界各國訪RCTW統計

手機版|台灣遙控模型-RCTW

GMT+8, 2024年12月13日 09:43 AM

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回復 返回頂部 返回列表