ユーザ定義コントローラ基本クラス [詳細]
#include <Controller.h>
Public メソッド | |
bool | attach (const char *server, int port, const char *myname) |
モータを動かします | |
void | loopMain () |
コントローラループ関数 | |
Static Public メソッド | |
static void | init () |
! コントローラ初期化関数 | |
Protected メソッド | |
ViewImage * | captureView (ColorBitType cbtype, ImageDataSize size, int id) |
エージェント視点画像を取得する(サービスプロバイダによる) | |
ViewImage * | captureView (ColorBitType cbtype, ImageDataSize size) |
エージェント視点画像を取得する(サービスプロバイダによる) | |
Controller () | |
コンストラクタ | |
bool | detectEntities (std::vector< std::string > &v, int id) |
視野内に存在するエンティティの検出(サービスプロバイダによる) | |
bool | detectEntities (std::vector< std::string > &v) |
視野内に存在するエンティティの検出(サービスプロバイダによる) | |
void | differentialWheelsSetSpeed (const char *simObjName, double left, double right) |
void | differentialWheelsSetSpeed (double left, double right) |
unsigned char | distanceSensor (double start=0.0, double end=255.0, int id=1) |
カメラ視線にあるオブジェクトまでの距離を得る | |
DepthImage * | distanceSensor1D (double start=0.0, double end=255.0, int id=1, ImageDataSize size=IMAGE_320X1) |
カメラ視線にあるオブジェクトまでの1次元距離データを得る | |
DepthImage * | distanceSensor2D (double start=0.0, double end=255.0, int id=1, ImageDataSize size=IMAGE_320X240) |
カメラ視線にあるオブジェクトまでの2次元距離データを得る | |
bool | getAllEntities (std::vector< std::string > &v) |
シミュレーション世界内に存在するすべてのエンティティの名前を取得する | |
double | getAxleLength (const char *simObjName) |
double | getAxleLength () |
double | getLeftEncoderNoise (const char *simObjName) |
double | getLeftEncoderNoise () |
double | getLeftWheelRadius (const char *simObjName) |
double | getLeftWheelRadius () |
SimObj * | getObj (const char *name) |
指定のエンティティを取得する | |
double | getRand () |
double | getRightEncoderNoise (const char *simObjName) |
double | getRightEncoderNoise () |
double | getRightWheelRadius (const char *simObjName) |
double | getRightWheelRadius () |
Text * | getText (RawSound &sound) |
音声データを音声認識処理に掛ける | |
bool | isProcessing () |
コントローラが処理中であるか? | |
void | onPostEvent () |
コールバック関数を呼び出した後の処理を実装する | |
void | onPreEvent () |
コールバック関数を呼び出す前の処理を実装する | |
void | setWheelProperty (const char *objectName, char *leftWheelName, double leftMotorConsumption, double leftWheelMaxSpeed, double leftWheelSpeedUnit, double leftSlipNoise, double leftEncoderResolution, double leftMaxForce, char *rightWheelName, double rightMotorConsumption, double rightWheelMaxSpeed, double rightWheelSpeedUnit, double rightSlipNoise, double rightEncoderResolution, double rightMaxForce) |
Webots互換のパラメータを設定します。変数の先頭にleftがつくものは左側車輪の設定、rightのつくものは右側車輪の設定. | |
void | setWheelProperty (char *leftWheelName, double leftMotorConsumption, double leftWheelMaxSpeed, double leftWheelSpeedUnit, double leftSlipNoise, double leftEncoderResolution, double leftMaxForce, char *rightWheelName, double rightMotorConsumption, double rightWheelMaxSpeed, double rightWheelSpeedUnit, double rightSlipNoise, double rightEncoderResolution, double rightMaxForce) |
Webots互換のパラメータを設定します。変数の先頭にleftがつくものは左側車輪の設定、rightのつくものは右側車輪の設定. |
ユーザ定義コントローラ基本クラス
エージェントコントローラはこのクラスを継承したクラスを作 成し、そこにエージェントの振舞いを記述する。
Controller.h の 179 行で定義されています。
Controller::Controller | ( | ) | [protected] |
コンストラクタ
bool Controller::attach | ( | const char * | server, | |
int | port, | |||
const char * | myname | |||
) |
モータを動かします
左車輪をスリップさせます。 スリップ量はleftSlipNoiseから算出される。 右車輪をスリップさせます。 スリップ量はleftSlipNoiseから算出される。 角速度と電力から、トルクを算出する。 モータの計算式は下記の式に従うとする。 T P = F・rω = ーー ・ rω = 2πTf r P : 消費電力[W] F : タイヤにかかる力[N] r : タイヤの半径[m] ω : 角周波数[rad/sec] T : トルク[N・m] f : 周波数(回転数)[Hz]
motorConsumption | モータの電力[W] | |
radius | 車輪の半径[m] | |
wheelSpeed | 車輪の角速度[rad/sec] |
jointName | ジョイント名 | |
motorConsumption | 電力[W] エージェントにコントローラを割り当てる シミュレーションサーバに接続し、指定したエージェントに当コントローラを割り当てる | |
server | シミュレーションサーバ(IPアドレスまたはホスト名) | |
port | シミュレーションサーバポート番号 | |
myname | エージェント名 |
ControllerImplを再定義しています。
ViewImage* Controller::captureView | ( | ColorBitType | cbtype, | |
ImageDataSize | size, | |||
int | id | |||
) | [protected] |
エージェント視点画像を取得する(サービスプロバイダによる)
cbtype | 画像タイプ | |
size | 画像サイズ | |
id | カメラID |
!= | NULL 画像データ | |
NULL | 失敗 |
ViewImage* Controller::captureView | ( | ColorBitType | cbtype, | |
ImageDataSize | size | |||
) | [protected] |
エージェント視点画像を取得する(サービスプロバイダによる)
cbtype | 画像タイプ | |
size | 画像サイズ |
!= | NULL 画像データ | |
NULL | 失敗 |
bool Controller::detectEntities | ( | std::vector< std::string > & | v, | |
int | id | |||
) | [protected] |
視野内に存在するエンティティの検出(サービスプロバイダによる)
v | エンティティ名を格納するコンテナ | |
id | カメラID |
true | 成功 | |
false | 失敗 |
bool Controller::detectEntities | ( | std::vector< std::string > & | v | ) | [protected] |
視野内に存在するエンティティの検出(サービスプロバイダによる)
v | エンティティ名を格納するコンテナ |
true | 成功 | |
false | 失敗 |
void Controller::differentialWheelsSetSpeed | ( | const char * | simObjName, | |
double | left, | |||
double | right | |||
) | [protected] |
左右の車輪にそれぞれことなるスピードを与える
simObjName | SimObjの名前 | |
left | 左車輪の角速度 | |
right | 右車輪の角速度 |
void Controller::differentialWheelsSetSpeed | ( | double | left, | |
double | right | |||
) | [protected] |
自分自身の左右の車輪にそれぞれことなるスピードを与える
left | 左車輪の角速度 | |
right | 右車輪の角速度 |
unsigned char Controller::distanceSensor | ( | double | start = 0.0 , |
|
double | end = 255.0 , |
|||
int | id = 1 | |||
) | [protected] |
カメラ視線にあるオブジェクトまでの距離を得る
id | カメラID |
DepthImage* Controller::distanceSensor1D | ( | double | start = 0.0 , |
|
double | end = 255.0 , |
|||
int | id = 1 , |
|||
ImageDataSize | size = IMAGE_320X1 | |||
) | [protected] |
カメラ視線にあるオブジェクトまでの1次元距離データを得る
id | カメラID |
DepthImage* Controller::distanceSensor2D | ( | double | start = 0.0 , |
|
double | end = 255.0 , |
|||
int | id = 1 , |
|||
ImageDataSize | size = IMAGE_320X240 | |||
) | [protected] |
カメラ視線にあるオブジェクトまでの2次元距離データを得る
id | カメラID |
bool Controller::getAllEntities | ( | std::vector< std::string > & | v | ) | [protected] |
シミュレーション世界内に存在するすべてのエンティティの名前を取得する
v | エンティティ名を格納するコンテナ |
true | 成功 | |
false | 失敗 |
double Controller::getAxleLength | ( | const char * | simObjName | ) | [protected] |
車軸の長さを取得します
double Controller::getAxleLength | ( | ) | [protected] |
自分自身の車軸の長さを取得します
double Controller::getLeftEncoderNoise | ( | const char * | simObjName | ) | [protected] |
左車輪のエンコーダのノイズ蓄積量を取得します
double Controller::getLeftEncoderNoise | ( | ) | [protected] |
自分自身の左車輪のエンコーダのノイズ蓄積量を取得します
double Controller::getLeftWheelRadius | ( | const char * | simObjName | ) | [protected] |
左車輪の半径を取得します
double Controller::getLeftWheelRadius | ( | ) | [protected] |
自分自身の左車輪の半径を取得します
SimObj* Controller::getObj | ( | const char * | name | ) | [protected] |
指定のエンティティを取得する
name | エンティティ名 |
double Controller::getRand | ( | ) | [protected] |
0 - 1までの一様分布の乱数を生成します
double Controller::getRightEncoderNoise | ( | const char * | simObjName | ) | [protected] |
右車輪のエンコーダのノイズ蓄積量を取得します
double Controller::getRightEncoderNoise | ( | ) | [protected] |
自分自身の右車輪のエンコーダのノイズ蓄積量を取得します
double Controller::getRightWheelRadius | ( | const char * | simObjName | ) | [protected] |
右車輪の半径を取得します
double Controller::getRightWheelRadius | ( | ) | [protected] |
自分自身の右車輪の半径を取得します
音声データを音声認識処理に掛ける
音声認識サービスプロバイダに音声データを転送し、音声認識結果(テキスト)を得る。
sound | recvSoundメソッドにより取得した音声データ |
!=NULL | 成功 | |
NULL | 失敗 |
static void Controller::init | ( | ) | [static] |
! コントローラ初期化関数
bool Controller::isProcessing | ( | ) | [protected, virtual] |
void Controller::loopMain | ( | ) |
コントローラループ関数
void Controller::onPostEvent | ( | ) | [protected, virtual] |
void Controller::onPreEvent | ( | ) | [protected, virtual] |
void Controller::setWheelProperty | ( | const char * | objectName, | |
char * | leftWheelName, | |||
double | leftMotorConsumption, | |||
double | leftWheelMaxSpeed, | |||
double | leftWheelSpeedUnit, | |||
double | leftSlipNoise, | |||
double | leftEncoderResolution, | |||
double | leftMaxForce, | |||
char * | rightWheelName, | |||
double | rightMotorConsumption, | |||
double | rightWheelMaxSpeed, | |||
double | rightWheelSpeedUnit, | |||
double | rightSlipNoise, | |||
double | rightEncoderResolution, | |||
double | rightMaxForce | |||
) | [protected] |
Webots互換のパラメータを設定します。変数の先頭にleftがつくものは左側車輪の設定、rightのつくものは右側車輪の設定.
objectName | エージェントの名前 | |
leftWheelName | 車輪のジョイント名 | |
leftMotorConsumption | 車輪の消費電力(W) | |
leftWheelRadius | 車輪の半径(m) | |
leftWheelMaxSpeed | 車輪の最大角速度(rad/s) | |
leftWheelSpeedUnit | wb_differential_wheels_set_speed で設定される速度の単位をセット(rad/s) | |
leftSlipNoise | 一様分布にしたがう車輪のスリップ(0.0 - 1.0) | |
leftEncoderNoise | スリップノイズの蓄積 | |
leftEncoderResolution | 1[rad]あたりどの程度のスリップが生じるか | |
leftMaxForce | 最大トルク | |
rightWheelName | 車輪のジョイント名 | |
rightMotorConsumption | 車輪の消費電力(W) | |
rightWheelRadius | 車輪の半径(m) | |
rightWheelMaxSpeed | 車輪の最大角速度(rad/s) | |
rightWheelSpeedUnit | wb_differential_wheels_set_speed で設定される速度の単位をセット(rad/s) | |
rightSlipNoise | 一様分布にしたがう車輪のスリップ(0.0 - 1.0) | |
rightEncoderNoise | スリップノイズの蓄積 | |
rightEncoderResolution | 1[rad]あたりどの程度のスリップが生じるか | |
rightMaxForce | 最大トルク |
void Controller::setWheelProperty | ( | char * | leftWheelName, | |
double | leftMotorConsumption, | |||
double | leftWheelMaxSpeed, | |||
double | leftWheelSpeedUnit, | |||
double | leftSlipNoise, | |||
double | leftEncoderResolution, | |||
double | leftMaxForce, | |||
char * | rightWheelName, | |||
double | rightMotorConsumption, | |||
double | rightWheelMaxSpeed, | |||
double | rightWheelSpeedUnit, | |||
double | rightSlipNoise, | |||
double | rightEncoderResolution, | |||
double | rightMaxForce | |||
) | [protected] |
Webots互換のパラメータを設定します。変数の先頭にleftがつくものは左側車輪の設定、rightのつくものは右側車輪の設定.
leftWheelName | 車輪のジョイント名 | |
leftMotorConsumption | 車輪の消費電力(W) | |
leftWheelRadius | 車輪の半径(m) | |
leftWheelMaxSpeed | 車輪の最大角速度(rad/s) | |
leftWheelSpeedUnit | wb_differential_wheels_set_speed で設定される速度の単位をセット(rad/s) | |
leftSlipNoise | 一様分布にしたがう車輪のスリップ(0.0 - 1.0) | |
leftEncoderNoise | スリップノイズの蓄積 | |
leftEncoderResolution | 1[rad]あたりどの程度のスリップが生じるか | |
leftMaxForce | 最大トルク | |
rightWheelName | 車輪のジョイント名 | |
rightMotorConsumption | 車輪の消費電力(W) | |
rightWheelRadius | 車輪の半径(m) | |
rightWheelMaxSpeed | 車輪の最大角速度(rad/s) | |
rightWheelSpeedUnit | wb_differential_wheels_set_speed で設定される速度の単位をセット(rad/s) | |
rightSlipNoise | 一様分布にしたがう車輪のスリップ(0.0 - 1.0) | |
rightEncoderNoise | スリップノイズの蓄積 | |
rightEncoderResolution | 1[rad]あたりどの程度のスリップが生じるか | |
rightMaxForce | 最大トルク |