Skip to content
This repository has been archived by the owner on Jan 16, 2023. It is now read-only.

Commit

Permalink
足回りのクラスのヘッダファイルを書いた #8
Browse files Browse the repository at this point in the history
  • Loading branch information
H1rono committed Jul 19, 2022
1 parent c334164 commit 7271e70
Showing 1 changed file with 101 additions and 0 deletions.
101 changes: 101 additions & 0 deletions include/ssr/LowerBody.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
#pragma once

#ifndef SSR_LOWER_BODY_HPP
#define SSR_LOWER_BODY_HPP

#include <ssr/MotorDriver.hpp>

// このライブラリが使う名前空間
namespace ssr {

// 足回りを操作
class LowerBody {
public:
// 正面のモーター
MotorDriver motor1;
// 左後ろのモーター
MotorDriver motor2;
// 右後ろのモーター
MotorDriver motor3;

/**
* 初期化子
* @param PinType dir1 モーター1につなげるDIRピンの番号
* @param PinType pwm1 モーター1につなげるPWMピンの番号
* @param PinType dir2 モーター2につなげるDIRピンの番号
* @param PinType pwm2 モーター2につなげるPWMピンの番号
* @param PinType dir3 モーター3につなげるDIRピンの番号
* @param PinType pwm3 モーター3につなげるPWMピンの番号
*/
LowerBody(
PinType di1, PinType pwm1,
PinType di2, PinType pwm2,
PinType di3, PinType pwm3
);

/**
* 初期化子
* @param MotorDriver motor1 モーター1
* @param MotorDriver motor1 モーター2
* @param MotorDriver motor1 モーター3
*/
LowerBody(MotorDriver motor1, MotorDriver motor2, MotorDriver motor3);

/**
* @note
* # 各軸の設定など
* x軸: 重心から正面の方向
* y軸: 重心からx軸の正方向を向いて垂直に左方向
*
* # モーター配置の詳細
* 正面
* +----------^----------+
* | --1-- |
* | |
* | x |
* | y* |
* | \ / |
* | 2 3 |
* | \ / |
* +---------------------+
* 配置は上のAsciiArtの通り。真ん中の*が中心、軸はxyって書いてあるやつが各軸の正方向。各タイヤは反時計回りを正転方向で
*
* # 各変数名の定義
* v_x := 並行速度x成分
* v_y := 並行速度y成分
* v_theta := 中心からタイヤまでの距離 * 角速度
*/

/**
* 足回りの初期設定。全体のsetup()内でこれを呼び出すこと
* @param float v_x 初期並行速度のx成分。デフォルトは0
* @param float v_y 初期並行速度のy成分。デフォルトは0
* @param float v_theta 中心からタイヤまでの距離*角速度 の初期値。デフォルトは0
*/
void begin(float v_x = 0, float v_y = 0, float v_theta = 0);

/**
* 並行移動と回転を同時に設定する
* @param float v_x 並行速度のx成分
* @param float v_y 並行速度のy成分
* @param float v_theta 中心からタイヤまでの距離 * 角速度
*/
void twist(float v_x, float v_y, float v_theta);

/**
* 回転なしの並行移動を設定する
* @param float v_x 並行速度のx成分
* @param float v_y 並行速度のy成分
*/
void parallel(float v_x, float v_y);

/**
* 並行移動なしで回転を設定する
* @param float v_theta 中心からタイヤまでの距離 * 角速度
*/
void rotate(float v_theta);
};

}

# endif /* SSR_LOWER_BODY_HPP */

0 comments on commit 7271e70

Please sign in to comment.