チュートリアル(RTM講習会)

チュートリアル(EV3、Windows、第2部)

はじめに

このページではシミュレーター上の Educator Vehicleを操作するためのコンポーネントの作成手順を説明します。 Educator VehicleはレゴマインドストームEV3の組み立て例の一つです。

ev32_2.png

資料のダウンロード

まずは資料をダウンロードしてください。

ZIPファイルは Lhaplus 等で展開してください。

インターネットに接続できない環境で講習会を実施している場合がありますので、その場合は配布のUSBメモリーに入れてあります。

付属のシミュレータで以下の Educator Vehicle 改のシミュレーションができます。

/jp/node/6038

Lモーター、Mモーターの制御だけではなく、タッチセンサー、ジャイロセンサー、超音波センサーのシミュレーションも可能になっています。

作成する RTコンポーネント

  • RobotController コンポーネント

EV3Simulator コンポーネントと接続してシミュレーター上のロボットを操作するためのコンポーネントです。

RobotController コンポーネントの作成

GUI(スライダー)によりシミュレーター上のロボットの操作を行い、タッチセンサーがオンの時には自動的に停止するコンポーネントの作成を行います。

tutorial_ev3_irex1.png

作成手順

作成手順は以下の通りです。

  • 開発環境の確認
  • コンポーネントの仕様を決める
  • RTC Builderによるソースコードのひな形の作成
  • ソースコードの編集
  • コンポーネントの動作確認

開発環境の確認

以下の環境を想定しています。

コンポーネントの仕様

RobotController は目標速度を出力するアウトポート、センサー値を入力するインポート、目標速度を設定するコンフィギュレーションパラメーターを持っています。

コンポーネント名称 RobotController
InPort
ポート名 in
TimedBooleanSeq
説明 センサー値
OutPort
ポート名 out
TimedVelocity2D
説明 目標速度
Configuration
パラメーター名 speed_x
double
デフォルト値 0.0
制約 -1.5<x<1.5
Widget slider
Step 0.01
説明 直進速度の設定
Configuration
パラメーター名 speed_r
double
デフォルト値 0.0
制約 -2.0<x<2.0
Widget slider
Step 0.01
説明 回転速度の設定

TimedVelocity2D 型について

2次元平面上の移動ロボットの移動速度を格納するデータ型である TimedVelocity2D 型を使用します。

     struct Velocity2D
     {
           /// Velocity along the x axis in metres per second.
           double vx;
           /// Velocity along the y axis in metres per second.
           double vy;
           /// Yaw velocity in radians per second.
           double va;
     };
 
 
     struct TimedVelocity2D
     {
           Time tm;
           Velocity2D data;
     };

このデータ型にはX軸方向の速度vx、Y軸方向の速度vy、Z軸周りの回転速度vaが格納できます。

vxvyvaはロボット中心座標系での速度を表しています。


tutorial_ev3_irex3.png

vxはX方向の速度、vyはY方向の速度、vaはZ軸周りの角速度です。

Educator Vehicle改のように2個の車輪が左右に取り付けられているロボットの場合、横滑りしないと仮定するとvyは0になります。

直進速度vx、回転速度vaを指定することでロボットの操作を行います。

タッチセンサーについて


tutorial_ev3_irex2.png

RobotController コンポーネントのひな型の生成

RobotController コンポーネントの雛型の生成は、RTCBuilder を用いて行います。

RTCBuilder の起動

Eclipse では、各種作業を行うフォルダーを「ワークスペース」(Work Space)とよび、原則としてすべての生成物はこのフォルダーの下に保存されます。 ワークスペースはアクセスできるフォルダーであれば、どこに作っても構いませんが、このチュートリアルでは以下のワークスペースを仮定します。

  • C:\workspace

まずは Eclipse を起動します。 Windows 8.1の場合は「スタート」>「アプリビュー(右下矢印)」>「OpenRTM-aist 1.1.2」>「OpenRTP」をクリックすると起動できます。

最初にワークスペースの場所を尋ねられますので、上記のワークスペースを指定してください。

/ja/node/6026

すると、以下のようなWelcomeページが表示されます。


/ja/node/6026
Eclipse の初期起動時の画面

Welcomeページはいまは必要ないので左上の「×」ボタンをクリックして閉じてください。

右上の [Open Perspective] ボタンをクリックしてください。

/ja/node/6026
パースペクティブの切り替え

「RTC Builder」を選択することで、RTCBuilder が起動します。メニューバーに「カナヅチとRT」の RTCBuilder のアイコンが表示されます。

/ja/node/6550
パースペクティブの選択

新規プロジェクトの作成

RobotController コンポーネントを作成するために、RTC Builder で新規プロジェクトを作成する必要があります。

左上の [Open New RTCBuilder Editor] のアイコンをクリックしてください。

/ja/node/6057
RTC Builder 用プロジェクトの作成

「プロジェクト名」欄に作成するプロジェクト名 (ここでは RobotController) を入力して [終了] ボタンをクリックします。

RT-Component-BuilderProject_1.png

指定した名称のプロジェクトが生成され、パッケージエクスプローラ内に追加されます。

PackageExplolrer_1.png

生成したプロジェクト内には、デフォルト値が設定された RTC プロファイル XML(RTC.xml) が自動的に生成されます。

RTC プロファイルエディタの起動

RTC.xml が生成された時点で、このプロジェクトに関連付けられているワークスペースとして RTCBuilder のエディタが開くはずです。 もし起動しない場合はパッケージエクスプローラーの RTC.xml をダブルクリックしてください。

/ja/node/6026

プロファイル情報入力とコードの生成

まず、いちばん左の「基本」タブを選択し、基本情報を入力します。先ほど決めた RobotController コンポーネントの仕様(名前)の他に、概要やバージョン等を入力してください。 ラベルが赤字の項目は必須項目です。その他はデフォルトで構いません。

  • コンポーネント名: RobotController
  • 概要: 任意(Robot Controller component)
  • バージョン: 任意(1.0.0)
  • ベンダ名: 任意
  • カテゴリ: 任意(Controller)


/ja/node/6381
基本情報の入力


次に、「アクティビティ」タブを選択し、使用するアクションコールバックを指定します。

RobotController コンポーネントでは、onActivated()、onDeactivated()、onExecute() コールバックを使用します。下図のように①の onAtivated をクリック後に②のラジオボタンにて [ON] にチェックを入れます。 onDeactivated、onExecute についても同様の手順を行います。


Activity_1.png
アクティビティコールバックの選択


