クロールに対して指令を出す,クロールの持っているセンサの情報を取得するためのクラス. [詳解]
#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()など各種状態・センサ取得関数で得られる情報の更新も行われます.
1.8.8