クロールに対して指令を出す,クロールの持っているセンサの情報を取得するためのクラス. [詳解]
#include <crawl.h>
公開メンバ関数 | |
void | init () |
クロールの初期化 [詳解] | |
void | realtimeLoop () |
ループが一定間隔になるよう調節する [詳解] | |
void | setDt (float dt) |
ループ間隔を設定する [詳解] | |
void | setKalman (bool enable_kalman) |
センサヒュージョンの方法を設定する [詳解] | |
float | getThetaX () |
X軸周りの姿勢角度を取得する [詳解] | |
float | getThetaY () |
Y軸周りの姿勢角度を取得する [詳解] | |
float | getThetaZ () |
Z軸周りの姿勢角度を取得する [詳解] | |
float | getHeadVelocity () |
倒立時のクロール上端の速度を取得する [詳解] | |
float | getAccX () |
X軸方向の加速度を取得する [詳解] | |
float | getAccY () |
Y軸方向の加速度を取得する [詳解] | |
float | getAccZ () |
Z軸方向の加速度を取得する [詳解] | |
float | getThetaDotX () |
X軸周りの角速度を取得する [詳解] | |
float | getThetaDotY () |
Y軸周りの角速度を取得する [詳解] | |
float | getThetaDotZ () |
Z軸周りの角速度を取得する [詳解] | |
float | getEncoderLeft () |
左エンコーダの値を取得する [詳解] | |
float | getEncoderRight () |
右エンコーダの値を取得する [詳解] | |
float | getOdometryLeft () |
左クローラの進んだ距離の値を取得する [詳解] | |
float | getOdometryRight () |
右クローラの進んだ距離を取得する [詳解] | |
void | setMotorLeft (float motor_left) |
左モーターの出力を設定 [詳解] | |
void | setMotorRight (float motor_right) |
右モーターの出力を設定 [詳解] | |
void | resetEncoderLeft () |
左エンコーダの累積値を0に設定する [詳解] | |
void | resetEncoderRight () |
右エンコーダの累積値を0に設定する [詳解] | |
void | updateState () |
クロールの状態を更新 [詳解] | |
クロールに対して指令を出す,クロールの持っているセンサの情報を取得するためのクラス.
float CrlRobot::getAccX | ( | ) |
float CrlRobot::getAccY | ( | ) |
float CrlRobot::getAccZ | ( | ) |
float CrlRobot::getEncoderLeft | ( | ) |
float CrlRobot::getEncoderRight | ( | ) |
float CrlRobot::getHeadVelocity | ( | ) |
倒立時のクロール上端の速度を取得する
倒立時のクロール上端の速度を取得する.取得する速度はグローバル座標のX軸方向 の速度であり,グローバル座標でX軸正方向にクロール上端が移動すると正の速度が 取得され,X軸負方向への移動の場合も同様に負の速度が取得されます.
float CrlRobot::getOdometryLeft | ( | ) |
左クローラの進んだ距離の値を取得する
左クローラの進んだ距離の累積値をメートル単位で取得します.
float CrlRobot::getOdometryRight | ( | ) |
float CrlRobot::getThetaDotX | ( | ) |
float CrlRobot::getThetaDotY | ( | ) |
float CrlRobot::getThetaDotZ | ( | ) |
float CrlRobot::getThetaX | ( | ) |
float CrlRobot::getThetaY | ( | ) |
float CrlRobot::getThetaZ | ( | ) |
void CrlRobot::init | ( | ) |
クロールの初期化
クロールを使用する前に必ず呼び出してください. 加速度,ジャイロセンサのキャリブレーションを行うので約1.5秒程度の時間を要します. その際,クロールは水平な場所に置き,安静にしてください.
void CrlRobot::realtimeLoop | ( | ) |
ループが一定間隔になるよう調節する
このメンバ関数は,前回このメンバ関数がリターンした時刻からdt秒後にリターンします. このメンバ関数をループの中で呼び出すと,そのループは正確にdt秒起きに実行されます. この特性はPID制御など,正確なリアルタイム性を求められる場合に非常に有効です.
void CrlRobot::resetEncoderLeft | ( | ) |
左エンコーダの累積値を0に設定する
左エンコーダの累積値などのリセットなどに利用ください.
void CrlRobot::resetEncoderRight | ( | ) |
右エンコーダの累積値を0に設定する
右エンコーダの累積値などのリセットなどに利用ください.
void CrlRobot::setDt | ( | float | dt | ) |
ループ間隔を設定する
このメンバ関数は,realtimeLoop()で実現されるループの時間間隔を指定します. ループ内の演算時間が,設定時間を超えた場合LED2が点灯し, ユーザに対して,設定時間内で演算が終了しなかったことを知らせます. ユーザーがこの関数を使用する場合は,LED2は使用しないでください.
dt | ループ間隔 単位:秒 |
void CrlRobot::setKalman | ( | bool | enable_kalman | ) |
センサヒュージョンの方法を設定する
このメンバ関数は,センサのヒュージョン方法を設定します. このメンバ関数を呼び出さない場合,相補フィルタによってセンサヒュージョンを行います.
enable_kalman | カルマンフィルタを有効にする場合true,相補フィルタを有効にする場合false |
void CrlRobot::setMotorLeft | ( | float | motor_left | ) |
左モーターの出力を設定
左モーターの出力を-1.0〜0.0〜1.0でリニアに設定します.
motor_left | 左モータの出力 -1.0:最大出力で後退〜0.0:停止〜1.0:最大出力で前進 |
void CrlRobot::setMotorRight | ( | float | motor_right | ) |
右モーターの出力を設定
右モーターの出力を-1.0〜0.0〜1.0でリニアに設定します.
motor_right | 右モータの出力 -1.0:最大出力で後退〜0.0:停止〜1.0:最大出力で前進 |
void CrlRobot::updateState | ( | ) |
クロールの状態を更新
このメンバ関数では,setMotorLeft(),setMotorRight()などで設定したモータ出力を実際の出力に適用します. また,getEncoderLeft()など各種状態・センサ取得関数で得られる情報の更新も行われます.