さらに、「データポート」タブを選択し、データポートの情報を入力します。 先ほど決めた仕様を元に以下のように入力します。なお、変数名や表示位置はオプションで、そのままで結構です。


  • InPort Profile:
    • ポート名: in
    • データ型: TimedBooleanSeq

  • OutPort Profile:
    • ポート名: out
    • データ型: TimedVelocity2D


DataPort_1.png
データポート情報の入力


次に、「コンフィギュレーション」タブを選択し、先ほど決めた仕様を元に、Configuration の情報を入力します。 制約条件および Widget とは、RTSystemEditor でコンポーネントのコンフィギュレーションパラメーターを表示する際に、スライダー、スピンボタン、ラジオボタンなど、GUI で値の変更を行うためのものです。

直進速度 speed_x、回転速度 speed_r はスライダーのより操作できるようにします。


  • speed_x
    • 名称: speed_x
    • データ型: double
    • デフォルト値: 0.0
    • 制約条件: -1.5<x<1.5
    • Widget: slider
    • Step: 0.01
  • speed_r
    • 名称: speed_r
    • データ型: double
    • デフォルト値: 0.0
    • 制約条件: -2.0<x<2.0
    • Widget: slider
    • Step: 0.01


Configuration_1.png
コンフィグレーション情報の入力


次に、「言語・環境」タブを選択し、プログラミング言語を選択します。 ここでは、C++(言語)を選択します。なお、言語・環境はデフォルト等が設定されておらず、指定し忘れるとコード生成時にエラーになりますので、必ず言語の指定を行うようにしてください。

Language_1.png
プログラミング言語の選択


最後に、「基本」タブにあ [コード生成] ボタンをクリックし、コンポーネントの雛型を生成します。


Generate_1.png
雛型の生成(Generate)


※ 生成されるコード群は、eclipse 起動時に指定したワークスペースフォルダーの中に生成されます。現在のワークスペースは、[ファイル] > [ワークスペースの切り替え..]で確認することができます。

CMake によるビルドに必要なファイルの生成

RTC Builder で生成したコードの中には CMake でビルドに必要な各種ファイルを生成するための CMakeLists.txt が含まれています。 CMake を利用することにより CMakeLists.txt からVisual Studio のプロジェクトファイル、ソリューションファイル、もしくは Makefile 等を自動生成できます。

CMake(cmake-gui) の操作

CMake を利用してビルド環境の Configure を行います。 まずは CMake(cmake-gui) を起動してください。「スタート」>「アプリビュー(右下矢印)」>「CMake 3.7.2」>「CMake (cmake-gui)」をクリックすると起動できます。

CMakeGUI0_1.png
CMake GUI の起動とディレクトリーの指定

画面上部に以下のようなテキストボックスがありますので、それぞれソースコードの場所 (CMakeList.txtがある場所) と、ビルドディレクトリーを指定します。

  • Where is the soruce code
  • Where to build the binaries

ソースコードの場所は RobotController コンポーネントのソースが生成された場所で CMakeList.txt が存在するディレクトリーです。 デフォルトでは <ワークスペースディレクトリー>/RobotController になります。

このディレクトリーはエクスプローラから cmake-gui にドラックアンドドロップすると手入力しなくても設定されます。

ビルドディレクトリーとは、ビルドするためのプロジェクトファイルやオブジェクトファイル、バイナリを格納する場所のことです。 場所は任意ですが、この場合 <ワークスペースディレクトリー>/RobotController/build のように分かりやすい名前をつけた RobotController のサブディレクトリーを指定することをお勧めします。

Where is the soruce code C:\workspace\RobotController
Where to build the binaries C:\workspace\RobotController\build

指定したら、下の [Configure] ボタンをクリックします。すると下図のようなダイアログが表示されますので、生成したいプロジェクトの種類を指定します。 今回は Visual Studio 15 2017 とします。Visual Studio 2013や Visual Studio 2019を利用している方はそれぞれ変更してください。 またプラットフォームにはx64を設定します。32bit版をインストールしている場合はWin32を選択してください。

/ja/node/6310
生成するプロジェクトの種類の指定

ダイアログで [Finish] ボタンをクリックすると Configure が始まります。 問題がなければ下部のログウインドウに「Configuring done」と出力されますので、続けて [Generate] ボタンをクリックします。 「Generating done」と出ればプロジェクトファイル・ソリューションファイル等の出力が完了します。

なお、CMake は Configure の段階でキャッシュファイルを生成しますので、トラブルなどで設定を変更したり環境を変更した場合は [File] > [Delete Cache] でキャッシュを削除して Configure からやり直してください。

ヘッダ、ソースの編集

次に先ほど指定した build ディレクトリーの中の RobotController.sln をダブルクリックして Visual Studio を起動します。

※cmake-gui の新しいバージョンでは cmake-gui 上のボタンをクリックすることで起動できます。


cmake_gui.png

ヘッダ (include/RobotController/RobotController.h) およびソースコード (src/RobotController.cpp) をそれぞれ編集します。 Visual Studio のソリューションエクスプローラから RobotController.h、RobotController.cpp をクリックすることで編集画面が開きます。
/ja/node/6026

アクティビティ処理の実装

RobotController コンポーネントでは、コンフィギュレーションパラメーター(speed_x、speed_y)をスライダーで操作しその値を目標速度としてアウトポート(out)から出力します。 インポート(in) から入力された値を変数に格納して、その値が一定以上の場合は停止するようにします。


onActivated()、onExecute()、onDeactivated() での処理内容を下図に示します。

RCRTC_State_1.png
アクティビティ処理の概要


ヘッダファイル (RobotController.h) の編集

センサー値を一時的に格納する変数 sensor_data を宣言します。

   private:
     bool sensor_data[2];           //センサー値を一時格納する変数

ソースファイル (RobotController.cpp) の編集

下記のように、onActivated()、onDeactivated()、onExecute() を実装します。

 RTC::ReturnCode_t RobotController::onActivated(RTC::UniqueId ec_id)
 {
     //センサー値初期化
     for (int i = 0; i < 2; i++)
     {
         sensor_data[i] = false;
     }
 
     return RTC::RTC_OK;
 }

 RTC::ReturnCode_t RobotController::onDeactivated(RTC::UniqueId ec_id)
 {
          //ロボットを停止する
          m_out.data.vx = 0;
          m_out.data.va = 0;
          m_outOut.write();
  
          return RTC::RTC_OK;
 }

 RTC::ReturnCode_t RobotController::onExecute(RTC::UniqueId ec_id)
 {
     //入力データの存在確認
     if (m_inIn.isNew())
     {
         //入力データ読み込み
         m_inIn.read();
         for (int i = 0; i < m_in.data.length(); i++)
         {
             //入力データ格納
             if (i < 2)
             {
                 sensor_data[i] = m_in.data[i];
             }
         }
     }
 
     //前進するときのみ停止するかを判定
     if (m_speed_x > 0)
     {
         for (int i = 0; i < 2; i++)
         {
             //タッチセンサのオンオフを判定
             if (sensor_data[i] == true)
             {
                 //タッチセンサがオンの場合は停止
                 m_out.data.vx = 0;
                 m_out.data.va = 0;
                 m_outOut.write();
                 return RTC::RTC_OK;
             }
         }
     }
 
     //すべてのタッチセンサがオフの場合はコンフィギュレーションパラメーターの値で操作
     m_out.data.vx = m_speed_x;
     m_out.data.va = m_speed_r;
     m_outOut.write();
 
     return RTC::RTC_OK;
  }

