====== WheelOdometry ====== ===== 概要 ===== 名前空間:robot_object エンコーダーの読み取り値から、以下を計算するクラス。 * 左右輪の速度[m/s] * 重心速度[m/s] * 角速度[deg/s] * 曲率 * 曲率半径[m] * 絶対座標 x, y [m] * 絶対角度 [deg] シングルトンとして実装。 update()メソッドをタイマ割り込み関数内で呼ぶことで値の更新を行う。 ===== クラス図 ===== class "WheelOdometry" as WheelOdometry { - WheelOdometry() - ~WheelOdometry() - uint16_t R_ENC_pre - uint16_t L_ENC_pre - uint16_t R_ENC_now - uint16_t L_ENC_now - const float BIG_R = 500000.0 - const float DELTA_T = 0.001 - const float TIRE_GEAR_NUM = 44.0 - const float ENC_GEAR_NUM = 11.0 - const float GEAR_RATIO = 4.0 - const float ENC_RESOLUTION = 1600.0 - const float ENC_R_DIR = -1.0 - const float ENC_L_DIR = -1.0 - const float PI = 3.1415926535897932384626433832795 + float v + float v_R + float v_L + float ang_v + float kappa + float r + float ab_pos_x + float ab_pos_y + float ab_ang + static WheelOdometry& getInstance() + void update() + float getV(bool sb_flag) + float getAng_v(bool sb_flag) + float getKappa(bool sb_flag) + float getV_R(bool sb_flag) + float getV_L(bool sb_flag) } ===== 単体テスト履歴 ===== ==== 2018/6/17 16:29 ==== * 手で動かしたときの角度と距離が何となく正しいを確認 * sb_flagを引数に持つ関数に関しては、まだ動作確認を行っていない