Processing 活用事例

Processingとは?

Processingはオープンソースのプログラミング言語で、以下の特長があることから初心者向けであるとされています。
  • 視覚的な表現が他の言語と比較して簡単(グラフや図形のアニメーションやインタラクション等)
  • 開発環境の導入が簡単

実習概要

Processingでグラフを描画するRTCを実行し、Raspberry Piマウスの移動軌跡をグラフに描画するシステムの作成します。


/ja/node/7232

Processing開発環境の起動

まずは、ProcessingのIDE(統合開発環境)を起動します。

Processingのリポジトリから開発環境一式をダウンロードしてください。

展開したフォルダのprocessing.exeを実行してください。

Javaのバージョンの問題により、OpenRTM-aistをProcessing 4.0以降の環境では現在のところ実行はできません。

講習会などでUSBメモリの資料を配布している場合は、以下のファイルを実行してください。

  • Windowsの場合はProcessing\processing-3.5.4-windows64\processing.exe
  • Ubuntuの場合はProcessing/processing-3.5.4-linux64/processing

実行すると、以下の統合開発環境のGUIが起動します。


/ja/node/7232

OpenRTM-aist Processing用ライブラリのインストール

ProcessingでOpenRTM-aistの機能が使えるようにライブラリをインストールします。

まず、Processingでスケッチブックの場所を確認します。 「ファイル」->「設定」を選択して表示される画面で確認できます。


/ja/node/7232

スケッチブックの場所をエクスプローラーで開いてください。

スケッチブックの場所のlibrariesフォルダに、以下のOpenRTMUtil.zipを展開したフォルダをコピーします。

※講習会などではUSBメモリ内のProcessing\OpenRTMUtilフォルダを使用します。

コピーすると、以下のようなディレクトリ構成になります。

 スケッチブックの場所
    ├ examples
    ├ modes
    ├ templates
    ├ tools
    └ libraries
         └ OpenRTMUtil
                └  library
                     ├ commons-cli-1.1.jar
                     ├ jna-4.2.2.jar
                     ├ jna-platform-4.2.2.jar
                     ├ LogicalTimeTriggeredEC.jar
                     ├ NameserviceFile.jar
                     ├ OpenRTM-aist-2.0.1.jar
                     ├ OpenRTMUtil.jar
                     ├ rtcd.jar
                     └ rtcprof.jar

graficaのインストール

グラフ描画用ライブラリのgraficaをインストールします。

Processingで「スケッチ」→「ライブラリをインポート」→「ライブラリを追加」をクリックしてください。


/ja/node/7232

Contribution Managerでgraficaを検索してインストールしてください。


/ja/node/7232

プログラミング

ProcessingでRTCのプログラミングを行います。

Processingの開発環境で以下のコードを入力してください。 Processingでは実行開始時に1度だけ呼ばれるsetup関数、一定間隔で呼ばれるdraw関数を使用します。 setup関数でRTCの生成を実行しています。 draw関数でInPortのデータの読み込みとグラフの描画更新処理を実行しています。

 import grafica.*;
 import jp.go.aist.rtm.OpenRTMUtil;
 import jp.go.aist.rtm.RTC.port.InPort;
 import jp.go.aist.rtm.RTC.util.DataRef;
 import RTC.TimedPose2D;
 import RTC.Pose2D;
 import RTC.Point2D;
 import RTC.Time;
 
 //データ、InPortの変数を宣言
 DataRef<TimedPose2D> indata;
 InPort<TimedPose2D> inport;
 
 //グラフに描画する点のデータを格納する配列を宣言
 GPointsArray data;
 
 public void setup() {
  //ウィンドウサイズを設定
  size(300, 300);
 
  //RTCを"drawGraph"というインスタンス名で生成
  OpenRTMUtil util = new OpenRTMUtil();
  util.createComponent("drawGraph");
  //データの初期化
  TimedPose2D val = new TimedPose2D();
  val.tm = new Time();
  val.data = new Pose2D();
  val.data.position = new Point2D();
  indata = new DataRef<TimedPose2D>(val);
  //InPortを"pose"という名前で生成
  inport = util.addInPort("pose", indata);
 
  //配列dataの初期化
  data = new GPointsArray();
 }
 
 int count = 0;
 public void draw() {
 
  //InPortでデータを受信した時の処理
  if (inport.isNew())
  {
    //受信データの読み込み
    inport.read();
    //配列dataに取得した位置を追加する
    data.add((float)indata.v.data.position.x, (float)indata.v.data.position.y);
 
    //配列の大きさが1000を超えた場合、古いデータは捨てる
    if (data.getNPoints() > 1000)
    {
      data.remove(0);
    }
  }
  //グラフをウィンドウの(0,0)から(300,300)の範囲に描画する
  GPlot plot = new GPlot(this, 0, 0, 300, 300);
  //グラフの縦軸、横軸の上限、下限を設定する
  plot.setXLim(-1.0, 1.0);
  plot.setYLim(-1.0, 1.0);
  plot.setFixedXLim(true);
  plot.setFixedYLim(true);
  //配列dataをグラフに設定する
  plot.addPoints(data);
  //グラフの描画を開始する
  plot.beginDraw();
  //グラフに外枠、座標、折れ線、縦軸、横軸を描画する
  plot.drawBox();
  plot.drawPoints();
  plot.drawLines();
  plot.drawXAxis();
  plot.drawYAxis();
  //グラフの描画を終了する
  plot.endDraw();
 }

RTシステムの構築、動作確認

作成したdrawGraphコンポーネントの動作確認を行います。

Raspberry Piマウスシミュレータ(RaspberryPiSimulator)、もしくはRaspberry Piマウス実機(RaspberryPiMouseRTC)のRTCを使用します。 また、以下のチュートリアルで作成したRobotControllerも使用します。

Processingで作成したdrawGraphコンポーネントを起動します。 Processingの実行ボタンを押してください。


/ja/node/7232

RTシステムエディタで以下のようにポートを接続してください。


/ja/node/7232

RTCをアクティブ化して、RobotControllerのコンフィギュレーションパラメータをスライダで操作するとRaspberry Piマウスが移動して、移動の軌跡がグラフに描画されます。

ダウンロード

最新バージョン : 2.0.1-RELESE

統計

Webサイト統計
ユーザ数:2195
プロジェクト統計
RTコンポーネント307
RTミドルウエア35
ツール22
文書・仕様書2

Choreonoid

モーションエディタ/シミュレータ

OpenHRP3

動力学シミュレータ

OpenRTP

統合開発プラットフォーム

産総研RTC集

産総研が提供するRTC集

TORK

東京オープンソースロボティクス協会

DAQ-Middleware

ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク