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.
Homepage
輪花繚乱 福島Bチームのプログラム¶
お断り¶
- 糞みたいなコードだけど生暖かい目で見守ってください
- mbed初心者ゆえコミットの機能を使いこなせていないがご愛嬌
- 謎のコメント、意味のない変数等満載だけど、これもご愛嬌
- ライブラリに頼ってばっかなので実質たいしたことやってないです(;´・ω・)
概要¶
- 1.オドメトリでマシンの位置情報を入手
- 2.入手したマシン位置情報に応じてマシンに命令を送る
- ~以後繰り返す~
- おしまい
マシンの自己位置計算部(自明な宣言は省略)
#include "mbed.h" #define RATE 0.01 #define PI 3.14159265359 #define ppr 400.0 //Pulse per revolution(encoder) QEI Move_r_sense(ENCOD_MOVE_R_A, ENCOD_MOVE_R_B, NC, 400, QEI::X4_ENCODING); QEI Move_l_sense(ENCOD_MOVE_L_A, ENCOD_MOVE_L_B, NC, 400, QEI::X4_ENCODING); Ticker Com; void mesure_state() { Pulses_move_r = ( double )Move_r_sense.getPulses(); Pulses_move_l = ( double )Move_l_sense.getPulses(); dlr = ( ( ( Pulses_move_r - PrefPulses_move_r ) / ppr ) * 2.0 * PI ) * r_wheel; dll = ( ( ( Pulses_move_l - PrefPulses_move_l ) / ppr ) * 2.0 * PI ) * r_wheel; PrefPulses_move_r = Pulses_move_r; PrefPulses_move_l = Pulses_move_l; vr = dlr / RATE; vl = dll / RATE; if(flagf) velocity = ( vr + vl ) / 2.0; else velocity = -( vr + vl ) / 2.0; dsita = ( dlr - dll ) / ( 2.0 * d ); dx = ( ( dlr + dll ) / 2.0 ) * cos( sita + dsita / 2.0 ); dy = ( ( dlr + dll ) / 2.0 ) * sin( sita + dsita / 2.0 ); sita += dsita; x += dx; y += dy; } int main() { Com.attach(&mesure_state,RATE); while(1) { } }