Visual Studio によるビルド

ビルドの実行

Visual Studioの [ビルド] >「ソリューションのビルド」を選択してビルドを行います。


/ja/node/6026
ビルドの実行


RobotController コンポーネントの動作確認

作成した RobotController をシミュレーターコンポーネントと接続して動作確認を行います。

以下より EV3Simulator コンポーネントをダウンロードしてください。

ZIPファイルは Lhaplus 等で展開してください。

インターネットに接続できない環境で講習会を実施している場合がありますので、その場合は配布のUSBメモリーに入れてあります。

RTSystemEditorの起動

OpenRTPのパースペクティブを開くのウインドウからRT System Editorを選択して起動します。


/ja/node/6550

NameService の起動

コンポーネントの参照を登録するためのネームサービスを起動します。


RT System Editorのネームサービス起動ボタンを押すと起動します。

/ja/node/6550

※ 「Start Naming Service」をクリックしても omniNames が起動されない場合は、フルコンピュータ名が14文字以内に設定されているかを確認してください。

RobotController コンポーネントの起動

RobotController コンポーネントを起動します。

RobotController\build\src\Debug(もしくは、Release)フォルダーの RobotControllerComp.exe ファイルを実行してください。

シミュレーターコンポーネントの起動

このコンポーネントは先ほどダウンロードしたファイル(RTM_Tutorial_iREX2017.zip)を展開したフォルダーの EXE/EV3SimulatorComp.exe を実行すると起動します。

コンポーネントの接続

下図のように、RTSystemEditor にて RobotController コンポーネント、EV3Simulator コンポーネントを接続します。 システムダイアグラムは左上のOpen New System Editorボタンで表示できます。

tutorial_ev3_irex9_2.png
コンポーネントの接続

コンポーネントのActivate

RTSystemEditor の上部にあります [All Activate] というアイコンをクリックし、全てのコンポーネントをアクティブ化します。 正常にアクティベートされた場合、下図のように黄緑色でコンポーネントが表示されます。


tutorial_ev3_irex10.png
コンポーネントのアクティブ化


動作確認

下図のようにコンフィギュレーションビューの [編集] ボタンからコンフィギュレーションを変更することができます。


tutorial_ev3_irex6.png

スライダーを操作してシミュレーター上のEducator Vehicle改の操作ができるかを確認してください。


tutorial_ev3_irex7.png
コンフィギュレーションパラメーターの変更


正常に動作している場合は、開始し位置から直進した場合に壁の前で停止します。


tutorial_ev3_irex18.png


正常に動作していない場合は、壁に接触後にそのまま前進を続けます。


tutorial_ev3_irex17.png


実機での動作確認

講習会で EV3実機を用意している場合は実機での動作確認が可能です。

手順は以下の通りです。

  • Educator Vehicle改の組立て
  • EV3アクセスポイントの起動
  • EV3のアクセスポイントに接続
  • ポートの接続
  • コンポーネントのアクティブ化

Educator Vehicle改の組立て

EV3 は分解した状態で参加者に配ります。 組み立て方は以下の通りです。

ただし、Mモーター、超音波センサー、カラーセンサー、ジャイロセンサーについては、講習で使用しないため取り付ける必要はありません。 以下の※の作業については、時間が余った人が実施してください。

まずは土台部分を取り出してください。


s_DSC00463.JPG

最初にMモーターにケーブル(15cm)を接続します※。


s_DSC00446.JPG

次に EV3 本体を取り付けます。 Mモーターにケーブルを接続した場合は、ケーブルが左側の隙間から出るようにしてください。


s_DSC00448.JPG s_DSC00450.JPG



右側のタッチセンサーを取り付けてください。


s_DSC00451.JPG s_DSC00452.JPG



超音波センサーを取り付けてください※。


s_DSC00454.JPG

ケーブルを接続してください。 必須なのは車輪駆動用のLモーター右、Lモーター左、タッチセンサーだけです。 ケーブルに貼り付けたシールにポートの番号、デバイス名を記載してあります。

Lモーター右 ポート C 25cmケーブル
Lモーター左 ポート B 25cmケーブル
Mモーター※ ポートA 25cmケーブル
タッチセンサー右 ポート 3 35cmケーブル
タッチセンサー左 ポート 1 35cmケーブル
超音波センサー※ ポート 4 50cmケーブル
ジャイロセンサー※ ポート 2 25cmケーブル

ケーブルは EV3 の上下に A~D と 1~4 のポートがあるのでそこにケーブルを接続します。


s_DSC00.JPG s_DSC00471.JPG




s_DSC00455.JPG s_DSC00456.JPG



左右にパーツを取り付けます※。 Lモーター右、Lモーター左、Mモーター、タッチセンサー右、タッチセンサー左のケーブルを挟むようにして取り付けてください※。
Lモーター右、タッチセンサー右のケーブルは右側から、Lモーター左、Mモーター、タッチセンサー左は左側から通してください※。


s_DSC00457.JPG


s_DSC00459.JPG

これでとりあえず完成ですが、余裕のある人はジャイロセンサーを取り付けてみてください※。


s_DSC00460.JPG s_DSC00461.JPG



電源の入れ方/切り方

電源の入れ方

中央のボタンを押せば電源が投入されます。


ev3_on.jpg

電源の切り方

EV3 の電源を切る場合は最初の画面で EV3 本体の左上の戻るボタンを押して「Power Off」を選択してください。


ev3_off.jpg


s_DSC01033.JPG

再起動

再起動する場合は最初の画面で EV3 本体の左上の戻るボタンを押して「Reboot」を選択してください。

リセット

ev3dev の起動が途中で停止する場合には、中央ボタン、戻るボタン(左上)、左ボタンを同時押ししてください。画面が消えたら戻るボタンを離すと再起動します。


ev3_reset.jpg

