CrawlLibrary  v2.0.2
Omnimentの教育用ロボットCrawlのライブラリ
 全て クラス 関数
公開メンバ関数 | 全メンバ一覧
CrlRobot クラス

クロールに対して指令を出す,クロールの持っているセンサの情報を取得するためのクラス. [詳解]

#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 ( )

X軸方向の加速度を取得する

戻り値
X軸方向の加速度 単位:m/s^2
注意
updateState()を呼び出さない限り,情報は更新されません
参照
updateState()
float CrlRobot::getAccY ( )

Y軸方向の加速度を取得する

戻り値
Y軸方向の加速度 単位:m/s^2
注意
updateState()を呼び出さない限り,情報は更新されません
参照
updateState()
float CrlRobot::getAccZ ( )

Z軸方向の加速度を取得する

戻り値
Z軸方向の加速度 単位:m/s^2
注意
updateState()を呼び出さない限り,情報は更新されません
参照
updateState()
float CrlRobot::getEncoderLeft ( )

左エンコーダの値を取得する

左クローラの進んだ距離の累積値を取得します.

戻り値
左エンコーダの値 単位:パルス
注意
updateState()を呼び出さない限り,情報は更新されません
参照
updateState()
float CrlRobot::getEncoderRight ( )

右エンコーダの値を取得する

右クローラの進んだ距離の累積値を取得します.

戻り値
右エンコーダの値 単位:パルス
注意
updateState()を呼び出さない限り,情報は更新されません
参照
updateState()
float CrlRobot::getHeadVelocity ( )

倒立時のクロール上端の速度を取得する

倒立時のクロール上端の速度を取得する.取得する速度はグローバル座標のX軸方向 の速度であり,グローバル座標でX軸正方向にクロール上端が移動すると正の速度が 取得され,X軸負方向への移動の場合も同様に負の速度が取得されます.

戻り値
倒立時のクロール上端の速度 単位:m/s
注意
updateState()を呼び出さない限り,情報は更新されません
参照
updateState()
float CrlRobot::getOdometryLeft ( )

左クローラの進んだ距離の値を取得する

左クローラの進んだ距離の累積値をメートル単位で取得します.

戻り値
左エンコーダの値 単位:m
注意
updateState()を呼び出さない限り,情報は更新されません
参照
updateState()
float CrlRobot::getOdometryRight ( )

右クローラの進んだ距離を取得する

右クローラの進んだ距離の累積値をメートル単位で取得します.

戻り値
右エンコーダの値 単位:m
注意
updateState()を呼び出さない限り,情報は更新されません
参照
updateState()
float CrlRobot::getThetaDotX ( )

X軸周りの角速度を取得する

戻り値
X軸周りの角速度 単位:rad/srealtimeLoop()
注意
updateState()を呼び出さない限り,情報は更新されません
参照
updateState()
float CrlRobot::getThetaDotY ( )

Y軸周りの角速度を取得する

戻り値
Y軸周りの角速度 単位:rad/s
注意
updateState()を呼び出さない限り,情報は更新されません
参照
updateState()
float CrlRobot::getThetaDotZ ( )

Z軸周りの角速度を取得する

戻り値
Z軸周りの角速度 単位:rad/s
注意
updateState()を呼び出さない限り,情報は更新されません
参照
updateState()
float CrlRobot::getThetaX ( )

X軸周りの姿勢角度を取得する

戻り値
X軸周りの姿勢角度 単位:rad [-pi/2, +3pi/2]
注意
updateState()を呼び出さない限り,情報は更新されません
参照
updateState()
float CrlRobot::getThetaY ( )

Y軸周りの姿勢角度を取得する

戻り値
Y軸周りの姿勢角度 単位:rad [?,?]
注意
updateState()を呼び出さない限り,情報は更新されません
参照
updateState()
float CrlRobot::getThetaZ ( )

Z軸周りの姿勢角度を取得する

戻り値
Z軸周りの姿勢角度 単位:rad [?,?]
注意
updateState()を呼び出さない限り,情報は更新されません
参照
updateState()
void CrlRobot::init ( )

クロールの初期化

クロールを使用する前に必ず呼び出してください. 加速度,ジャイロセンサのキャリブレーションを行うので約1.5秒程度の時間を要します. その際,クロールは水平な場所に置き,安静にしてください.

戻り値
なし
警告
このメンバ関数を呼ばずに他のメンバ関数を呼び出すと予期せぬエラーが発生します.
注意
キャリブレーション中に水平な場所に置き,安静にしない場合,正しくセンサの値を得られません.
void CrlRobot::realtimeLoop ( )

ループが一定間隔になるよう調節する

このメンバ関数は,前回このメンバ関数がリターンした時刻からdt秒後にリターンします. このメンバ関数をループの中で呼び出すと,そのループは正確にdt秒起きに実行されます. この特性はPID制御など,正確なリアルタイム性を求められる場合に非常に有効です.

戻り値
なし
警告
ループ内の処理がdt秒を超える場合にはこのメンバ関数は正しく動作せず,直ちにリターンします.
参照
setDt(float dt)
void CrlRobot::resetEncoderLeft ( )

左エンコーダの累積値を0に設定する

左エンコーダの累積値などのリセットなどに利用ください.

戻り値
なし
void CrlRobot::resetEncoderRight ( )

右エンコーダの累積値を0に設定する

右エンコーダの累積値などのリセットなどに利用ください.

戻り値
なし
void CrlRobot::setDt ( float  dt)

ループ間隔を設定する

このメンバ関数は,realtimeLoop()で実現されるループの時間間隔を指定します. ループ内の演算時間が,設定時間を超えた場合LED2が点灯し, ユーザに対して,設定時間内で演算が終了しなかったことを知らせます. ユーザーがこの関数を使用する場合は,LED2は使用しないでください.

引数
dtループ間隔 単位:秒
戻り値
なし
警告
このメンバ関数を呼び出さない場合ループ間隔として,初期値として0秒が指定され, realtimeLoop()が呼ばれた場合には,即時リターンされます.
参照
realtimeLoop()
void CrlRobot::setKalman ( bool  enable_kalman)

センサヒュージョンの方法を設定する

このメンバ関数は,センサのヒュージョン方法を設定します. このメンバ関数を呼び出さない場合,相補フィルタによってセンサヒュージョンを行います.

引数
enable_kalmanカルマンフィルタを有効にする場合true,相補フィルタを有効にする場合false
注意
カルマンフィルタを用いてセンサヒュージョンを行う場合,2 [ms]の計算時間がかかります
戻り値
なし
void CrlRobot::setMotorLeft ( float  motor_left)

左モーターの出力を設定

左モーターの出力を-1.0〜0.0〜1.0でリニアに設定します.

引数
motor_left左モータの出力 -1.0:最大出力で後退〜0.0:停止〜1.0:最大出力で前進
戻り値
なし
注意
updateState()を呼び出さない限り,情報は更新されません
参照
updateState()
void CrlRobot::setMotorRight ( float  motor_right)

右モーターの出力を設定

右モーターの出力を-1.0〜0.0〜1.0でリニアに設定します.

引数
motor_right右モータの出力 -1.0:最大出力で後退〜0.0:停止〜1.0:最大出力で前進
戻り値
なし
注意
updateState()を呼び出さない限り,情報は更新されません
参照
updateState()
void CrlRobot::updateState ( )

クロールの状態を更新

このメンバ関数では,setMotorLeft(),setMotorRight()などで設定したモータ出力を実際の出力に適用します. また,getEncoderLeft()など各種状態・センサ取得関数で得られる情報の更新も行われます.

戻り値
なし
注意
このメンバ関数が呼ばれない限り,モータ出力や,センサの値は更新されません.
覚え書き
制御ループを実装する場合にはrealtimeLoop()の直下で呼び出すことを推奨します.

このクラス詳解は次のファイルから抽出されました: