このページでは Educator Vehicle を操作するための各RTC のインストール方法について説明します。
EducatorVehicle は EV3 の走行速度の入力、センサーのデータの出力等を行うためのコンポーネントです。
クロス環境で以下のコマンドを入力してください。
git clone https://github.com/Nobu19800/EducatorVehicle cd EducatorVehicle cmake . make
生成された src/EducatorVehicleComp を EV3 に転送してください。
| EducatorVehicle | ||
| InPort | ||
| 名前 | データ型 | 説明 |
| velocity2D | RTC::TimedVelocity2D | 目標速度 |
| angle | RTC::TimedDouble | モーターMの角度 |
| lcd | RTC::CameraImage | LCDに表示する画像データ |
| sound | RTC::TimedString | 出力する音声 |
| OutPort | ||
| 名前 | データ型 | 説明 |
| odometry | RTC::TimedPose2D | 現在の位置・姿勢 |
| current_vel | RTC::TimedVelocity2D | 現在の速度・角速度 |
| ultrasonic | RTC::RangeData | 超音波センサーで計測した距離 |
| gyro | RTC::TimedDouble | ジャイロセンサーで計測した角度 |
| color | RTC::TimedString | カラーセンサーで計測した色 |
| light_reflect | RTC::TimedDouble | カラーセンサーで計測した反射光の強さ |
| touch | RTC::TimedBoolean | タッチセンサーのオンオフ。右側が0番目の要素、左側が1番目の要素 |
| コンフィギュレーションパラメーター | ||
| 名前 | デフォルト値 | 説明 |
| wheelRadius | 0.028 | 車輪の半径 |
| wheelDistance | 0.054 | タイヤ間距離の1/2 |
| medium_motor_speed | 1.6 | モーターMの速度 |
touch で入力したデータの0番目が右側(3番ポート)のタッチセンサー、1番目が左側(1番ポート)のタッチセンサーに対応しています。
sound による音声の入力には以下のコマンドを利用できます。
tone,100,1000
画像ファイルを saveBinaryImage.exe にドラッグ・アンド・ドロップすれば変換できます。
LDC で表示する画像データは、以下のコンポーネントで画像データの変換を行えば入力可能です。 Windows で使用する場合は、release フォルダーの ImageConversionLCDComp.exe で起動できます。
| ImageConversionLCD | ||
| InPort | ||
| 名前 | データ型 | 説明 |
| out | RTC::CameraImage | 変換前の画像データ |
| OutPort | ||
| 名前 | データ型 | 説明 |
| out | RTC::CameraImage | 変換後の画像データ |
例えば、OpenRTM-aist 付属のサンプルコンポーネント OpenCVCamera と接続すれば、EV3 にカメラ画像を表示させることができます。
あるいは、指定の画像を入力するということもできます。
ControlEducatorVehicle を用いることによって以下の移動ロボット(Educator Vehicle 改)の制御ができます。組み立て方は このページ を参考にしてください。
超音波センサーを使用しない場合は Educator Vehicle の制御にも使用できます。
クロス環境で以下のコマンドを入力してください。
git clone https://github.com/Nobu19800/ControlEducatorVehicle cd ControlEducatorVehicle cmake . make
生成された src/ControlEducatorVehicleComp を EV3 に転送してください。
| ControlEducatorVehicle | ||
| InPort | ||
| 名前 | データ型 | 説明 |
| target_velocity_in | RTC::TimedVelocity2D | 目標速度 |
| current_pose | RTC::TimedPose2D | 現在位置・姿勢 |
| ultrasonic | RTC::TimedRangeData | 超音波センサーで計測した距離 |
| light_reflect | RTC::TimedDouble | カラーセンサーで計測した反射光の強さ |
| touch | TimedBoolean | タッチセンサーのオンオフ |
| OutPort | ||
| 名前 | データ型 | 説明 |
| target_velocity_out | RTC::TimedVelocity2D | 補正後の目標速度 |
| angle | RTC::TimedDouble | モーターMの角度 |
| コンフィギュレーションパラメーター | ||
| 名前 | デフォルト値 | 説明 |
| sensor_height | 0.2 | 走行できる地面があると判定する超音波センサーの計測値 |
| back_speed | 0.1 | 後退運動をする速さ |
| back_time | 1.0 | 後退運動する時間 |
| rotate_speed | 0.8 | 回転運動をする速さ |
| rotate_time | 2.0 | 回転運動する時間 |
| medium_motor_range | 1.6 | モーターMの動作範囲 |
タッチセンサーがオンになった場合、まず③のように back_speed で指定した速さで back_time で指定した時間だけ後退します。 そして④のように rotate_speed で指定した角速度で rotate_time で指定した時間だけ回転します。 回転する方向はオンになったタッチセンサーと逆方向です。
超音波センサーで地面までの距離を計測して停止、超音波センサーを回転させて走行可能な地面を探索する操作を実行するためには、EV3 の Education Vehicle を組み立ててさらに超音波センサーを回転させるように取り付ける必要があります。
動作手順は以下のようになっています。
机の上などを走行している場合で、②のようぬ机の端まで移動したとします。 超音波センサーで計測した距離が sensor_height 以上になった場合、一旦停止します。 そして③のように超音波センサーを右側に90度回転させて地面までの高さが sensor_height 以下かを判定します。 sensor_height 以上だった場合は④のように左方向に180度回転させて地面までの高さが sensor_height 以下かを判定します。 sensor_height 以下だった場合は、超音波センサーを向けた方向に Education Vehicle を回転させます。
上記の RTC を一括でインストールします。 以下のコマンドを入力してください。
git clone https://github.com/Nobu19800/EducatorVehicle_script_ev3dev cd EducatorVehicle_script_ev3dev sh Component/install_rtc.sh