アクセスポイントの設定

EV3 の操作画面から「File Browser」を上下ボタンで選択して中央のボタンを押してください。

 ------------------------------
 192.168.0.1
 ------------------------------
 [File Browser               > ]
  Device Browser             >
  Wireless and Networks      > 
  Battery                    >
  Open Roberta Lab           >
  About                      >
 ------------------------------

次に scripts を選択して中央ボタンを押してください。

 ------------------------------
 192.168.0.1
 ------------------------------
         File Browser
 ------------------------------
 /home/robot
 ------------------------------
 [scripts                     ]
 ・・
 ・・
 ------------------------------

次の画面から start_ap.sh を選択して中央ボタンを押すとスクリプトが起動します。

 ------------------------------
 192.168.0.1
 ------------------------------
         File Browser
 ------------------------------
 /home/robot/scripts
 ------------------------------
 ../
 Component/
 ・・
 [start_ap.sh                 ]
 ------------------------------

しばらくすると無線LANアクセスポイントが起動するので、指定の SSID のアクセスポイントに接続してください。 SSID、パスワードは EV3 に貼り付けたテープに記載してあります。


tutorial_ev3_irex26.png

アクセスポイントに接続

アクセスポイントへの接続方法は以下のページを参考にしてください。

SSID、パスワードは EV3に貼り付けたシールに記載してあります。

まず右下のネットワークアイコンをクリックしてください。


/ja/node/6042

次に一覧から ev3_*** を選択してください。


/ja/node/6042

パスワードを入力してください。


/ja/node/6042

※ネットワークが切り替わった場合にネームサーバーへのコンポーネントの登録やポートの接続が失敗する場合があるのでネームサーバ、コンポーネントを一旦全て終了してください。 ネットワーク切り替え後に起動した場合には問題ないので、終了させる必要はありません。

ネームサーバー追加

続いてRTシステムエディタの [ネームサーバー追加] ボタンで 192.168.0.1 を追加してください。


tutorial_raspimouse0.png tutorial_ev3_irex12.png



するとEducatorVehicle0という RTC が見えるようになります。

ポートの接続

RTシステムエディタで EducatorVehicle、RobotController コンポーネントを以下のように接続します。

tutorial_ev3_irex11.png

アクティブ化

そして RTC をアクティブ化すると EV3の操作ができるようになります。

チュートリアル(EV3、Ubuntu、第2部)

はじめに

このページではシミュレーター上の Educator Vehicleを操作するためのコンポーネントの作成手順を説明します。 Educator VehicleはレゴマインドストームEV3の組み立て例の一つです。

ev32_2.png

資料のダウンロード

まずは資料をダウンロードしてください。

付属のシミュレータで以下の Educator Vehicle 改のシミュレーションができます。

/jp/node/6038

Lモーター、Mモーターの制御だけではなく、タッチセンサー、ジャイロセンサー、超音波センサーのシミュレーションも可能になっています。

作成する RTコンポーネント

  • RobotController コンポーネント

EV3Simulator コンポーネントと接続してシミュレーター上のロボットを操作するためのコンポーネントです。

RobotController コンポーネントの作成

GUI(スライダー)によりシミュレーター上のロボットの操作を行い、タッチセンサーがオンの時には自動的に停止するコンポーネントの作成を行います。

tutorial_ev3_irex1.png

作成手順

作成手順は以下の通りです。

  • 開発環境の確認
  • コンポーネントの仕様を決める
  • RTC Builderによるソースコードのひな形の作成
  • ソースコードの編集
  • コンポーネントの動作確認

開発環境の確認

Linux (ここでは Ubuntu 18.04 を仮定) 上に開発環境を構築します。

OpenRTM-aistのインストール

 $ wget https://raw.githubusercontent.com/OpenRTM/OpenRTM-aist/master/scripts/pkg_install_ubuntu.sh
 $ pkg_install_ubuntu.sh -l all --yes

JDKのインストール

 # Ubuntu 18.04、18.10の場合
 $ sudo apt-get install openjdk-8-jdk
 # Ubuntu 16.04の場合
 $ sudo apt-get install default-jdk

Ubuntu 18.04、18.10の場合は以下のコマンドでjava8に切り替えます。

 $ sudo update-alternatives --config java

eclipse起動後、RTSystemEditor でネームサーバに接続できない場合があります。その場合、/etc/hosts の localhost の行に自ホスト名を追記してください。

 $ hostname
 ubuntu1404 ← ホスト名は ubuntu1404
 $ sudo vi /etc/hosts

 127.0.0.1       localhost
 を以下のように変更
 127.0.0.1       localhost ubuntu1404

gitのインストール

 $ sudo apt-get install git

cmake-guiのインストール

 $ sudo apt-get install cmake-qt-gui

Code::Blocks のインストール

Code::Blocks は C/C++ に対応した統合開発環境です。 以下のコマンドでインストールできます。

 $ sudo apt-get install codeblocks

最新版を入手したい場合は以下のコマンドを入力します。

 $ sudo add-apt-repository ppa:damien-moore/codeblocks-stable
 $ sudo apt-get update
 $ sudo apt-get install codeblocks

Premake、GLUTのインストール

ODEのビルドに必要です。

 $ sudo apt-get install premake4 freeglut3-dev

EV3Simulator コンポーネント

シミュレーターコンポーネントについては手動でビルドを行います。 以下のコマンドを入力してください。

 $ wget https://raw.githubusercontent.com/OpenRTM/RTM_Tutorial_EV3/master/script/install_ev3_simulator.sh
 $ sudo sh install_ev3_simulator.sh

インターネットに接続できない環境で講習会を実施している場合がありますので、その場合は配布の USBメモリー内のスクリプトを起動してください。

 $ sudo sh install_ev3_simulator_usb.sh

コンポーネントの仕様

RobotController は目標速度を出力するアウトポート、センサー値を入力するインポート、目標速度を設定するコンフィギュレーションパラメーターを持っています。

コンポーネント名称 RobotController
InPort
ポート名 in
TimedBooleanSeq
説明 センサー値
OutPort
ポート名 out
TimedVelocity2D
説明 目標速度
Configuration
パラメーター名 speed_x
double
デフォルト値 0.0
制約 -1.5<x<1.5
Widget slider
Step 0.01
説明 直進速度の設定
Configuration
パラメーター名 speed_r
double
デフォルト値 0.0
制約 -2.0<x<2.0
Widget slider
Step 0.01
説明 回転速度の設定

TimedVelocity2D 型について

2次元平面上の移動ロボットの移動速度を格納するデータ型である TimedVelocity2D 型を使用します。

     struct Velocity2D
     {
           /// Velocity along the x axis in metres per second.
           double vx;
           /// Velocity along the y axis in metres per second.
           double vy;
           /// Yaw velocity in radians per second.
           double va;
     };
 
 
     struct TimedVelocity2D
     {
           Time tm;
           Velocity2D data;
     };

このデータ型にはX軸方向の速度vx、Y軸方向の速度vy、Z軸周りの回転速度vaが格納できます。

vxvyvaはロボット中心座標系での速度を表しています。


tutorial_ev3_irex3.png

vxはX方向の速度、vyはY方向の速度、vaはZ軸周りの角速度です。

Educator Vehicle改のように2個の車輪が左右に取り付けられているロボットの場合、横滑りしないと仮定するとvyは0になります。

直進速度vx、回転速度vaを指定することでロボットの操作を行います。

タッチセンサーについて


tutorial_ev3_irex2.png

RobotController コンポーネントのひな型の生成

RobotController コンポーネントの雛型の生成は、RTCBuilder を用いて行います。

RTCBuilder の起動

Eclipse では、各種作業を行うフォルダーを「ワークスペース」(Work Space)とよび、原則としてすべての生成物はこのフォルダーの下に保存されます。 ワークスペースはアクセスできるフォルダーであれば、どこに作っても構いませんが、このチュートリアルでは以下のワークスペースを仮定します。

  • /home/ユーザー名/workspace

まずは Eclipse を起動します。 OpenRTP を展開したディレクトリーに移動して以下のコマンドを入力します。

 $ openrtp

最初にワークスペースの場所を尋ねられますので、上記のワークスペースを指定してください。

/ja/node/6058

すると、以下のような Welcome ページが表示されます。


/ja/node/6026
Eclipse の初期起動時の画面

Welcome ページはいまは必要ないので左上の「×」ボタンをクリックして閉じてください。

右上の [Open Perspective] ボタンをクリックしてください。

/ja/node/6026
パースペクティブの切り替え

「RTC Builder」を選択することで、RTCBuilderが起動します。メニューバーに「カナヅチとRT」の RTCBuilder のアイコンが現れます。

/ja/node/6550
パースペクティブの選択

新規プロジェクトの作成

RobotController コンポーネントを作成するために、RTC Builder で新規プロジェクトを作成する必要があります。

左上の [Open New RTCBuilder Editor] のアイコンをクリックしてください。

/ja/node/6057
RTC Builder 用プロジェクトの作成

「プロジェクト名」欄に作成するプロジェクト名 (ここでは RobotController) を入力して [終了] をクリックします。

/ja/node/6310

指定した名称のプロジェクトが生成され、パッケージエクスプローラ内に追加されます。

/ja/node/6310

生成したプロジェクト内には、デフォルト値が設定された RTC プロファイル XML(RTC.xml) が自動的に生成されます。

RTC プロファイルエディタの起動

RTC.xmlが生成された時点で、このプロジェクトに関連付けられているワークスペースとして RTCBuilder のエディタが開くはずです。 もし起動しない場合はパッケージエクスプローラーの RTC.xml をダブルクリックしてください。

/ja/node/6026

プロファイル情報入力とコードの生成

まず、いちばん左の「基本」タブを選択し、基本情報を入力します。先ほど決めた RobotController コンポーネントの仕様(名前)の他に、概要やバージョン等を入力してください。 ラベルが赤字の項目は必須項目です。その他はデフォルトで構いません。

  • コンポーネント名: RobotController
  • 概要: 任意(Robot Controller component)
  • バージョン: 任意(1.0.0)
  • ベンダ名: 任意
  • カテゴリ: 任意(Controller)


/ja/node/6381
基本情報の入力


次に、「アクティビティ」タブを選択し、使用するアクションコールバックを指定します。

RobotController コンポーネントでは、onActivated()、onDeactivated()、onExecute() コールバックを使用します。下図のように①の onAtivated をクリック後に②のラジオボタンにて [ON] にチェックを入れます。 onDeactivated、onExecute についても同様の手順を行います。


/ja/node/6310
アクティビティコールバックの選択


さらに、「データポート」タブを選択し、データポートの情報を入力します。 先ほど決めた仕様を元に以下のように入力します。なお、変数名や表示位置はオプションで、そのままで結構です。


  • InPort Profile:
    • ポート名: in
    • データ型: TimedBooleanSeq

  • OutPort Profile:
    • ポート名: out
    • データ型: TimedVelocity2D


/ja/node/6310
データポート情報の入力


次に、「コンフィギュレーション」タブを選択し、先ほど決めた仕様を元に、Configuration の情報を入力します。 制約条件および Widget とは、RTSystemEditor でコンポーネントのコンフィギュレーションパラメーターを表示する際に、スライダー、スピンボタン、ラジオボタンなど、GUI で値の変更を行うためのものです。

直進速度 speed_x、回転速度 speed_r はスライダーのより操作できるようにします。


  • speed_x
    • 名称: speed_x
    • データ型: double
    • デフォルト値: 0.0
    • 制約条件: -1.5<x<1.5
    • Widget: slider
    • Step: 0.01
  • speed_r
    • 名称: speed_r
    • データ型: double
    • デフォルト値: 0.0
    • 制約条件: -2.0<x<2.0
    • Widget: slider
    • Step: 0.01


/ja/node/6310
コンフィグレーション情報の入力


次に、「言語・環境」タブを選択し、プログラミング言語を選択します。 ここでは、C++(言語) を選択します。なお、言語・環境はデフォルト等が設定されておらず、指定し忘れるとコード生成時にエラーになりますので、必ず言語の指定を行うようにしてください。

/ja/node/6310
プログラミング言語の選択


最後に、「基本」タブにある [コード生成] ボタンをクリックし、コンポーネントの雛型を生成します。


/ja/node/6310
雛型の生成(Generate)


※ 生成されるコード群は、eclipse起動時に指定したワークスペースフォルダーの中に生成されます。 現在のワークスペースは、[ファイル] > [ワークスペースの切り替え...] で確認することができます。

CMake によるビルドに必要なファイルの生成

RTC Builder で生成したコードの中には CMake でビルドに必要な各種ファイルを生成するための CMakeLists.txt が含まれています。 CMake を利用することにより CMakeLists.txt から Visual Studio のプロジェクトファイル、ソリューションファイル、もしくは Makefile 等を自動生成できます。

CMake(cmake-gui) の操作

CMake を利用してビルド環境の Configure を行います。 まずは CMake(cmake-gui) を起動してください。

 $ cmake-gui
CMakeGUI0_2_ubuntu.png
CMake GUI の起動とディレクトリーの指定

画面上部に以下のようなテキストボックスがありますので、それぞれソースコードの場所 (CMakeList.txt がある場所) と、ビルドディレクトリーを指定します。

  • Where is the soruce code
  • Where to build the binaries

ソースコードの場所は RobotController コンポーネントのソースが生成された場所で CMakeList.txt が存在するディレクトリーです。 デフォルトでは <ワークスペースディレクトリー>/RobotController になります。

このディレクトリーはエクスプローラから cmake-gui にドラックアンドドロップすると手入力しなくても設定されます。

ビルドディレクトリーとは、ビルドするためのプロジェクトファイルやオブジェクトファイル、バイナリを格納する場所のことです。 場所は任意ですが、この場合 <ワークスペースディレクトリー>/RobotController/build のように分かりやすい名前をつけた RobotController のサブディレクトリーを指定することをお勧めします。

Where is the soruce code /home/ユーザー名/workspace/RobotController
Where to build the binaries /home/ユーザー名/workspace/RobotController/build

指定したら、下の [Configure] ボタンをクリックします。すると下図のようなダイアログが表示されますので、生成したいプロジェクトの種類を指定します。 今回は CodeBlocks - Unix Makefiles を指定します。 Code::Blocks を使わない場合は Unix Makefiles を使ってください。

/ja/node/6026
生成するプロジェクトの種類の指定

また cmake-gui を使用しない場合は以下のコマンドでファイルを生成できます。

 $ mkdir build
 $ cd build
 $ cmake .. -G "CodeBlocks - Unix Makefiles"

ダイアログで [Finish] をクリックすると Configure が始まります。問題がなければ下部のログウインドウに「Configuring done」と出力されますので、続けて [Generate] ボタンをクリックします。 「Generating done」と出ればプロジェクトファイル・ソリューションファイル等の出力が完了します。

なお、CMake は Configure の段階でキャッシュファイルを生成しますので、トラブルなどで設定を変更したり環境を変更した場合は [File] > [Delete Cache] を選択して、キャッシュを削除してから Configure からやり直してください。

ヘッダ、ソースの編集

次に先ほど指定した build ディレクトリーの中の RobotController.cbp をダブルクリックして Visual Studio 2013 を起動します。

ヘッダ (include/RobotController/RobotController.h) およびソースコード (src/RobotController.cpp) をそれぞれ編集します。 Code::BlocksのProjectsからRobotController.h、RobotController.cpp をクリックすることで編集画面が開きます。

codeblocks0_2.png

64bitの環境の場合に Code::Blocks の動作が不安定になることがあります。 その場合は code completion というプラグインを無効化すると動作することがあります。

「Plugins」>「Manage plugins...」を選択します。

/ja/node/6057/

「code completion」を選択して [Disable] ボタンをクリックします。

/ja/node/6057/

動作しないときはこの手順を試してください。

アクティビティ処理の実装

RobotController コンポーネントでは、コンフィギュレーションパラメーター(speed_x、speed_y)をスライダーで操作しその値を目標速度としてアウトポート(out)から出力します。 インポート(in)から入力された値を変数に格納して、その値が一定以上の場合は停止するようにします。


onActivated()、onExecute()、onDeactivated() での処理内容を下図に示します。

/ja/node/6310/
アクティビティ処理の概要


ヘッダファイル (RobotController.h) の編集

センサー値を一時的に格納する変数 sensor_data を宣言します。

   private:
     bool sensor_data[2];           //センサー値を一時格納する変数

ソースファイル (RobotController.cpp) の編集

下記のように、onActivated()、onDeactivated()、onExecute() を実装します。

 RTC::ReturnCode_t RobotController::onActivated(RTC::UniqueId ec_id)
 {
     //センサー値初期化
     for (int i = 0; i < 2; i++)
     {
         sensor_data[i] = false;
     }
 
     return RTC::RTC_OK;
 }

 RTC::ReturnCode_t RobotController::onDeactivated(RTC::UniqueId ec_id)
 {
          //ロボットを停止する
          m_out.data.vx = 0;
          m_out.data.va = 0;
          m_outOut.write();
  
          return RTC::RTC_OK;
 }

 RTC::ReturnCode_t RobotController::onExecute(RTC::UniqueId ec_id)
 {
     //入力データの存在確認
     if (m_inIn.isNew())
     {
         //入力データ読み込み
         m_inIn.read();
         for (int i = 0; i < m_in.data.length(); i++)
         {
             //入力データ格納
             if (i < 2)
             {
                 sensor_data[i] = m_in.data[i];
             }
         }
     }
 
     //前進するときのみ停止するかを判定
     if (m_speed_x > 0)
     {
         for (int i = 0; i < 2; i++)
         {
             //タッチセンサのオンオフを判定
             if (sensor_data[i] == true)
             {
                 //タッチセンサがオンの場合は停止
                 m_out.data.vx = 0;
                 m_out.data.va = 0;
                 m_outOut.write();
                 return RTC::RTC_OK;
             }
         }
     }
 
     //すべてのタッチセンサがオフの場合はコンフィギュレーションパラメーターの値で操作
     m_out.data.vx = m_speed_x;
     m_out.data.va = m_speed_r;
     m_outOut.write();
 
     return RTC::RTC_OK;
  }

Code::Blocks によるビルド

ビルドの実行

Code::Blocksの [ビルド] ボタンをクリックしてビルドを行います。


codeblocks_build_2.png
ビルドの実行


RobotController コンポーネントの動作確認

作成した RobotController をシミュレーターコンポーネントと接続して動作確認を行います。

以下より EV3Simulator コンポーネントをダウンロードしてください。

インターネットに接続できない環境で講習会を実施している場合がありますので、その場合は配布のUSBメモリーに入れてあります。

RTSystemEditorの起動

OpenRTPのパースペクティブを開くのウインドウからRT System Editorを選択して起動します。


/ja/node/6550

NameService の起動

コンポーネントの参照を登録するためのネームサービスを起動します。


RT System Editorのネームサービス起動ボタンを押すと起動します。

/ja/node/6550

※ 「Start Naming Service」をクリックしても omniNames が起動されない場合は、フルコンピュータ名が14文字以内に設定されているかを確認してください。

RobotController コンポーネントの起動

RobotController コンポーネントを起動します。

RobotController\build\srcフォルダーの RobotControllerComp ファイルを実行してください。

 $ RobotControllerComp

シミュレーターコンポーネントの起動

EV3SimulatorComp コンポーネントをインストールしたディレクトリーに移動後、下記のコマンドにて起動できます。

 $ src/EV3SimulatorComp

コンポーネントの接続

下図のように、RTSystemEditor にて RobotController コンポーネント、EV3Simulator コンポーネントを接続します。 システムダイアグラムは左上のOpen New System Editorボタンで表示できます。

tutorial_ev3_irex9_2.png
コンポーネントの接続

コンポーネントのActivate

RTSystemEditor の上部にあります [All Activate] というアイコンをクリックし、全てのコンポーネントをアクティブ化します。 正常にアクティベートされた場合、下図のように黄緑色でコンポーネントが表示されます。


tutorial_ev3_irex10.png
コンポーネントのアクティブ化


動作確認

下図のようにコンフィギュレーションビューの [編集] ボタンからコンフィギュレーションを変更することができます。


tutorial_ev3_irex6.png

スライダーを操作してシミュレーター上のEducator Vehicle改の操作ができるかを確認してください。


tutorial_ev3_irex7.png
コンフィギュレーションパラメーターの変更


正常に動作している場合は、開始し位置から直進した場合に壁の前で停止します。


tutorial_ev3_irex18.png


正常に動作していない場合は、壁に接触後にそのまま前進を続けます。


tutorial_ev3_irex17.png


実機での動作確認

講習会で EV3実機を用意している場合は実機での動作確認が可能です。

手順は以下の通りです。

  • Educator Vehicle改の組立て
  • EV3アクセスポイントの起動
  • EV3のアクセスポイントに接続
  • ポートの接続
  • コンポーネントのアクティブ化

Educator Vehicle改の組立て

EV3 は分解した状態で参加者に配ります。 組み立て方は以下の通りです。

ただし、超音波センサー、カラーセンサー、ジャイロセンサーについては、講習で使用しないため取り付ける必要はありません。 以下の※の作業については、時間が余った人が実施してください。

まずは土台部分を取り出してください。


s_DSC00463.JPG

最初にMモーターにケーブル(15cm)を接続します※。


s_DSC00446.JPG

次に EV3 本体を取り付けます。 Mモーターにケーブルを接続した場合は、ケーブルが左側の隙間から出るようにしてください。


s_DSC00448.JPG s_DSC00450.JPG



右側のタッチセンサーを取り付けてください。


s_DSC00451.JPG s_DSC00452.JPG



超音波センサーを取り付けてください※。


s_DSC00454.JPG

ケーブルを接続してください。 必須なのは車輪駆動用のLモーター右、Lモーター左、タッチセンサーだけです。 ケーブルに貼り付けたシールにポートの番号、デバイス名を記載してあります。

Lモーター右 ポート C 25cmケーブル
Lモーター左 ポート B 25cmケーブル
Mモーター※ ポートA 25cmケーブル
タッチセンサー右 ポート 3 35cmケーブル
タッチセンサー左 ポート 1 35cmケーブル
超音波センサー※ ポート 4 50cmケーブル
ジャイロセンサー※ ポート 2 25cmケーブル

ケーブルは EV3 の上下に A~D と 1~4 のポートがあるのでそこにケーブルを接続します。


s_DSC00.JPG s_DSC00471.JPG




s_DSC00455.JPG s_DSC00456.JPG



左右にパーツを取り付けます※。 Lモーター右、Lモーター左、Mモーター、タッチセンサー右、タッチセンサー左のケーブルを挟むようにして取り付けてください※。
Lモーター右、タッチセンサー右のケーブルは右側から、Lモーター左、Mモーター、タッチセンサー左は左側から通してください※。


s_DSC00457.JPG


s_DSC00459.JPG

これでとりあえず完成ですが、余裕のある人はジャイロセンサーを取り付けてみてください※。


s_DSC00460.JPG s_DSC00461.JPG



電源の入れ方/切り方

電源の入れ方

中央のボタンを押せば電源が投入されます。


ev3_on.jpg

電源の切り方

EV3 の電源を切る場合は最初の画面で EV3 本体の左上の戻るボタンを押して「Power Off」を選択してください。


ev3_off.jpg


s_DSC01033.JPG

再起動

再起動する場合は最初の画面で EV3 本体の左上の戻るボタンを押して「Reboot」を選択してください。

リセット

ev3dev の起動が途中で停止する場合には、中央ボタン、戻るボタン(左上)、左ボタンを同時押ししてください。画面が消えたら戻るボタンを離すと再起動します。


ev3_reset.jpg

アクセスポイントの設定

EV3 の操作画面から「File Browser」を上下ボタンで選択して中央のボタンを押してください。

 ------------------------------
 192.168.0.1
 ------------------------------
 [File Browser               > ]
  Device Browser             >
  Wireless and Networks      > 
  Battery                    >
  Open Roberta Lab           >
  About                      >
 ------------------------------

次に scripts を選択して中央ボタンを押してください。

 ------------------------------
 192.168.0.1
 ------------------------------
         File Browser
 ------------------------------
 /home/robot
 ------------------------------
 [scripts                     ]
 ・・
 ・・
 ------------------------------

次の画面から start_ap.sh を選択して中央ボタンを押すとスクリプトが起動します。

 ------------------------------
 192.168.0.1
 ------------------------------
         File Browser
 ------------------------------
 /home/robot/scripts
 ------------------------------
 ../
 Component/
 ・・
 [start_ap.sh                 ]
 ------------------------------

しばらくすると無線LANアクセスポイントが起動するので、指定の SSID のアクセスポイントに接続してください。 SSID、パスワードは EV3 に貼り付けたテープに記載してあります。


tutorial_ev3_irex26.png

アクセスポイントに接続

SSID、パスワードは EV3に貼り付けたシールに記載してあります。

※ネットワークが切り替わった場合にネームサーバーへのコンポーネントの登録やポートの接続が失敗する場合があるのでネームサーバ、コンポーネントを一旦全て終了してください。 ネットワーク切り替え後に起動した場合には問題ないので、終了させる必要はありません。

ネームサーバー追加

続いてRTシステムエディタの [ネームサーバー追加] ボタンで 192.168.0.1 を追加してください。


tutorial_raspimouse0.png tutorial_ev3_irex12.png



するとEducatorVehicle0という RTC が見えるようになります。

ポートの接続

RTシステムエディタで EducatorVehicle、RobotController コンポーネントを以下のように接続します。

tutorial_ev3_irex11.png

アクティブ化

そして RTC をアクティブ化すると EV3の操作ができるようになります。

チュートリアル(EV3、第3部)

このページでは2台のEV3を連携したRTシステムの構築を行います。

1台目のEV3をアクセスポイントとして、ノートPCと2台目のEV3をアクセスポイントに接続します。

