Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
OmniMove.h@1:e515f6a4da2e, 2021-03-25 (annotated)
- Committer:
- DarkFlame
- Date:
- Thu Mar 25 02:24:55 2021 +0000
- Revision:
- 1:e515f6a4da2e
- Parent:
- 0:44476ac6ab91
- Child:
- 2:4c4ff6bf6282
OmuniMove -> OmniMove
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
DarkFlame | 1:e515f6a4da2e | 1 | #ifndef OmniMove_H |
DarkFlame | 1:e515f6a4da2e | 2 | #define OmniMove_H |
DarkFlame | 0:44476ac6ab91 | 3 | |
DarkFlame | 0:44476ac6ab91 | 4 | #include "mbed.h" |
DarkFlame | 0:44476ac6ab91 | 5 | |
DarkFlame | 0:44476ac6ab91 | 6 | /* |
DarkFlame | 0:44476ac6ab91 | 7 | OmniMove.h |
DarkFlame | 0:44476ac6ab91 | 8 | オムニ・メカナム等の全方位移動ベクトル演算ライブラリ |
DarkFlame | 0:44476ac6ab91 | 9 | Designer: Watanabe Yuuto |
DarkFlame | 0:44476ac6ab91 | 10 | |
DarkFlame | 0:44476ac6ab91 | 11 | このライブラリは極座標で表したマシンの走行速度、進行方向から |
DarkFlame | 0:44476ac6ab91 | 12 | 各車輪の回転速度を演算するライブラリです。 |
DarkFlame | 0:44476ac6ab91 | 13 | 3~8輪までの車輪数や車輪の位置などを指定できます。 |
DarkFlame | 0:44476ac6ab91 | 14 | |
DarkFlame | 0:44476ac6ab91 | 15 | ・ホイールの位置関係(4つの場合) |
DarkFlame | 0:44476ac6ab91 | 16 | 注.4つの場合は0,1,2,3とナンバリングする |
DarkFlame | 0:44476ac6ab91 | 17 | front |
DarkFlame | 0:44476ac6ab91 | 18 | ┌───────────────┐ |
DarkFlame | 0:44476ac6ab91 | 19 | │ w1← │ |
DarkFlame | 0:44476ac6ab91 | 20 | l│ y │r |
DarkFlame | 0:44476ac6ab91 | 21 | e│ ↑ w0│i |
DarkFlame | 0:44476ac6ab91 | 22 | f│↓ . →x ↑│g |
DarkFlame | 0:44476ac6ab91 | 23 | t│w2 │h |
DarkFlame | 0:44476ac6ab91 | 24 | │ │t |
DarkFlame | 0:44476ac6ab91 | 25 | │ →w3 │ |
DarkFlame | 0:44476ac6ab91 | 26 | └───────────────┘ |
DarkFlame | 0:44476ac6ab91 | 27 | back |
DarkFlame | 0:44476ac6ab91 | 28 | この場合の配置では0番目の車輪軸の角度fstWheelAngは0度となる |
DarkFlame | 0:44476ac6ab91 | 29 | |
DarkFlame | 0:44476ac6ab91 | 30 | ・マシンの進行方向thetaについて |
DarkFlame | 0:44476ac6ab91 | 31 | 例)theta=0の場合→right方向に進む |
DarkFlame | 0:44476ac6ab91 | 32 | theta=90の場合→front方向に進む |
DarkFlame | 0:44476ac6ab91 | 33 | theta=-90の場合→back方向に進む |
DarkFlame | 0:44476ac6ab91 | 34 | theta=180(or theta=-180)の場合→left方向に進む |
DarkFlame | 0:44476ac6ab91 | 35 | |
DarkFlame | 0:44476ac6ab91 | 36 | ・マシンの回転速度Vrollについて |
DarkFlame | 0:44476ac6ab91 | 37 | 値が正(>0)であれば反時計回り、値が負(<0)であれば時計回りにマシンが回転する |
DarkFlame | 0:44476ac6ab91 | 38 | |
DarkFlame | 0:44476ac6ab91 | 39 | ・回転速度の重みroll_ratioについて |
DarkFlame | 0:44476ac6ab91 | 40 | 例)roll_ratio=0.5の場合→マシンの直進成分が5割、回転成分が5割になる |
DarkFlame | 0:44476ac6ab91 | 41 | roll_ratio=0.8の場合→マシンの直進成分が2割、回転成分が8割になる |
DarkFlame | 0:44476ac6ab91 | 42 | */ |
DarkFlame | 0:44476ac6ab91 | 43 | |
DarkFlame | 1:e515f6a4da2e | 44 | class OmniMove |
DarkFlame | 0:44476ac6ab91 | 45 | { |
DarkFlame | 0:44476ac6ab91 | 46 | public: |
DarkFlame | 0:44476ac6ab91 | 47 | /* |
DarkFlame | 0:44476ac6ab91 | 48 | セットアップ関数 |
DarkFlame | 0:44476ac6ab91 | 49 | nWheel:車輪の個数,fstWheelAng:0番目のx軸と車輪軸のなす角度 */ |
DarkFlame | 0:44476ac6ab91 | 50 | void setup(int nWheel,float fstWheelAng); |
DarkFlame | 0:44476ac6ab91 | 51 | |
DarkFlame | 0:44476ac6ab91 | 52 | /* |
DarkFlame | 0:44476ac6ab91 | 53 | 全方位移動入力関数(極座標) |
DarkFlame | 0:44476ac6ab91 | 54 | r:マシンの速度(-1~1),theta:マシンの進行方向(角度deg ex.90,-45) |
DarkFlame | 0:44476ac6ab91 | 55 | Vroll:マシンの回転速度(-1~1),roll_ratio:回転速度の重み(0~1) */ |
DarkFlame | 0:44476ac6ab91 | 56 | void input_polar(float r,float theta,float Vroll,float roll_ratio); |
DarkFlame | 0:44476ac6ab91 | 57 | |
DarkFlame | 0:44476ac6ab91 | 58 | /* |
DarkFlame | 0:44476ac6ab91 | 59 | マシンの傾き角度を考慮した全方位移動入力関数(極座標) |
DarkFlame | 0:44476ac6ab91 | 60 | MachineAng:マシンの現在角度(角度deg ex.90,-45) */ |
DarkFlame | 0:44476ac6ab91 | 61 | void input_polar(float r,float theta,float Vroll,float roll_ratio,float MachineAng); |
DarkFlame | 0:44476ac6ab91 | 62 | |
DarkFlame | 0:44476ac6ab91 | 63 | /* |
DarkFlame | 0:44476ac6ab91 | 64 | 全方位移動出力関数(アドレスよくわからん人用) |
DarkFlame | 0:44476ac6ab91 | 65 | 引数:nWheel番目の車輪の回転速度 */ |
DarkFlame | 0:44476ac6ab91 | 66 | float output(int nWheel); |
DarkFlame | 0:44476ac6ab91 | 67 | |
DarkFlame | 0:44476ac6ab91 | 68 | /* |
DarkFlame | 0:44476ac6ab91 | 69 | 全方位移動出力関数 |
DarkFlame | 0:44476ac6ab91 | 70 | *v:車輪回転速度の配列の先頭アドレス */ |
DarkFlame | 0:44476ac6ab91 | 71 | void output(float *V); |
DarkFlame | 0:44476ac6ab91 | 72 | |
DarkFlame | 0:44476ac6ab91 | 73 | private: |
DarkFlame | 0:44476ac6ab91 | 74 | int i,nWheel; |
DarkFlame | 0:44476ac6ab91 | 75 | float Vx_wheel[8],Vy_wheel[8],Vx,Vy,Vroll; |
DarkFlame | 0:44476ac6ab91 | 76 | float m_pi; |
DarkFlame | 0:44476ac6ab91 | 77 | |
DarkFlame | 0:44476ac6ab91 | 78 | float conv_deg(float _rad); |
DarkFlame | 0:44476ac6ab91 | 79 | float conv_rad(float _deg); |
DarkFlame | 0:44476ac6ab91 | 80 | }; |
DarkFlame | 0:44476ac6ab91 | 81 | |
DarkFlame | 0:44476ac6ab91 | 82 | #endif |