スライド 1

Similar documents
スライド 1

Raspberry Pi で WEB カメラを使用 会津大学 RT ミドルウェア講習会 2017 The University of Aizu

ホンダにおける RT ミドルウェア開発と標準化活動 株式会社本田技術研究所基礎技術研究センター関谷眞

Java講座

JavaプログラミングⅠ

二次元連続動的計画法による知的画像処理システム ImageFileSelector RTC 機能仕様書 ImageFileSelectorRTC Ver.1.0 ( 株 ) 東日本計算センター 1 / 11

Microsoft PowerPoint - handout07.ppt [互換モード]

Java言語 第1回

Ver ceil floor FunctionGenerator (PTZCameraSony)

Microsoft Word - USB60F_Raspi_ doc

ユーザーズマニュアル 有線ネットワークシステム 発行日 2016 年 3 月 30 日

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

機能仕様書 ロボット Raspberry Pi カメラ RTC Ver 発行日 2017 年 12 月 27 日公立大学法人会津大学株式会社東日本計算センター

第3部:プログラミング実習

RTM セミナー RT ミドルウェアによる実時間ロボット 制御系の構築とソフトウェア教育 静岡大学大学院工学研究科機械工学専攻 清水昌幸

HMD を用いた PT カメラのインターネット遠隔操作芝浦工業大学知能機械システム研究室 HMD(Head Mounted Display) を用いた PT(Pan-Tilt) カメラのインターネット遠隔操作 ユーザマニュアル (ver1.0) 2014 年 10 月 23 日 芝浦工業大学知能機械

Windowsユーザでも 手軽に作れるiPhoneアプリ

スライド 1

C#の基本2 ~プログラムの制御構造~

C#の基本

改版履歴 Ver 改版日内容 /02/07 新規作成 2 / 18

PowerPoint プレゼンテーション

ボタンイベントアプリイベント処理を含むアプリとして, ボタンをもち, ボタンを押すと文字列を表示するアプリを作る. このアプリは,HelloWorld アプリを改造して作成するため, アプリ作成の途中からの手順を示す. 1. ボタンの設置 (1) レイアウトにボタンを追加するパレットの フォーム ウ

Microsoft PowerPoint - 計算機言語 第7回.ppt

Microsoft PowerPoint RT講習会(送付用)_ [互換モード]

TestDesign for Web

第 1 章 : はじめに RogueWave Visualization for C++ の Views5.7 に付属している Views Studio を使い 簡単な GUI アプリケーションの開発手順を紹介します この文書では Windows 8 x64 上で Visual Studio2010

Microsoft Word - no202.docx

RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for

Microsoft PowerPoint pptx

Prog2_12th

GEC-Java

Prog1_15th

Week 1 理解度確認クイズ解答 解説 問題 1 (4 2 点 =8 点 ) 以下の各問いに答えよ 問題 bit 版の Windows8.1 に Java をインストールする時 必要なパッケージはどれか 但し Java のコンパイルができる環境をインストールするものとする 1. jdk

デジタル表現論・第6回

Microsoft PowerPoint - exp2-02_intro.ppt [互換モード]

プログラミング基礎I(再)

Microsoft Word - RTSystemBuilderOnTheEA操作マニュアル_

/*Source.cpp*/ #include<stdio.h> //printf はここでインクルードして初めて使えるようになる // ここで関数 average を定義 3 つの整数の平均値を返す double 型の関数です double average(int a,int b,int c){

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

1. A/D 入力について分解能 12bit の A/D コンバータ入力です A/D 入力電圧とディジタル値との対応は理論上 入力電圧 0V : 0 入力電圧 +3V : 4095 です 実際はオフセットと傾きがあり ぴったりこの数値にはなりません 2. A/D 入力に使用する信号 STM32L_A

PowerPoint プレゼンテーション

Prog1_6th

Microsoft PowerPoint - ruby_instruction.ppt

CoIDE 用 F4D_VCP の説明 V /07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです Free の開発ツール CoIDE で作成した STM32F4 Discovery 用のプロジェクトです プログラムの開始番地は 0x

デジタル表現論・第4回

第 2 章インタフェース定義言語 (IDL) IDL とは 言語や OS に依存しないインタフェース定義を行うためのインタフェース定義言語です CORBA アプリケーションを作成する場合は インタフェースを定義した IDL ファイルを作成する必要があります ここでは IDL の文法や IDL ファイ

コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?

ガイダンス

Method(C 言語では関数と呼ぶ ) メソッドを使うと 処理を纏めて管理することができる 処理 ( メソッド ) の再実行 ( 再利用 ) が簡単にできる y 元々はC 言語の関数であり 入力値に対する値を 定義するもの 数学では F(x) = 2x + 1 など F(x)=2x+1 入力値 (

EV3 の初期設定

Microsoft Word - no15.docx

RTC-scilab クイックスタートガイド 第 1 版 2010 年 12 月 7 日 内容 1. 概要 RTC-scilab の概要 RTC-scilab の準備 ダウンロード & 展開 ビルド

REX-C56EX FAX送信 第5.0版

基礎計算機演習 実習課題No6

1. USB の VCP( 仮想 COM ポート ) について USB の VCP( 仮想 COM ポート ) は USB を非同期シリアル通信として使用するための USB のドライバです PC には VCP ドライバをインストールする必要があります USB の VCP( 仮想 COM ポート )

Microsoft PowerPoint - CproNt02.ppt [互換モード]

組込み用Linuxボード,BeagleBone Blackにおける RTミドルウェアの動作と開発支援ツール

Microsoft PowerPoint ppt

ユーザーズマニュアル 有線無線通信ネットワークシステム Wi-Fi 経路情報ビューア 発行日 2017 年 3 月 30 日 公立大学法人会津大学 株式会社東日本計算センター

BOM for Windows Ver

Microsoft Word - Training10_プリプロセッサ.docx

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

プログラミング基礎

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること

講習No.8

Apache Arrow 須藤功平株式会社クリアコード RubyData Tokyo Meetup Apache Arrow Powered by Rabbit 2.2.2

<4D F736F F D2091E63589F182628CBE8CEA8D758DC08E9197BF2E646F6378>

情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤

Microsoft Word - no13.docx

PowerPoint Presentation

Javaプログラムの実行手順

Microsoft PowerPoint - prog03.ppt

intra-mart Accel Platform — Slack連携モジュール 利用ガイド   初版  

スライド 1

Microsoft PowerPoint - 説柔5_間勊+C_guide5ï¼›2015ã•’2015æŒ°æŁŽæš’å¯¾å¿œç¢ºèª“æ¸‹ã†¿ã•‚.pptx

オブジェクト指向プログラミング・同演習 5月21日演習課題

フローチャート自動生成ツール yflowgen の使い方 目次 1 はじめに 本ツールの機能 yflowgen.exe の使い方 yflowgen.exe の実行方法 制限事項 生成したファイル (gml ファイル形式 ) の開

本チュートリアルについて 14 部構成 比較的簡単なトピックから 各回 プログラミング言語 任意 チュートリアルで 新しい内容 宿題 プログラミング演習 次の週 結果について発表 もしくは話し合いをする スライドは Python で Python, C++, Java, Perl についての質問い答

Prog2_15th

8051 개발보드 메뉴얼

メディプロ1 Javaプログラミング補足資料.ppt

Javaの作成の前に

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

注意事項 (1)Windows 10 を使用する場合 注意事項 1 注意事項 3 注意事項 4 についてご対応をお願いします (2)Windows 8.1 を使用する場合 注意事項 2 注意事項 3 注意事項 4 についてご対応をお願いします (3)Windows 7 上で Internet Exp

VB実用Ⅲ⑩ フリーデータベースⅡ

PowerPoint プレゼンテーション

プログラミング入門1

PowerPoint Presentation

Microsoft Word - no11.docx

関数の動作 / printhw(); 7 printf(" n"); printhw(); printf("############ n"); 4 printhw(); 5 関数の作り方 ( 関数名 ) 戻り値 ( 後述 ) void である. 関数名 (

ChoreonoidとOpenHRIを用いたシステム構築事例

Prog1_10th

PowerPoint プレゼンテーション

2006年10月5日(木)実施

株式会社セックにおける ロボティクス分野への取り込み

PowerPoint Presentation

pp2018-pp9base

Transcription:

UEC Tokyo Dept. of Mechanical Engineering and Intelligent Systems OpenRTM を使ってみよう! - 基本編 - 電気通信大学情報理工学研究科 知能機械工学専攻 長井隆行 中村友昭

RTM とは Robot Technology Middleware コンポーネント ( モジュール ) を動かす実行環境のこと ミドルウェア上で動作するコンポーネントであれば OS 言語等に関係なく通信が可能 DiGORO ClientNet+ サーバー (DiGORO Net) に相当 RTM 上で動くものであれば 他の人が作成したコンポーネントを使用できる ( 再利用性が高い ) チャットコンポーネント 1 チャットコンポーネント 2 カメラ音声アーム台車 RT ミドルウェア Windows, C# Linux, C++ RT ミドルウェア RTM よるロボットの構成 2

OpenRTM 3 RTMの実装の1つ DiGORO Net, ROS, OpenRTM 等がある DiGORO Net : 長井研ローカル 再利用性低い ROS : Windowsのサポートがいまいち OpenRTM : 国産 様々なOSに対応 資料が日本語 OpenRTM と DiGORO の違い DiGORO 単純なデータの送信のみをサポート OpenRTM データだけでなく機能を変更するようなクラスも送受信可能 その他いろんな機能があるみたい GUIでコンポーネントを接続( 後述 )

開発言語 OpenRTM-aist オリジナルのOpenRTMで産総研が開発 C++, Python, Javaに対応 なんか使いづらい OpenRTM.Net, PyRTSeam 株式会社セックが改良 (http://www.sec.co.jp/robot/) C#, C++/CLI, Python 非常に使いやすいが C++ が使えない とりあえず OpenRTM.NET の C++/CLI で作ってみよう! C++/CLI C++ と互換性あり この先 どの言語を使うかはご自由に 4

C++/CLI C++ / Common Language Interface C++ と.Net(MS が作った言語 ) が同時に使用可能.Net の概要 関数は存在せず全てクラスになっている int, float, double 等数値 ( 数値型 ) 以外は全てクラス ( 参照クラス ) int, float, double 等数値型も実はクラス ( ボックス化 ).Net のクラスの宣言には ^ を付ける ( 参照クラス = 高機能ポインタ ) C++ : Class c;.net : Class ^c;.net のクラスは gcnew(garbage collection new) しなければならない ( ポインタと同じなので生成が必要 ) Class ^c = gcnew Class(); gcnew は delete の必要はない ( しても良い ) 5

C++/CLI 例 :C++ と.Net を同時使用した例 int arr1[10]; array<int> ^arr2 = gcnew array<int>(10); // C++ 配列の宣言 //.Netの配列クラスの宣言 // 代入 for(int i=0 ; i<10 ; i++ ){ arr1[i] = i; arr2[i] = i; } // 表示 for(int i=0 ; i<10 ; i++ ){ printf("%d %d n", arr1[i], arr2[i] ); } 6

インストール 以下の 2 つを順にインストール Mammoth AtHome OpenRTM OpenRTM-aist-1.1.0- RC3_vc9.msi Mammoth AtHome OpenRTM OpenRTM.NET- 1.3.0.msi Java を最新版にする http://www.java.com/ja/ 実験 PC はインストール済みなので必要ない 7

サンプルの起動 ネーミングサービスの開始 [ スタータ ] [ プログラム ] [OpenRTM.Net] [ ツール ] [ ネーミングサービスの開始 ] コンポーネント起動 [ スタータ ] [ プログラム ] [OpenRTM.Net] [ サンプル ] [ バイナリ ] SimpleIO ConsoleIn ConsoleIn.Exe SimpleIO ConsoleOut ConsoleOut.Exe コンポーネント接続プログラムを起動 [ スタータ ] [ プログラム ] [OpenRTM-aist 1.1] [C++] [tools] [RTSystemEditor] 8

RT System Editor コンポーネント同士を接続するための GUI プログラム ON にする 現在起動中のコンポーネント 2 つのコンポネントをドラッグアンドドロップ 9

コンポーネントの接続 コンポーネント同士の入力ピンと出力ピンの接続 出力ピン 右クリック 一方のピンをドラッグし All Activate もう一方のピンへドロップ 入力ピン 10

コンポーネントの通信 ConsoleIn I/F name: ConsoleIn0.out I/F type: IDL:RTC/TimedLong:1.0 Polarity: PROVIDED I/F name: ConsoleIn0.out I/F type: OpenRTM.Core.TimedLong Polarity: PROVIDED Properties port.port_type: DataOutPort dataport.data_type: IDL:RTC/TimedLong:1.0 dataport.dataflow_type: push, pull dataport.subscription_type: flush, new, periodic dataport.interface_type: corba_cdr, local Please Input Number> 10 Please Input Number> ConsoleOut I/F name: ConsoleOut0.in I/F type: IDL:RTC/TimedLong:1.0 Polarity: REQUIRED I/F name: ConsoleOut0.in I/F type: OpenRTM.Core.TimedLong Polarity: REQUIRED Properties port.port_type: DataInPort dataport.data_type: IDL:RTC/TimedLong:1.0 dataport.dataflow_type: push, pull dataport.subscription_type: any dataport.interface_type: corba_cdr, local time = 2012/03/12 9:07:25 data = 10 入力した数字が転送される 11

コンポーネントの作り方 ダイアログのテンプレートから作成 DiGOROClientRTC_MFC ver0.7 送受信できる型 ( すべて.Net のクラス ) TimedLong : 整数型 TimedString : 文字列型 TimedDouble : 少数型 TimedLongSeq : 整数配列 TimedStringSeq : 文字列配列 TimedDoubleSeq : 少数配列 これ以外にも Float, Short, ULong 等一般的な型が存在 タイムスタンプとデータから構成 TimedLong ^data = gcnew TimedLong(); data->data = 10; // Data : 整数型 TimeExtension::SetCurrentTime( data->time ); // Time : タイムスタンプ 12

ロボット向け拡張データ型 TimedVelocity2D data Data double VelocityX, double VelocityY, double VelocityYaw data Time 例 ) double velyaw = 0.0; TimedVelocity2D ^data = gcnew TimedVelocity2D(); pthis->m_component->getindata( data ) velyaw = data->data->velocityyaw; // ロボットの移動 // データの受信 13

送受信するデータの定義 PortDefine.h で定義 #define MODULE_NAME "DiGOROTest" // 入力ポートの定義 // INPORT( type, name ) // type : 送信するデータ型 // name : 名前 INPORT( TimedLong, InData ) INPORT( TimedString, InData2) // 出力ポートの定義 // OUTPORT( type, name ) // type : 送信するデータ型 // name : 名前 OUTPORT( TimedLong, OutData ) OUTPORT( TimedFloat, OutData2 ) 入力ポート ( 受信するデータ ) の定義 TimedLong( 整数型 ) を受信 複数個宣言することも可能 出力ポート ( 送信するデータ ) の定義 TimedLong( 整数型 ) を送信 複数個宣言することも可能 14

送信方法 例 :DiGOROClientRTCDlg.cpp void CDiGOROClientRTCDlg::OnBnClickedButton1() { //.Net のクラスなので とりあえず ^ を付けて gcnew TimedLong ^data = gcnew TimedLong(); // 送信したいデータを代入 data->data = 10; // 現在時刻を代入 TimeExtension::SetCurrentTime( data->time ); } // 送信 // 送信用の関数名は Send + [ 変数名 ] m_component->sendoutdata( data ); 15

例 :MyThread.cpp 受信方法 //.Net のクラスなのでとりあえず ^ をつける TimedLong ^data; // 受信用関数名は Get + [ 変数名 ] if( pthis->m_component->getindata( data ) ) { CString str; // データがあれば戻り値が true // 整数型を文字列に変換 str.format( "%d", data->data ); // メッセージボックスへ表示 AfxMessageBox( str ); } // さらにデータを足して 他のコンポネントへ送信 data->data += 100; pthis->m_component->sendoutdata( data ); 16

サンプルを動かしてみよう さっき動かした ConsoleIn, ConsoleOut, クライアントのサンプルを起動 起動できない場合は (Windows7 の場合 ) 実行ファイルのプロパティで XP 互換モードにする ) 以下のように接続し All Activate サンプルソースと実際の動作を見比べてみましょう DiGOROClient の test ボタンで整数 10 を出力 ConsoleOut に表示 ConsoleIn で数値を入力 DiGOROClient でそれを表示し値を変更 (MyThread.h 内 ) ConsoleOut へ表示 17

作り方まとめ データ通信関連のクラス m_component 送受信できるデータは Timed** PortDefine.h で型と変数名を定義 Time*** とりあえず宣言には^を付ける 送信するために何か代入したいときはgcnewをする メンバへのアクセスは-> を使用 データの実態は [ 変数名 ]->Data タイムスタンプは [ 変数名 ]->Time 送信 データ送信メンバ関数 m_componet.send+[ 変数名 ] 受信 データ受信メンバ関数 m_componet.get+[ 変数名 ] 18

.Net tips1 : 文字列の相互変換 文字列の相互変換 C++ : CString ( 普通のクラス ).Net : String^ ( 参照クラス ) TimedString ^ts = gcnew TimedString(); CString str; // Window から文字列取得 m_edit.getwindowtext( str ); ts->data = gcnew String( str ); // Data は String^ 型 19

.Net tips2 : 配列の作り方 Timed*Sec TimedLongSec : 整数配列 TimedFloatSec : 少数配列 // 宣言と確保 //.Net のクラスなので とりあえず ^ を付けて gcnew TimedLongSeq ^tls = gcnew TimedLongSeq(); // Add 関数で要素を追加 tls->data->add( 1 ); tls->data->add( 2 ); tls->data->add( 4 ); 20

おわりに RTC を作るためのテンプレート DiGOROClientRTC_MFC ver0.7 これをベースにすれば比較的簡単に RTC が作れる C++/CLI は最も簡単に作成できると判断して選びました C#, F#, VB でも開発可能 セックが作成した Python 版も使い易そう オリジナルの OpenRTM では C++ も動きますなので言語は何でもいいです 但し ここでは C++/CLI ( 基本は C++) で作ることを想定します 謝辞 このスライドは 中村友昭博士 ( 長井研ポスドク ) が作成した研究室内向け RTM 講習会のスライドを実験用に修正したものです スライドの使用を許可してくれた中村さんに感謝いたします 21