※EV3(1台目)は奇数番号のものを配布します。EV3のシールに記載された番号を確認してください。 EV3(2台目)はEV3(1台目)の次の番号のものを配布します。(例:EV3(1台目):7、EV3(2台目):8)


tutorial_ev3_irex23.png

EV3(2台目)の組立て

第二部の手順に従って2台目のEducator Vehicleを組み立ててください。

EV3との接続

ノートPCとEV3(1台目)の接続

第二部の、実機での動作確認まで完了してください。 この時点でノートPCとアクセスポイントのEV3が接続されているはずです。


tutorial_ev3_irex24.png

EV3(1台目)とEV3(2台目)の接続

まずはEV3(2台目)の電源を投入してください。 起動後にEV3(1台目)に自動接続します。 自動接続できた場合は、EV3の画面左上にIPアドレスが表示されます。 IPアドレスは192.168.11.yyyが表示されます。


tutorial_ev3_irex25.png

他のIPアドレスが表示されている場合は、配布したEV3の番号が違う可能性があるため確認してください。

ネームサーバー、RTCの起動

EV3(2台目)の画面上の操作でネームサーバーとRTCを起動します。

EV3 の操作画面から「File Browser」→「scripts」を選択してください。

ネームサーバー、RTCはstart_rtcs.shのスクリプトを実行することで起動します。

 ------------------------------
 192.168.11.yyy
 ------------------------------
         File Browser
 ------------------------------
 /home/robot/scripts
 ------------------------------
 ../
 Component/
 ・・
 [start_rtcs.sh                 ]
 ------------------------------


tutorial_ev3_irex32.png

ネームサーバー追加

RTシステムエディタから、192.168.11.yyyのネームサーバーに接続してください。


tutorial_raspimouse0.png tutorial_ev3_irex22.png



この時点でRTシステムエディタのネームサービスビューにはlocalhost、192.168.0.1、192.168.11.yyyのネームサーバーが登録されています。 192.168.11.yyyのネームサーバーに登録されているRTCの名前はEducatorVehicle1となります。


tutorial_ev3_irex30.png

  • localhost
    • RobotController0
  • 192.168.0.1
    • EducatorVehicle0
  • 192.168.11.yyy
    • EducatorVehicle1

動作確認

EducatorVehicle0(192.168.0.1)とEducatorVehicle1(192.168.11.yyy)をシステムダイアグラム上で接続してください。 EducatorVehicle1の現在の速度出力をEducatorVehicle0の目標速度入力に接続することで、EV3(2台目)の動きにEV3(1台目)が追従するようになります。


tutorial_ev3_irex31.png

RTCをアクティベートして2台目のEducator Vehicleの車輪を転がすと、1台目のEducator Vehicleがそれに合わせて動作します。


tutorial_ev3_irex28.png

自由課題

これで実習は一通り終了ですが、時間が余っている場合は以下のような課題に挑戦してみてください。

  • EV3(2台目)のタッチセンサのオンオフでEV3(1台目)を操作

ジョイスティックコンポーネントはOpenRTM-aist Python版のサンプルにあります(TkJoyStickComp.py)。 TkJoyStickComp.pyのアウトポートのデータ型はTimedFloatSeq型であるため、TimedVelocity2D型に変換するRTCを作成する必要があります。

EducatorVehicleRTCのsoundという名前のインポートに文字列(TimedString型)を入力すると、EV3が発声します。

文字列(const char*)をデータポートで出力する際はCORBA::string_dup関数で文字列をコピーする必要があります。

 m_out.data= CORBA::string_dup("abc");

  • 各種センサの利用(カラーセンサ、超音波センサ、ジャイロセンサ)

チュートリアル(EV3、LibreOffice)

はじめに

このページではLibreOffice Calc用RTCによるRTCの動作確認手順について説明します。 Calcのセルの値をInPortに入力、OutPortの出力した値をセルに表示することで対象RTCの挙動を確認できます。

/jp/node/6586

RTM講習会ではUSBメモリでポータブル版LibreOfficeとRTCを配布します。 Windowsで実行できます。 UbuntuはPython3用のomniORBのパッケージがないため実行できません。講習会ではノートPCを貸し出します。

この実習では第2部で作成したRobotControllerコンポーネントを使用します。

LibreOfficeとは?

表計算、パワーポイント、ワープロ機能等を提供するオフィススイートです。 フリーソフトとして公開されており、今回の講習会では以下のポータブル版を使用します。

LibreOffice Calc用RTCの起動

配布したUSBメモリ内のポータブル版LibreOffice\run_CalcRTC.batを実行します。

LibreOffice Calcが起動するため、RTC起動ボタンをクリックすることでOOoCalcControlというRTCを起動します。

/jp/node/6586

OutPortの接続

RobotControllerのOutPortと接続し、Calcで出力データの確認ができるようにします。 Calcの操作ダイアログ起動ボタンをクリックしてください。

/jp/node/6586

まずは出力データを確認するOutPortと接続します。 ツリー表示ボタンを押下してネームサーバーに登録されたRTCのポート一覧を表示後、ツリーからRobotController0のoutを選択します。

/jp/node/6586

次に一部設定を変更します。

列を移動させるのチェックを外してください。 このチェックが有効の場合、データを受信する度にセルの位置が移動するモードで動作します。 グラフに描画する場合は位置が移動するモードを使用しますが、今回は単純に値を確認したいだけのためチェックを外します。

列番号の右のボックスにCと入力してください。 これで2行目のAC列のセルにOutPortの出力データを表示するようになりました。

設定完了後、作成ボタンを押してください。

/jp/node/6586

OutPortの動作確認

RT System Editor上でRTCをアクティブ化して動作を確認してください。

/jp/node/6586

この状態でコンフィギュレーションパラメータを操作してCalcのセルの値が変化するかを確認してください。

/jp/node/6586

InPortの接続

RobotControllerのInPortと接続し、Calcからデータの入力を行うようにします。

ツリー表示ボタンを押下してネームサーバーに登録されたRTCのポート一覧を表示後、ツリーからRobotController0のinを選択します。

/jp/node/6586

次に一部設定を変更します。

列を移動させるのチェックを外してください。

列番号の右のボックスにDと入力してください。 これで3行目のAC列のセルにOutPortの出力データを表示するようになりました。

設定完了後、作成ボタンを押してください。

/jp/node/6905

InPortの動作確認

RT System Editor上でRTCをアクティブ化して動作を確認してください。

この状態でコンフィギュレーションパラメータで前進する速度をOutPortから出力するように操作してください。 その後、Calcの3行目のAB列のセルに1の値を入力するか、0の値を入力するかで動作が変化するかを確認してください。

/jp/node/6905