狠狠撸

狠狠撸Share a Scribd company logo
SUGAR SWEET ROBOTICS CO., LTD.
翱辫别苍搁罢惭-补颈蝉迟入门
株式会社SUGAR SWEET ROBOTICS?代表取締役
早稲田大学基幹理工学部表現工学科 尾形哲也研究室 客員次席研究員
芝浦工業大学SIT研究所?客員研究員
菅?佑樹
1
SUGAR SWEET ROBOTICS CO., LTD.
インストール (Windows)
? まず,UACをOFFにしましょう.
? OpenRTM-aist バージョン1.1.1 C++言語版 (32bit版)
? http://openrtm.org/openrtm/ja/node/5711
? JDK8???Oracle Webサイトからダウンロード.JREはOpenRTMに同梱だが,Java
版を開発する場合等に必要なのでインストールをオススメ(32bit版オススメ)
? Python 2.7??? python-2.7.9.msi(32bit)
? PyYAML (2.7対応)???PyYAML-3.11.win32-py2.7.exe
? OpenRTM-aist???OpenRTM-aist-1.1.1-RELEASE_x86_vc12.msi (32bit)
? GUIツール入りeclipse??? eclipse381-openrtp110rc5v20150317-ja-win32.zip (32bit)
? Doxygen
? Doxygen win32 ??? doxygen-1.8.9.1-setup.exe
? CMake 3.2
? CMake 3.2 ??? cmake-3.2.1-win32-x86.exe
? Visual Studio 2013 Community Edition
? https://www.microsoft.com/ja-jp/dev/products/community.aspx
2
SUGAR SWEET ROBOTICS CO., LTD.
インストール (OSX10.9以降)
? SUGAR SWEET ROBOTICSで管理しているOSX版パッケージの使い方
? OSXは10.9.3+Xcodeは5.1 (これ以外の環境では,自分でビルドする必要があります)
? C++版インストーラ
? http://sugarsweetrobotics.com/pub/Darwin/OpenRTM-aist/cxx/1.1/OpenRTM-aist-1.1-cxx-osx-10.9.dmg
? $HOME/.bash_profileに以下の記述を追加する必要がある.
? RTM_ROOT=/usr/local/include/openrtm-1.1
? PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
? これ以外に,以下のツールが必要です(自分でビルドする場合も必要)
? Xcodeコマンドラインツール
? https://daw.apple.com/cgi-bin/WebObjects/DSAuthWeb.woa/wa/login?
&appIdKey=891bd3417a7776362562d2197f89480a8547b108fd934911bcbea0110d07f757&path=
%2F%2Fdownloads%2Findex.action (Apple Developerにサインイン必要)
? cmake?http://www.cmake.org/files/v2.8/cmake-2.8.10.2-Darwin64-universal.dmg
? doxygen?http://sugarsweetrobotics.com/pub/Darwin/doxygen/Doxygen-1.8.3.1.dmg
? pyyaml?http://sugarsweetrobotics.com/pub/Darwin/libs/PyYAML-3.10.tar.gz
? pkg-config?http://sugarsweetrobotics.com/pub/Darwin/pkgconfig/PkgConfig.dmg
? Sun JDK?(ターミナルでjavaと打つと,インストールされていなければ公式サイトに飛びます)
? また,ツールとして,RTシステム全部入りのEclipse (Mac版) をOpenRTM-aistのページからダウンロードする
必要があります.
3
SUGAR SWEET ROBOTICS CO., LTD.
動作確認 (Windows)
? ネームサービスの起動
– 「スタートメニュー」>「OpenRTM-aist 1.1」>「tools」>「Start C++
Naming Service」
? RTCの起動(ConsoleIn, ConsoleOut)
– 「スタートメニュー」>「OpenRTM-aist 1.1」>「C++」>「components」
>「examples」>「ConsleInComp.exe」と同じく「ConsoleOutComp.exe」
? GUIツールの起動
– eclipse***.zipを展開
– Eclipseフォルダ内のeclipse.exeを起動
– ワークスペースはデフォルトでOK
? 通常は,/Users/$USER_NAME/workspace
4
SUGAR SWEET ROBOTICS CO., LTD.
動作確認 (OSX / Ubuntu)
? 新規ターミナルからNameServer起動
? $ rtm-naming (Ubuntuだと,現在のプロセスをkillして再起動するか聞かれるので,必ずyesして再
起動する.デフォルトで立ち上がっているサービスはRTMに不向き)
? ターミナルからConsoleIn起動
? $ cd /usr/local/share/openrtm-1.1/examples/ (Ubuntuなら/usr/share/openrtm-1.1/examples)
? $ ./ConsoleInComp
? ターミナルからConsoleOut起動
? $ cd /usr/local/share/openrtm-1.1/examples/ (Ubuntuなら/usr/share/openrtm-1.1/examples)
? $ ./ConsoleOutComp
? ターミナルからEclipseを起動
? Downloadsにダウンロードして,そのまま展開してeclipseというディレクトリが出来た,と仮定し
ます.
? $ cd $HOME/Downloads/eclipse
? $ cd Eclipse.app/Contents/MacOS
? $ ./eclipse
? Ubuntuなら解答したディレクトリに移動してeclipseというバイナリを実行するのみ
5
SUGAR SWEET ROBOTICS CO., LTD.
ネームサービスとは
? 実行中のRTCの管理
– OpenRTM-aistを使う場合,RTCを
使ったシステムでは最低1つ必要
– 異なるホストのRTCも登録可能
– 複数のネームサービスを併用可能
6
RTC1
RTC2
RTC3
ネーム	
 ?
サーバー
ツール
PC2
PC1
SUGAR SWEET ROBOTICS CO., LTD.
ツールの役割
? ツールの種類
? RT System Editor
? Eclipseのプラグイン
? GUI
? rtshell
? コマンドからRTCを制御
? CUI.スクリプト化が可能=自動化
? 自作ツール
? ツール作成自体も容易
? ツールの役割
? RTC間の接続
? RTCのコンフィグレーションの変更
? RTCの状態の変更
? 実行コンテキストの制御
77
RTC RTC
RTCRTC
CREATED INACTIVE
ACTIVEERROR
DEACTIVATE
ACTIVATE
RESET
RTC
RTC
SUGAR SWEET ROBOTICS CO., LTD.
RT System Editorの使い方
? パースペクティブを「RT
System Editor」に変更
– パースペクティブとはEclipse
の作業画面のレイアウトタイ
プ
– メニュー>「ウィンドウ」>
「パースペクティブを開く」
>「その他」
– 「RT System Editor」を選択
8
SUGAR SWEET ROBOTICS CO., LTD.
RT System Editorの使い方
? 所望のネームサーバが見つからない場合は追加処理
– ネームサーバとは実行中のRTCの管理を行うサーバ
? localhost (自分自身)
? デフォルトでlocalhostを検索し,ネームサーバーが発見され
れば追加される
? Macでは不具合があるので,ネームサーバーを起動する前に
RTSEを起動した方がいい
? ネームサーバに起動したRTCが登録されていれば成功
? ConsoleInは
? 「/localhost/お使いのPC名.host_cxt/ConsoleIn0.rtc」
という名前でネームサーバーに登録されているはず?
? 名前の登録ルールを変更することも簡単
? rtc.conf
9
SUGAR SWEET ROBOTICS CO., LTD.
RT System Editorの使い方
? System Editorを開いてRTシステムを編集す
る
- File > Open On-Line System Editorもしくはツールバー
上のボタン (右図)
- メインビューに空の「System Diagram」が表示される
? ネームサービスビューからドラッグ&ドロッ
プ
– 利用するRTCをすべて表示
? ポートとポートをドラッグ&ドロップで接続
– 表示されるダイアログはOK
10
SUGAR SWEET ROBOTICS CO., LTD.
RT System Editorの使い方
? すべてのRTCをACTIVATE
? ConsoleInのウィンドウに「Please
Input number」と表示
– 適当な数字を入れると
ConsoleOut側に表示
– RTC間の通信が行われたことが分か
る
? DEACTIVATEする場合は,指令を
送ってからConsoleInに数字を送る
必要がある
– (scanf入力待ちになっている)
ACTIVATE DEACTIVATE
11
SUGAR SWEET ROBOTICS CO., LTD.
OpenRTM-aist学習用台車シミュレータ
? Loader.batを実行
– シミュレータ
– 仮想ジョイスティック
– コントローラ
? すべて接続してACTIVATE
? ジョイスティックで操作
? コントローラGUIで位置や接触センサを確認
シミュレータ 仮想ジョイスティック
コントローラGUI
http://ysuga.net/?p=133	
 ?
12
SUGAR SWEET ROBOTICS CO., LTD.
台車シミュレータの中身
? RT System Editorで表示
仮想ジョイスティック
コントローラ
シミュレータ内のロボット
目標速度
現在位置
接触センサ
ジョイスティック入力
13
SUGAR SWEET ROBOTICS CO., LTD.
実習1.台車に指令を送ってみよう
? 下記のMobileRobotのRTCは移動ロボットシミュレータ内の台車を表している
目標速度	
 ?「vel」	
 ?
TimedVelocity2D型
現在位置	
 ?「pos」	
 ?
TimedPose2D型
接触センサ	
 ?「bumper」	
 ?
TimedBooleanSeq型
14
? 台車に直進と回転の指令を同時に送り,その場でぐるぐる回る動作をさせ
てみよう
SUGAR SWEET ROBOTICS CO., LTD.
RTCプログラミングの流れ
? RTC Builderによるスケルトンコードの生成
? スケルトンコードの特定のイベントハンドラに独自のコードを追加
? on_initialized???CREATED->INACTIVE
? on_activated???INACTIVE->ACTIVE
? on_deactivated???ACTIVE->INACTIVE
? on_execute???ACTIVE状態で周期的に呼ばれる
? コンパイルし実行
15
SUGAR SWEET ROBOTICS CO., LTD.
RTC Builder
? パースペクティブをRTC Builderに変更
– Builder Editorで,RTCの骨格(スケルト
ン)コードを作成できる
? Builder Editorを開く
– RTCが持つべき「イベントハンドラ」が実
装されているので,それを編集して自分の
コードを差し込む
16
SUGAR SWEET ROBOTICS CO., LTD.
RTC Builder
? プロジェクト名の入力
– MyController
? 画面下部のタブを切り替え
ながら必要な情報を入力
17
SUGAR SWEET ROBOTICS CO., LTD.
RTC Builder
? 基本タブ
必要情報を入力
18
SUGAR SWEET ROBOTICS CO., LTD.
RTC Builder
? アクティビティタブ
1.	
 ?onExecuteを選択
2.	
 ?ONにする
19
SUGAR SWEET ROBOTICS CO., LTD.
RTC Builder
? データポートタブ
? データ型が見つから無い場合はRTM_ROOT環境変数が設定されて無い
? システムの詳細設定や,~/.bashrcなどを確認.必要によっては再起動.
? TimedVelocity2DはTimedVector2Dと間違いやすい!!
出力ポートを追加ポート名を編集
ポートの型を変更
ポートのソースコード上の変数名を入力 20
SUGAR SWEET ROBOTICS CO., LTD.
RTC Builder
? 言語タブ
C++を選択
21
? 基本タブに戻る (下にスクロール)
コード生成
SUGAR SWEET ROBOTICS CO., LTD.
RTC Builder
? MyControllerプロジェクトにソースコードが生
成される
– Builder Editor(真ん中のウィンドウ)は閉じてよい
22
SUGAR SWEET ROBOTICS CO., LTD.
RTCのソースコードを見つける
? Eclipseは通常,自分のホームディレクトリ直下
のworkspaceフォルダにワークスペースを作る
? Winなら C:Usersユーザ名workspace
? Linuxなどなら/home/ユーザ名/workspace
? ワークスペース内に,作成したRTCのソースコー
ドを見つけることができる
23
SUGAR SWEET ROBOTICS CO., LTD.
CMakeによるプロジェクト生成
? CMakeを起動
? CMakeLists.txtを
CMakeにドラッグ
&ドロップ
24
SUGAR SWEET ROBOTICS CO., LTD.
ROBOTECH2012	
 ?RTミドルウエア講習会
CMake
? 出力フォルダパスにbuildを追加
? RTCのフォルダが”…/workspace/MyController”の場合
? ”…/workspace/MyController/build”というフォルダを作る
? Configureを押すとフォルダ作成確認のダイアログが出るのでOK
2012/7/11
25
SUGAR SWEET ROBOTICS CO., LTD.
CMake2.8
? ビルド環境を選択
– Visual Studio 12 2013を選択
– Use default native compilersを選
択
? 赤い表示が出るが恐れず
「Generate」を押す
– Visual Studio用プロジェクトファ
イルが生成される
26
SUGAR SWEET ROBOTICS CO., LTD.
MacやLinuxなら
? 以下のコマンドを打つ
? cd $HOME/workspace/MyController # RTCのフォルダに移動
? mkdir build?# buildディレクトリ作成
? cd build # buildディレクトリに移動
? cmake ../ # cmakeする
? make #ここでコンパイル
? 古いRTCBを使っている場合,Macの場合は,RTCのヘッダーファイルを書き換える必要がある
? RTCの名前を$ModuleNameとすると???
? RTCのディレクトリ/include/$ModuleName/$ModuleName.hを開く
27
#include <rtm/Manager.h>
#include <rtm/DataFlowComponentBase.h>
#include <rtm/CorbaPort.h>
#include <rtm/DataInPort.h>
#include <rtm/DataOutPort.h>
#include <rtm/idl/BasicDataTypeSkel.h>
#include <rtm/idl/ExtendedDataTypesSkel.h>
#include <rtm/idl/InterfaceDataTypesSkel.h>
#include <rtm/idl/BasicDataTypeSkel.h>
#include <rtm/idl/ExtendedDataTypesSkel.h>
#include <rtm/idl/InterfaceDataTypesSkel.h>
#include <rtm/Manager.h>
#include <rtm/DataFlowComponentBase.h>
#include <rtm/CorbaPort.h>
#include <rtm/DataInPort.h>
#include <rtm/DataOutPort.h>
SUGAR SWEET ROBOTICS CO., LTD.
Visual Studio
? build/src/MyController.slnファイルを
ダブルクリック
– Visual Studioが起動する
– 複数のプロジェクトが存在
– MyController??RTC本体
– MyControllerComp???RTCを単体の
アプリケーションとして実行するための
プロジェクト
? MyControllerプロジェクト
– MyController.cppを開く
28
SUGAR SWEET ROBOTICS CO., LTD.
Visual Studio
? MyController::onExecute関数
? RTCがACTIVE状態の場合に周期的に
呼ばれる
? 実行周期は後で設定
? ここに周期的に呼ばれるべき制御ア
ルゴリズム等を記述
29
RTC::ReturnCode_t	
 ?MyController::onExecute(RTC::UniqueId	
 ?ec_id)	
 ?
{	
 ?
	
 ? m_velocity.data.vx	
 ?=	
 ?0.05;	
 ?//	
 ?バッファに書込む	
 ?
	
 ? m_velocity.data.vy	
 ?=	
 ?0;	
 ?
	
 ? m_velocity.data.va	
 ?=	
 ?1.0;	
 ?
	
 ? m_velocityOut.write();?//	
 ?データを送信	
 ?
	
 ? return	
 ?RTC::RTC_OK;	
 ?
}
SUGAR SWEET ROBOTICS CO., LTD.
2次元速度のデータ型
? TimedVelocity2D???タイムスタンプ付き2次元平面での
速度および角速度
? tm : Time型???タイムスタンプ
? sec : unsigned long型???秒
? nsec : unsigned long型???ナノ秒
? data : Velocity2D型???2次元平面での速度および各
速度
? vx : double型???X軸方向速度 (単位m/s)
? vy : double型???Y軸方向速度 (単位m/s)
? va : double型???各速度 (単位rad/s)
進行方向
X
θ
Y
30
SUGAR SWEET ROBOTICS CO., LTD.
移動ロボットに指令を送る
? 従って,TimedVelocity2D型の変数「vel」
の各メンバにアクセスする際は???
– vel.data.vx???X軸方向速度 [m/s]
– vel.data.vy???Y軸方向速度 [m/s]
– vel.data.va???Z軸方向速度 [rad/s]
– データ型がどんな構造体なのか知るには,IDLファ
イルを読む
– 通常は,C:Program Files (x86)OpenRTM-
aist1.1rtmidlにある
– TimedVelocity2Dは,ExtendedDatatype.idlで
定義されている.
X
θ
Y
31
LinuxやMacなら,	
 ?
/usr/include/openrtm-?‐1.1/rtm/idl	
 ?
もしくは,	
 ?
/usr/local/include/openrtm-?‐1.1	
 ?
/rtm/idl
SUGAR SWEET ROBOTICS CO., LTD.
IDLファイル
? オブジェクト指向言語に変
換可能なインターフェース
定義言語
? C++, Java, Pythonに変換
? 独自のデータ型を定義する
にはIDLを書いてRTC
Builderに読み込ませる
? CORBAの入門書やウェブサ
イトを参考にしてください.
32
	
 ?	
 ?	
 ?	
 ?/*!	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?*	
 ?@struct	
 ?TimedVelocity2D	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?*	
 ?@brief	
 ?Time-?‐stamped	
 ?version	
 ?of	
 ?Velocity2D.	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?*/	
 ?
	
 ?	
 ?	
 ?	
 ?struct	
 ?TimedVelocity2D	
 ?
	
 ?	
 ?	
 ?	
 ?{	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?Time	
 ?tm;	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?Velocity2D	
 ?data;	
 ?
	
 ?	
 ?	
 ?	
 ?};
	
 ?	
 ?	
 ?	
 ?/*!	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?*	
 ?@struct	
 ?Velocity2D	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?*	
 ?@brief	
 ?Velocities	
 ?in	
 ?2D	
 ?cartesian	
 ?space.	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?*/	
 ?
	
 ?	
 ?	
 ?	
 ?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;	
 ?
	
 ?	
 ?	
 ?	
 ?};
SUGAR SWEET ROBOTICS CO., LTD.
実行
? ネームサービスの起動確認
? RTCの実行
– MyControllerCompを右クリック
– 「デバッグ→インスタンス作成」で実行
? MobileRobotSim.batを実行するとシミュレー
タのみ起動
? RT System Editorでの接続,ACTIVE化
33
SUGAR SWEET ROBOTICS CO., LTD.
実習2.台車の動きを調整
? コンフィグレーション機能を試す
– コンフィグレーションとは,実行中
のRTCを調整するための機能
? 例:制御ゲインの調整
? コンフィグレーション機能を加え
て実行中にMyControllerの機能を
調整する
進行方向
X
θ
Y
34
SUGAR SWEET ROBOTICS CO., LTD.
RTC Builder
? Eclipseのパースペクティブを
RTC Builderに再変更
? パッケージエクスプローラの
RTC.xmlファイルをダブルク
リックする
– 先ほど作成した情報が記録され
ている
35
SUGAR SWEET ROBOTICS CO., LTD.
RTC Builder
? コンフィグレーションタブ
– velocity_x というコンフィグレーションを追加
36
SUGAR SWEET ROBOTICS CO., LTD.
追加したコンフィグレーション
? velocity_x : double型
– 変数名: velocity_x
– デフォルト値: 0.05
? velocity_theta : double型
– 変数名: velocity_theta
– デフォルト値: 1.0
37
SUGAR SWEET ROBOTICS CO., LTD.
RTC Builder
? 比較ダイアログ
– ここでは「Generated」を選択
– 基本的に「Merge」を選択
? 新しいコードの変更点のみ反映
– Generatedは新しいコード側で上書きされるので,自分の記入したコードが消える
? バックアップファイルがある (ファイル名末尾に日付が入る) ので心配要りま
せん
38
SUGAR SWEET ROBOTICS CO., LTD.
実習2.台車の動きを調整
? コンフィグレーション機能を試す
– コンフィグレーション機能を加えて実行中に
MyControllerの機能を調整する
RTC::ReturnCode_t	
 ?MyController::onExecute(RTC::UniqueId	
 ?ec_id)	
 ?
{	
 ?
	
 ? std::cout	
 ?<<	
 ?"Vx="	
 ?<<	
 ?m_velocity_x	
 ?	
 ?<<	
 ?std::endl;	
 ?
	
 ? std::cout	
 ?<<	
 ?"Vtheta="	
 ?<<	
 ?m_velocity_theta	
 ?<<	
 ?std::endl;	
 ?
	
 ? m_velocity.data.vx	
 ?=	
 ?m_velocity_x;	
 ?
	
 ? m_velocity.data.vy	
 ?=	
 ?0;	
 ?
	
 ? m_velocity.data.va	
 ?=	
 ?m_velocity_theta;	
 ?
	
 ? m_velocityOut.write();	
 ?
	
 ?	
 ?return	
 ?RTC::RTC_OK;	
 ?
}
進行方向
X
θ
Y
39
SUGAR SWEET ROBOTICS CO., LTD.
実行
? ネームサービスの起動確認
? RTCの実行
– MobileRobotSim.batを実行するとシミュレータのみ起動
? RT System Editorでの接続,ACTIVE化
? RT System Editor下部にConfiguration Viewに選択中のRTCの
コンフィグが表示されるので変更して「適用」を選択する(適
用しないと反映されない)
40
SUGAR SWEET ROBOTICS CO., LTD.
実習3.位置の取得
? 現在位置をデータポートから受け取ってコンソールに表示する
目標速度	
 ?「vel」	
 ?
TimedVelocity2D型
現在位置	
 ?「pos」	
 ?
TimedPose2D型
接触センサ	
 ?「bumper」	
 ?
TimedBooleanSeq型
? TimedPose2D型の入力ポートをMyControllerに追加する
SUGAR SWEET ROBOTICS CO., LTD.
RTC Builder
? 再度,RTCBuilderを開く
? MyController / RTC.xmlを開く (たぶん,開きっぱなし?)
? データポートタブに移動 → TimedPose2D型の入力ポート「pose」を追加
42
SUGAR SWEET ROBOTICS CO., LTD.
2次元位置のデータ型
? TimedPose2D???2次元平面での位置および姿勢
? tm : Time型???タイムスタンプ
? sec : unsigned long型???秒
? nsec : unsigned long型???ナノ秒
? data : Pose2D型???2次元平面での位置および姿勢
? position : Point2D型???2次元平面内での位置
– x : double型???X軸方向変異 (単位m)
– y : double型???Y軸方向変異 (単位m)
? heading : double型???姿勢 (単位rad)
? 従って,C++でTimedPose2D型の変数「pose」の各メンバにアクセスする
際は???
– pose.data.position.x???X軸方向変位
– pose.data.position.y???Y軸方向変位
– pose.data.heading???Z軸方向回転
進行方向
X
θ
Y
43
SUGAR SWEET ROBOTICS CO., LTD.
Visual Studio
? 再度,onExecute関数を編集
– 入力ポートはデータが来ているか確認する処理が入る
RTC::ReturnCode_t	
 ?MyController::onExecute(RTC::UniqueId	
 ?ec_id)	
 ?
{	
 ?
	
 ? m_velocity.data.vx	
 ?=	
 ?m_velocity_x;	
 ?
	
 ? m_velocity.data.vy	
 ?=	
 ?0;	
 ?
	
 ? m_velocity.data.va	
 ?=	
 ?m_velocity_theta;	
 ?
	
 ? m_velocityOut.write();	
 ?
	
 ? if(m_poseIn.isNew())	
 ?{	
 ?	
 ? //	
 ?入力ポートに入力があるか確認	
 ?
	
 ? 	
 ? m_poseIn.read();	
 ?	
 ? //	
 ?入力があるならば読み込む	
 ?
	
 ? 	
 ? std::cout	
 ?<<	
 ?"X	
 ?=	
 ?"	
 ?<<	
 ?m_pose.data.position.x	
 ?<<	
 ?std::endl;	
 ?
	
 ? 	
 ? std::cout	
 ?<<	
 ?"Y	
 ?=	
 ?"	
 ?<<	
 ?m_pose.data.position.y	
 ?<<	
 ?std::endl;	
 ?
	
 ? 	
 ? std::cout	
 ?<<	
 ?"Z	
 ?=	
 ?"	
 ?<<	
 ?m_pose.data.heading	
 ?<<	
 ?std::endl;	
 ?
	
 ? }	
 ?
	
 ?	
 ? return	
 ?RTC::RTC_OK;	
 ?
}
44
SUGAR SWEET ROBOTICS CO., LTD.
実行
? ネームサービスの起動確認
? RTCの実行
– MobileRobotSim.batを実行するとシミュレータのみ起
動
? RT System Editorでの接続,ACTIVE化
? 実行時の周期が速すぎる?
45
SUGAR SWEET ROBOTICS CO., LTD.
rtc.conf
? RTCの実行時の設定ファイル
– ネームサーバのIPアドレス,ポート番号
– 実行周期,実行コンテキストの種類
– RTCの名前付け規則
– ログの有無,ログレベル
– etc…
? rtc.confで実行周期を変更(単位Hz)
– 右クリック→アプリケーション→テキストエディタ
– rtc.confを実行ファイルと同じ場所に置いて,実行ファイルを実行
– Visual C++でデバッグする場合は,プロジェクトファイルと同じディレクトリに置く
(デフォルトでそこがカレントディレクトリになる)
exec_cxt.periodic.rate:	
 ?1.0
46
SUGAR SWEET ROBOTICS CO., LTD.
ROBOTECH2012	
 ?RTミドルウエア講習会
データポート関連変数の命名法則
? 出力ポートの場合
–「変数名」=「example」
?m_example
–データポートのデータ
を入れるバッファ
?m_exampleOut
–データポート本体
? 利用方法
? 1. m_example?にデータを入
力
? 2. m_exampleOut.write()
2012/7/11
47
? 入力ポートの場合
–「変数名」=「example」
?m_example
–データポートのデータを入
れるバッファ
?m_exampleIn
–データポート本体
? 利用方法
? 1. m_exampleIn.isNew()で受信確認
? 2. m_exampleIn.read()でデータ取
得
? 2. m_exampleのデータを読み取る
SUGAR SWEET ROBOTICS CO., LTD.
実習4.台車の接触スイッチ
? TimedBooleanSeq?真偽型 (True/False)の
配列
目標速度	
 ?「vel」	
 ?
TimedVelocity2D型
現在位置	
 ?「pos」	
 ?
TimedPose2D型
接触センサ	
 ?「bumper」	
 ?
TimedBooleanSeq型
配列の0番目要素=右側スイッチ	
 ?
配列の1番目要素=左側スイッチ
48
SUGAR SWEET ROBOTICS CO., LTD.
RTC Builderによるポートの追加
? InPort : TimedBooleanSeq型
– ポート名: bumper
– 変数名: bumper
49
SUGAR SWEET ROBOTICS CO., LTD.
Visual Studio
? **Seq型はdataメンバを配列のように使える
RTC::ReturnCode_t	
 ?MyController::onExecute(RTC::UniqueId	
 ?ec_id)	
 ?
{	
 ?
	
 ? ???省略???	
 ?
	
 ? if(m_bumperIn.isNew())	
 ?{	
 ?
	
 ? 	
 ? m_bumperIn.read();	
 ?
	
 ? 	
 ? if(m_bumper.data[0]	
 ?==	
 ?true)	
 ?{	
 ?
	
 ? 	
 ? 	
 ? std::cout	
 ?<<	
 ?"Right	
 ?Bumper	
 ?Hit!!"	
 ?<<	
 ?std::endl;	
 ?
	
 ? 	
 ? }	
 ?
	
 ? 	
 ? if(m_bumper.data[1]	
 ?	
 ?==	
 ?true)	
 ?{	
 ?
	
 ? 	
 ? 	
 ? std::cout	
 ?<<	
 ?"Left	
 ?	
 ?Bumper	
 ?Hit!!"	
 ?<<	
 ?std::endl;	
 ?
	
 ? 	
 ? }	
 ?
	
 ? }	
 ?
	
 ? return	
 ?RTC::RTC_OK;	
 ?
}
50
SUGAR SWEET ROBOTICS CO., LTD.
みなさんへの課題
? 接触スイッチの反応でロボットの動作を変える
– 左右どちらかに旋回する?
? 位置の値を使って図形を描く
– 正方形,星型などなど
? 仮想ジョイスティックを使った操作
? お使いのロボット関連製品をRTC化する
– onExecute以外の使えるイベントハンドラ例(RTC Builderで使えるように設定)
? onActivated???Activate時に一回呼ばれる(初期化用)
? onDeactivated???Deactivate時もしくはエラー状態遷移時に呼ばれる(終了処理)
スティック入力「out」	
 ?
TimedDoubleSeq型
各ボタンの出力値はGUIに記載されている	
 ?
??例:	
 ?Up(0,1)	
 ?→	
 ?0番目要素が0,1番目要素が1	
 ?
最初はコンソールにどんなデータが来るか表示して試してみよう
51
SUGAR SWEET ROBOTICS CO., LTD.
まとめ
? ツールの使い方
– RT System Editor (RTCの接続,Activate/Deactivate)
– RTC Builder (RTCのスケルトンコード生成)
– CMake (Visual C++用プロジェクト生成)
? コーディング方法
– データポート入出力
? TimedVelocity2D, TimedPose2D, TimedBooleanSeq
– コンフィグレーション
– rtc.confの設定
52
SUGAR SWEET ROBOTICS CO., LTD.
さらなる発展
? RTCを探してみよう
? http://openrtm.org >プロジェクト > RTコンポーネント
? 独自のデータ型を使ってみよう
? データポートに独自のデータ型を使うことができる
? サービスポートを使ってみよう
? RTCに関数型のインターフェースを追加でき,より柔軟なシステム設計ができ
る
? rtshellを使ってみよう
? コマンドラインから使えるツール.スクリプトを書くことで開発を効率化で
きる
? RTCを接続?コンフィグ?アクティブ化するプログラムを作ってみよう
? システム構築を自動化できる
? 参考ページ: http://ysuga.net
53
SUGAR SWEET ROBOTICS CO., LTD.
ご清聴ありがとうございました
株式会社SUGAR SWEET ROBOTICS
菅?佑樹
@ysuga (RTMのこととかも呟きます)
ysuga@sugarsweetrobotics.com
http://sugarsweetrobotics.com
http://ysuga.net
54

More Related Content

What's hot (20)

Robomec2014 rtm講習会第3部
Robomec2014 rtm講習会第3部Robomec2014 rtm講習会第3部
Robomec2014 rtm講習会第3部
openrtm
?
Rtミドルウェア講習会 第2部資料
Rtミドルウェア講習会 第2部資料Rtミドルウェア講習会 第2部資料
Rtミドルウェア講習会 第2部資料
openrtm
?
Robomec2014 rtm講習会第2部
Robomec2014 rtm講習会第2部Robomec2014 rtm講習会第2部
Robomec2014 rtm講習会第2部
openrtm
?
2015 summercamp 05
2015 summercamp 052015 summercamp 05
2015 summercamp 05
openrtm
?
160705-w01 RTミドルウエア講習会?早稲田大
160705-w01 RTミドルウエア講習会?早稲田大160705-w01 RTミドルウエア講習会?早稲田大
160705-w01 RTミドルウエア講習会?早稲田大
openrtm
?
130522 rt講習会(説明用)
130522 rt講習会(説明用)130522 rt講習会(説明用)
130522 rt講習会(説明用)
openrtm
?
狈别诲辞讲座?谤迟尘セミナー
狈别诲辞讲座?谤迟尘セミナー狈别诲辞讲座?谤迟尘セミナー
狈别诲辞讲座?谤迟尘セミナー
openrtm
?
ROBOMECH2017 RTM講習会 第1部?その1
ROBOMECH2017 RTM講習会 第1部?その1ROBOMECH2017 RTM講習会 第1部?その1
ROBOMECH2017 RTM講習会 第1部?その1
openrtm
?
170622-01
170622-01170622-01
170622-01
openrtm
?
Robomec2014 rtm講習会第1部(その2)
Robomec2014 rtm講習会第1部(その2)Robomec2014 rtm講習会第1部(その2)
Robomec2014 rtm講習会第1部(その2)
openrtm
?
Robomec2015講習会 150517 01
Robomec2015講習会 150517 01Robomec2015講習会 150517 01
Robomec2015講習会 150517 01
openrtm
?
Rtミドルウェア講習会 第1部資料
Rtミドルウェア講習会 第1部資料Rtミドルウェア講習会 第1部資料
Rtミドルウェア講習会 第1部資料
openrtm
?
Robomec2014 rtm講習会第1部(その1)
Robomec2014 rtm講習会第1部(その1)Robomec2014 rtm講習会第1部(その1)
Robomec2014 rtm講習会第1部(その1)
openrtm
?
Rtミドルウェア講習会 第3部資料 配布版
Rtミドルウェア講習会 第3部資料 配布版Rtミドルウェア講習会 第3部資料 配布版
Rtミドルウェア講習会 第3部資料 配布版
openrtm
?
Japan Robot Week 2016 RTM講習会 第1部
Japan Robot Week 2016 RTM講習会 第1部Japan Robot Week 2016 RTM講習会 第1部
Japan Robot Week 2016 RTM講習会 第1部
Noriaki Ando
?
160608 01
160608 01160608 01
160608 01
openrtm
?
Japan Robot Week 2016 RTM講習会 第2部
Japan Robot Week 2016 RTM講習会 第2部Japan Robot Week 2016 RTM講習会 第2部
Japan Robot Week 2016 RTM講習会 第2部
openrtm
?
Robomec2014 rtm講習会第3部
Robomec2014 rtm講習会第3部Robomec2014 rtm講習会第3部
Robomec2014 rtm講習会第3部
openrtm
?
Rtミドルウェア講習会 第2部資料
Rtミドルウェア講習会 第2部資料Rtミドルウェア講習会 第2部資料
Rtミドルウェア講習会 第2部資料
openrtm
?
Robomec2014 rtm講習会第2部
Robomec2014 rtm講習会第2部Robomec2014 rtm講習会第2部
Robomec2014 rtm講習会第2部
openrtm
?
2015 summercamp 05
2015 summercamp 052015 summercamp 05
2015 summercamp 05
openrtm
?
160705-w01 RTミドルウエア講習会?早稲田大
160705-w01 RTミドルウエア講習会?早稲田大160705-w01 RTミドルウエア講習会?早稲田大
160705-w01 RTミドルウエア講習会?早稲田大
openrtm
?
130522 rt講習会(説明用)
130522 rt講習会(説明用)130522 rt講習会(説明用)
130522 rt講習会(説明用)
openrtm
?
狈别诲辞讲座?谤迟尘セミナー
狈别诲辞讲座?谤迟尘セミナー狈别诲辞讲座?谤迟尘セミナー
狈别诲辞讲座?谤迟尘セミナー
openrtm
?
ROBOMECH2017 RTM講習会 第1部?その1
ROBOMECH2017 RTM講習会 第1部?その1ROBOMECH2017 RTM講習会 第1部?その1
ROBOMECH2017 RTM講習会 第1部?その1
openrtm
?
Robomec2014 rtm講習会第1部(その2)
Robomec2014 rtm講習会第1部(その2)Robomec2014 rtm講習会第1部(その2)
Robomec2014 rtm講習会第1部(その2)
openrtm
?
Robomec2015講習会 150517 01
Robomec2015講習会 150517 01Robomec2015講習会 150517 01
Robomec2015講習会 150517 01
openrtm
?
Rtミドルウェア講習会 第1部資料
Rtミドルウェア講習会 第1部資料Rtミドルウェア講習会 第1部資料
Rtミドルウェア講習会 第1部資料
openrtm
?
Robomec2014 rtm講習会第1部(その1)
Robomec2014 rtm講習会第1部(その1)Robomec2014 rtm講習会第1部(その1)
Robomec2014 rtm講習会第1部(その1)
openrtm
?
Rtミドルウェア講習会 第3部資料 配布版
Rtミドルウェア講習会 第3部資料 配布版Rtミドルウェア講習会 第3部資料 配布版
Rtミドルウェア講習会 第3部資料 配布版
openrtm
?
Japan Robot Week 2016 RTM講習会 第1部
Japan Robot Week 2016 RTM講習会 第1部Japan Robot Week 2016 RTM講習会 第1部
Japan Robot Week 2016 RTM講習会 第1部
Noriaki Ando
?
Japan Robot Week 2016 RTM講習会 第2部
Japan Robot Week 2016 RTM講習会 第2部Japan Robot Week 2016 RTM講習会 第2部
Japan Robot Week 2016 RTM講習会 第2部
openrtm
?

Similar to 搁罢ミドルウエア讲习会2015 (20)

SICE 2020 Rtm tutorial 2_online_en
SICE 2020 Rtm tutorial 2_online_enSICE 2020 Rtm tutorial 2_online_en
SICE 2020 Rtm tutorial 2_online_en
openrtm
?
ROBOMECH2023 RTミドルウェア講習会 第1部
ROBOMECH2023 RTミドルウェア講習会 第1部ROBOMECH2023 RTミドルウェア講習会 第1部
ROBOMECH2023 RTミドルウェア講習会 第1部
openrtm
?
组み込み入门
组み込み入门组み込み入门
组み込み入门
Yuki Suga
?
组み込み入门
组み込み入门组み込み入门
组み込み入门
Yuki Suga
?
IBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみたIBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみた
You&I
?
1.コース概要
1.コース概要1.コース概要
1.コース概要
openrtm
?
201110 01 Polytech Center 1
201110 01 Polytech Center 1201110 01 Polytech Center 1
201110 01 Polytech Center 1
openrtm
?
アトリエ秋葉原 Choregraphe WS#4
アトリエ秋葉原 Choregraphe WS#4アトリエ秋葉原 Choregraphe WS#4
アトリエ秋葉原 Choregraphe WS#4
Atelier Akihabara
?
201111 04
201111 04201111 04
201111 04
openrtm
?
20130329 rtm3
20130329 rtm320130329 rtm3
20130329 rtm3
openrtm
?
4.総合演习(1)
4.総合演习(1)4.総合演习(1)
4.総合演习(1)
openrtm
?
170622 02
170622 02170622 02
170622 02
openrtm
?
笔谤辞尘别迟丑别耻蝉超基础公开用.辫诲蹿
笔谤辞尘别迟丑别耻蝉超基础公开用.辫诲蹿笔谤辞尘别迟丑别耻蝉超基础公开用.辫诲蹿
笔谤辞尘别迟丑别耻蝉超基础公开用.辫诲蹿
勇 黒沢
?
200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6
200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6
200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6
Hironobu Isoda
?
181106 01
181106 01181106 01
181106 01
openrtm
?
RTミドルウェアによるロボットプログラミング技術 1.コース概要
RTミドルウェアによるロボットプログラミング技術 1.コース概要RTミドルウェアによるロボットプログラミング技術 1.コース概要
RTミドルウェアによるロボットプログラミング技術 1.コース概要
Noriaki Ando
?
160705-01 RTミドルウエア講習会?名城大
160705-01 RTミドルウエア講習会?名城大160705-01 RTミドルウエア講習会?名城大
160705-01 RTミドルウエア講習会?名城大
openrtm
?
OpenStack本番環境の作り方 - Interop 2016
OpenStack本番環境の作り方 - Interop 2016OpenStack本番環境の作り方 - Interop 2016
OpenStack本番環境の作り方 - Interop 2016
VirtualTech Japan Inc.
?
DSoC-RTCs
DSoC-RTCsDSoC-RTCs
DSoC-RTCs
FujiokaT
?
SICE 2020 Rtm tutorial 2_online_en
SICE 2020 Rtm tutorial 2_online_enSICE 2020 Rtm tutorial 2_online_en
SICE 2020 Rtm tutorial 2_online_en
openrtm
?
ROBOMECH2023 RTミドルウェア講習会 第1部
ROBOMECH2023 RTミドルウェア講習会 第1部ROBOMECH2023 RTミドルウェア講習会 第1部
ROBOMECH2023 RTミドルウェア講習会 第1部
openrtm
?
组み込み入门
组み込み入门组み込み入门
组み込み入门
Yuki Suga
?
组み込み入门
组み込み入门组み込み入门
组み込み入门
Yuki Suga
?
IBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみたIBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみた
You&I
?
1.コース概要
1.コース概要1.コース概要
1.コース概要
openrtm
?
201110 01 Polytech Center 1
201110 01 Polytech Center 1201110 01 Polytech Center 1
201110 01 Polytech Center 1
openrtm
?
アトリエ秋葉原 Choregraphe WS#4
アトリエ秋葉原 Choregraphe WS#4アトリエ秋葉原 Choregraphe WS#4
アトリエ秋葉原 Choregraphe WS#4
Atelier Akihabara
?
20130329 rtm3
20130329 rtm320130329 rtm3
20130329 rtm3
openrtm
?
4.総合演习(1)
4.総合演习(1)4.総合演习(1)
4.総合演习(1)
openrtm
?
笔谤辞尘别迟丑别耻蝉超基础公开用.辫诲蹿
笔谤辞尘别迟丑别耻蝉超基础公开用.辫诲蹿笔谤辞尘别迟丑别耻蝉超基础公开用.辫诲蹿
笔谤辞尘别迟丑别耻蝉超基础公开用.辫诲蹿
勇 黒沢
?
200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6
200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6
200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6
Hironobu Isoda
?
RTミドルウェアによるロボットプログラミング技術 1.コース概要
RTミドルウェアによるロボットプログラミング技術 1.コース概要RTミドルウェアによるロボットプログラミング技術 1.コース概要
RTミドルウェアによるロボットプログラミング技術 1.コース概要
Noriaki Ando
?
160705-01 RTミドルウエア講習会?名城大
160705-01 RTミドルウエア講習会?名城大160705-01 RTミドルウエア講習会?名城大
160705-01 RTミドルウエア講習会?名城大
openrtm
?
OpenStack本番環境の作り方 - Interop 2016
OpenStack本番環境の作り方 - Interop 2016OpenStack本番環境の作り方 - Interop 2016
OpenStack本番環境の作り方 - Interop 2016
VirtualTech Japan Inc.
?

More from Yuki Suga (8)

ロボットについて (ロボットのソフトウェア的側面と分散モジュール開発)
ロボットについて (ロボットのソフトウェア的側面と分散モジュール開発)ロボットについて (ロボットのソフトウェア的側面と分散モジュール開発)
ロボットについて (ロボットのソフトウェア的側面と分散モジュール開発)
Yuki Suga
?
机械図面の基础
机械図面の基础机械図面の基础
机械図面の基础
Yuki Suga
?
适応アルコ?リス?ムとコミュニケーションロホ?ット
适応アルコ?リス?ムとコミュニケーションロホ?ット适応アルコ?リス?ムとコミュニケーションロホ?ット
适応アルコ?リス?ムとコミュニケーションロホ?ット
Yuki Suga
?
ネットワーク通信入门
ネットワーク通信入门ネットワーク通信入门
ネットワーク通信入门
Yuki Suga
?
SI2008 RT-middleware Contest
SI2008 RT-middleware ContestSI2008 RT-middleware Contest
SI2008 RT-middleware Contest
Yuki Suga
?
RTC-scilab
RTC-scilabRTC-scilab
RTC-scilab
Yuki Suga
?
奥补蝉补苍产辞苍の开発
奥补蝉补苍产辞苍の开発奥补蝉补苍产辞苍の开発
奥补蝉补苍产辞苍の开発
Yuki Suga
?
搁罢ミドルウエアコンテスト2011応募作品「搁罢苍辞」
搁罢ミドルウエアコンテスト2011応募作品「搁罢苍辞」搁罢ミドルウエアコンテスト2011応募作品「搁罢苍辞」
搁罢ミドルウエアコンテスト2011応募作品「搁罢苍辞」
Yuki Suga
?
ロボットについて (ロボットのソフトウェア的側面と分散モジュール開発)
ロボットについて (ロボットのソフトウェア的側面と分散モジュール開発)ロボットについて (ロボットのソフトウェア的側面と分散モジュール開発)
ロボットについて (ロボットのソフトウェア的側面と分散モジュール開発)
Yuki Suga
?
机械図面の基础
机械図面の基础机械図面の基础
机械図面の基础
Yuki Suga
?
适応アルコ?リス?ムとコミュニケーションロホ?ット
适応アルコ?リス?ムとコミュニケーションロホ?ット适応アルコ?リス?ムとコミュニケーションロホ?ット
适応アルコ?リス?ムとコミュニケーションロホ?ット
Yuki Suga
?
ネットワーク通信入门
ネットワーク通信入门ネットワーク通信入门
ネットワーク通信入门
Yuki Suga
?
SI2008 RT-middleware Contest
SI2008 RT-middleware ContestSI2008 RT-middleware Contest
SI2008 RT-middleware Contest
Yuki Suga
?
奥补蝉补苍产辞苍の开発
奥补蝉补苍产辞苍の开発奥补蝉补苍产辞苍の开発
奥补蝉补苍产辞苍の开発
Yuki Suga
?
搁罢ミドルウエアコンテスト2011応募作品「搁罢苍辞」
搁罢ミドルウエアコンテスト2011応募作品「搁罢苍辞」搁罢ミドルウエアコンテスト2011応募作品「搁罢苍辞」
搁罢ミドルウエアコンテスト2011応募作品「搁罢苍辞」
Yuki Suga
?

Recently uploaded (11)

【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?
LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3
LFDT Tokyo Meetup
?
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
sugiuralab
?
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
Matsushita Laboratory
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
?
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
sugiuralab
?
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
Matsushita Laboratory
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?
LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3
LFDT Tokyo Meetup
?
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
sugiuralab
?
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
Matsushita Laboratory
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
?
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
sugiuralab
?
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
Matsushita Laboratory
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?

搁罢ミドルウエア讲习会2015

  • 1. SUGAR SWEET ROBOTICS CO., LTD. 翱辫别苍搁罢惭-补颈蝉迟入门 株式会社SUGAR SWEET ROBOTICS?代表取締役 早稲田大学基幹理工学部表現工学科 尾形哲也研究室 客員次席研究員 芝浦工業大学SIT研究所?客員研究員 菅?佑樹 1
  • 2. SUGAR SWEET ROBOTICS CO., LTD. インストール (Windows) ? まず,UACをOFFにしましょう. ? OpenRTM-aist バージョン1.1.1 C++言語版 (32bit版) ? http://openrtm.org/openrtm/ja/node/5711 ? JDK8???Oracle Webサイトからダウンロード.JREはOpenRTMに同梱だが,Java 版を開発する場合等に必要なのでインストールをオススメ(32bit版オススメ) ? Python 2.7??? python-2.7.9.msi(32bit) ? PyYAML (2.7対応)???PyYAML-3.11.win32-py2.7.exe ? OpenRTM-aist???OpenRTM-aist-1.1.1-RELEASE_x86_vc12.msi (32bit) ? GUIツール入りeclipse??? eclipse381-openrtp110rc5v20150317-ja-win32.zip (32bit) ? Doxygen ? Doxygen win32 ??? doxygen-1.8.9.1-setup.exe ? CMake 3.2 ? CMake 3.2 ??? cmake-3.2.1-win32-x86.exe ? Visual Studio 2013 Community Edition ? https://www.microsoft.com/ja-jp/dev/products/community.aspx 2
  • 3. SUGAR SWEET ROBOTICS CO., LTD. インストール (OSX10.9以降) ? SUGAR SWEET ROBOTICSで管理しているOSX版パッケージの使い方 ? OSXは10.9.3+Xcodeは5.1 (これ以外の環境では,自分でビルドする必要があります) ? C++版インストーラ ? http://sugarsweetrobotics.com/pub/Darwin/OpenRTM-aist/cxx/1.1/OpenRTM-aist-1.1-cxx-osx-10.9.dmg ? $HOME/.bash_profileに以下の記述を追加する必要がある. ? RTM_ROOT=/usr/local/include/openrtm-1.1 ? PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ? これ以外に,以下のツールが必要です(自分でビルドする場合も必要) ? Xcodeコマンドラインツール ? https://daw.apple.com/cgi-bin/WebObjects/DSAuthWeb.woa/wa/login? &appIdKey=891bd3417a7776362562d2197f89480a8547b108fd934911bcbea0110d07f757&path= %2F%2Fdownloads%2Findex.action (Apple Developerにサインイン必要) ? cmake?http://www.cmake.org/files/v2.8/cmake-2.8.10.2-Darwin64-universal.dmg ? doxygen?http://sugarsweetrobotics.com/pub/Darwin/doxygen/Doxygen-1.8.3.1.dmg ? pyyaml?http://sugarsweetrobotics.com/pub/Darwin/libs/PyYAML-3.10.tar.gz ? pkg-config?http://sugarsweetrobotics.com/pub/Darwin/pkgconfig/PkgConfig.dmg ? Sun JDK?(ターミナルでjavaと打つと,インストールされていなければ公式サイトに飛びます) ? また,ツールとして,RTシステム全部入りのEclipse (Mac版) をOpenRTM-aistのページからダウンロードする 必要があります. 3
  • 4. SUGAR SWEET ROBOTICS CO., LTD. 動作確認 (Windows) ? ネームサービスの起動 – 「スタートメニュー」>「OpenRTM-aist 1.1」>「tools」>「Start C++ Naming Service」 ? RTCの起動(ConsoleIn, ConsoleOut) – 「スタートメニュー」>「OpenRTM-aist 1.1」>「C++」>「components」 >「examples」>「ConsleInComp.exe」と同じく「ConsoleOutComp.exe」 ? GUIツールの起動 – eclipse***.zipを展開 – Eclipseフォルダ内のeclipse.exeを起動 – ワークスペースはデフォルトでOK ? 通常は,/Users/$USER_NAME/workspace 4
  • 5. SUGAR SWEET ROBOTICS CO., LTD. 動作確認 (OSX / Ubuntu) ? 新規ターミナルからNameServer起動 ? $ rtm-naming (Ubuntuだと,現在のプロセスをkillして再起動するか聞かれるので,必ずyesして再 起動する.デフォルトで立ち上がっているサービスはRTMに不向き) ? ターミナルからConsoleIn起動 ? $ cd /usr/local/share/openrtm-1.1/examples/ (Ubuntuなら/usr/share/openrtm-1.1/examples) ? $ ./ConsoleInComp ? ターミナルからConsoleOut起動 ? $ cd /usr/local/share/openrtm-1.1/examples/ (Ubuntuなら/usr/share/openrtm-1.1/examples) ? $ ./ConsoleOutComp ? ターミナルからEclipseを起動 ? Downloadsにダウンロードして,そのまま展開してeclipseというディレクトリが出来た,と仮定し ます. ? $ cd $HOME/Downloads/eclipse ? $ cd Eclipse.app/Contents/MacOS ? $ ./eclipse ? Ubuntuなら解答したディレクトリに移動してeclipseというバイナリを実行するのみ 5
  • 6. SUGAR SWEET ROBOTICS CO., LTD. ネームサービスとは ? 実行中のRTCの管理 – OpenRTM-aistを使う場合,RTCを 使ったシステムでは最低1つ必要 – 異なるホストのRTCも登録可能 – 複数のネームサービスを併用可能 6 RTC1 RTC2 RTC3 ネーム ? サーバー ツール PC2 PC1
  • 7. SUGAR SWEET ROBOTICS CO., LTD. ツールの役割 ? ツールの種類 ? RT System Editor ? Eclipseのプラグイン ? GUI ? rtshell ? コマンドからRTCを制御 ? CUI.スクリプト化が可能=自動化 ? 自作ツール ? ツール作成自体も容易 ? ツールの役割 ? RTC間の接続 ? RTCのコンフィグレーションの変更 ? RTCの状態の変更 ? 実行コンテキストの制御 77 RTC RTC RTCRTC CREATED INACTIVE ACTIVEERROR DEACTIVATE ACTIVATE RESET RTC RTC
  • 8. SUGAR SWEET ROBOTICS CO., LTD. RT System Editorの使い方 ? パースペクティブを「RT System Editor」に変更 – パースペクティブとはEclipse の作業画面のレイアウトタイ プ – メニュー>「ウィンドウ」> 「パースペクティブを開く」 >「その他」 – 「RT System Editor」を選択 8
  • 9. SUGAR SWEET ROBOTICS CO., LTD. RT System Editorの使い方 ? 所望のネームサーバが見つからない場合は追加処理 – ネームサーバとは実行中のRTCの管理を行うサーバ ? localhost (自分自身) ? デフォルトでlocalhostを検索し,ネームサーバーが発見され れば追加される ? Macでは不具合があるので,ネームサーバーを起動する前に RTSEを起動した方がいい ? ネームサーバに起動したRTCが登録されていれば成功 ? ConsoleInは ? 「/localhost/お使いのPC名.host_cxt/ConsoleIn0.rtc」 という名前でネームサーバーに登録されているはず? ? 名前の登録ルールを変更することも簡単 ? rtc.conf 9
  • 10. SUGAR SWEET ROBOTICS CO., LTD. RT System Editorの使い方 ? System Editorを開いてRTシステムを編集す る - File > Open On-Line System Editorもしくはツールバー 上のボタン (右図) - メインビューに空の「System Diagram」が表示される ? ネームサービスビューからドラッグ&ドロッ プ – 利用するRTCをすべて表示 ? ポートとポートをドラッグ&ドロップで接続 – 表示されるダイアログはOK 10
  • 11. SUGAR SWEET ROBOTICS CO., LTD. RT System Editorの使い方 ? すべてのRTCをACTIVATE ? ConsoleInのウィンドウに「Please Input number」と表示 – 適当な数字を入れると ConsoleOut側に表示 – RTC間の通信が行われたことが分か る ? DEACTIVATEする場合は,指令を 送ってからConsoleInに数字を送る 必要がある – (scanf入力待ちになっている) ACTIVATE DEACTIVATE 11
  • 12. SUGAR SWEET ROBOTICS CO., LTD. OpenRTM-aist学習用台車シミュレータ ? Loader.batを実行 – シミュレータ – 仮想ジョイスティック – コントローラ ? すべて接続してACTIVATE ? ジョイスティックで操作 ? コントローラGUIで位置や接触センサを確認 シミュレータ 仮想ジョイスティック コントローラGUI http://ysuga.net/?p=133 ? 12
  • 13. SUGAR SWEET ROBOTICS CO., LTD. 台車シミュレータの中身 ? RT System Editorで表示 仮想ジョイスティック コントローラ シミュレータ内のロボット 目標速度 現在位置 接触センサ ジョイスティック入力 13
  • 14. SUGAR SWEET ROBOTICS CO., LTD. 実習1.台車に指令を送ってみよう ? 下記のMobileRobotのRTCは移動ロボットシミュレータ内の台車を表している 目標速度 ?「vel」 ? TimedVelocity2D型 現在位置 ?「pos」 ? TimedPose2D型 接触センサ ?「bumper」 ? TimedBooleanSeq型 14 ? 台車に直進と回転の指令を同時に送り,その場でぐるぐる回る動作をさせ てみよう
  • 15. SUGAR SWEET ROBOTICS CO., LTD. RTCプログラミングの流れ ? RTC Builderによるスケルトンコードの生成 ? スケルトンコードの特定のイベントハンドラに独自のコードを追加 ? on_initialized???CREATED->INACTIVE ? on_activated???INACTIVE->ACTIVE ? on_deactivated???ACTIVE->INACTIVE ? on_execute???ACTIVE状態で周期的に呼ばれる ? コンパイルし実行 15
  • 16. SUGAR SWEET ROBOTICS CO., LTD. RTC Builder ? パースペクティブをRTC Builderに変更 – Builder Editorで,RTCの骨格(スケルト ン)コードを作成できる ? Builder Editorを開く – RTCが持つべき「イベントハンドラ」が実 装されているので,それを編集して自分の コードを差し込む 16
  • 17. SUGAR SWEET ROBOTICS CO., LTD. RTC Builder ? プロジェクト名の入力 – MyController ? 画面下部のタブを切り替え ながら必要な情報を入力 17
  • 18. SUGAR SWEET ROBOTICS CO., LTD. RTC Builder ? 基本タブ 必要情報を入力 18
  • 19. SUGAR SWEET ROBOTICS CO., LTD. RTC Builder ? アクティビティタブ 1. ?onExecuteを選択 2. ?ONにする 19
  • 20. SUGAR SWEET ROBOTICS CO., LTD. RTC Builder ? データポートタブ ? データ型が見つから無い場合はRTM_ROOT環境変数が設定されて無い ? システムの詳細設定や,~/.bashrcなどを確認.必要によっては再起動. ? TimedVelocity2DはTimedVector2Dと間違いやすい!! 出力ポートを追加ポート名を編集 ポートの型を変更 ポートのソースコード上の変数名を入力 20
  • 21. SUGAR SWEET ROBOTICS CO., LTD. RTC Builder ? 言語タブ C++を選択 21 ? 基本タブに戻る (下にスクロール) コード生成
  • 22. SUGAR SWEET ROBOTICS CO., LTD. RTC Builder ? MyControllerプロジェクトにソースコードが生 成される – Builder Editor(真ん中のウィンドウ)は閉じてよい 22
  • 23. SUGAR SWEET ROBOTICS CO., LTD. RTCのソースコードを見つける ? Eclipseは通常,自分のホームディレクトリ直下 のworkspaceフォルダにワークスペースを作る ? Winなら C:Usersユーザ名workspace ? Linuxなどなら/home/ユーザ名/workspace ? ワークスペース内に,作成したRTCのソースコー ドを見つけることができる 23
  • 24. SUGAR SWEET ROBOTICS CO., LTD. CMakeによるプロジェクト生成 ? CMakeを起動 ? CMakeLists.txtを CMakeにドラッグ &ドロップ 24
  • 25. SUGAR SWEET ROBOTICS CO., LTD. ROBOTECH2012 ?RTミドルウエア講習会 CMake ? 出力フォルダパスにbuildを追加 ? RTCのフォルダが”…/workspace/MyController”の場合 ? ”…/workspace/MyController/build”というフォルダを作る ? Configureを押すとフォルダ作成確認のダイアログが出るのでOK 2012/7/11 25
  • 26. SUGAR SWEET ROBOTICS CO., LTD. CMake2.8 ? ビルド環境を選択 – Visual Studio 12 2013を選択 – Use default native compilersを選 択 ? 赤い表示が出るが恐れず 「Generate」を押す – Visual Studio用プロジェクトファ イルが生成される 26
  • 27. SUGAR SWEET ROBOTICS CO., LTD. MacやLinuxなら ? 以下のコマンドを打つ ? cd $HOME/workspace/MyController # RTCのフォルダに移動 ? mkdir build?# buildディレクトリ作成 ? cd build # buildディレクトリに移動 ? cmake ../ # cmakeする ? make #ここでコンパイル ? 古いRTCBを使っている場合,Macの場合は,RTCのヘッダーファイルを書き換える必要がある ? RTCの名前を$ModuleNameとすると??? ? RTCのディレクトリ/include/$ModuleName/$ModuleName.hを開く 27 #include <rtm/Manager.h> #include <rtm/DataFlowComponentBase.h> #include <rtm/CorbaPort.h> #include <rtm/DataInPort.h> #include <rtm/DataOutPort.h> #include <rtm/idl/BasicDataTypeSkel.h> #include <rtm/idl/ExtendedDataTypesSkel.h> #include <rtm/idl/InterfaceDataTypesSkel.h> #include <rtm/idl/BasicDataTypeSkel.h> #include <rtm/idl/ExtendedDataTypesSkel.h> #include <rtm/idl/InterfaceDataTypesSkel.h> #include <rtm/Manager.h> #include <rtm/DataFlowComponentBase.h> #include <rtm/CorbaPort.h> #include <rtm/DataInPort.h> #include <rtm/DataOutPort.h>
  • 28. SUGAR SWEET ROBOTICS CO., LTD. Visual Studio ? build/src/MyController.slnファイルを ダブルクリック – Visual Studioが起動する – 複数のプロジェクトが存在 – MyController??RTC本体 – MyControllerComp???RTCを単体の アプリケーションとして実行するための プロジェクト ? MyControllerプロジェクト – MyController.cppを開く 28
  • 29. SUGAR SWEET ROBOTICS CO., LTD. Visual Studio ? MyController::onExecute関数 ? RTCがACTIVE状態の場合に周期的に 呼ばれる ? 実行周期は後で設定 ? ここに周期的に呼ばれるべき制御ア ルゴリズム等を記述 29 RTC::ReturnCode_t ?MyController::onExecute(RTC::UniqueId ?ec_id) ? { ? ? m_velocity.data.vx ?= ?0.05; ?// ?バッファに書込む ? ? m_velocity.data.vy ?= ?0; ? ? m_velocity.data.va ?= ?1.0; ? ? m_velocityOut.write();?// ?データを送信 ? ? return ?RTC::RTC_OK; ? }
  • 30. SUGAR SWEET ROBOTICS CO., LTD. 2次元速度のデータ型 ? TimedVelocity2D???タイムスタンプ付き2次元平面での 速度および角速度 ? tm : Time型???タイムスタンプ ? sec : unsigned long型???秒 ? nsec : unsigned long型???ナノ秒 ? data : Velocity2D型???2次元平面での速度および各 速度 ? vx : double型???X軸方向速度 (単位m/s) ? vy : double型???Y軸方向速度 (単位m/s) ? va : double型???各速度 (単位rad/s) 進行方向 X θ Y 30
  • 31. SUGAR SWEET ROBOTICS CO., LTD. 移動ロボットに指令を送る ? 従って,TimedVelocity2D型の変数「vel」 の各メンバにアクセスする際は??? – vel.data.vx???X軸方向速度 [m/s] – vel.data.vy???Y軸方向速度 [m/s] – vel.data.va???Z軸方向速度 [rad/s] – データ型がどんな構造体なのか知るには,IDLファ イルを読む – 通常は,C:Program Files (x86)OpenRTM- aist1.1rtmidlにある – TimedVelocity2Dは,ExtendedDatatype.idlで 定義されている. X θ Y 31 LinuxやMacなら, ? /usr/include/openrtm-?‐1.1/rtm/idl ? もしくは, ? /usr/local/include/openrtm-?‐1.1 ? /rtm/idl
  • 32. SUGAR SWEET ROBOTICS CO., LTD. IDLファイル ? オブジェクト指向言語に変 換可能なインターフェース 定義言語 ? C++, Java, Pythonに変換 ? 独自のデータ型を定義する にはIDLを書いてRTC Builderに読み込ませる ? CORBAの入門書やウェブサ イトを参考にしてください. 32 ? ? ? ?/*! ? ? ? ? ? ?* ?@struct ?TimedVelocity2D ? ? ? ? ? ?* ?@brief ?Time-?‐stamped ?version ?of ?Velocity2D. ? ? ? ? ? ?*/ ? ? ? ? ?struct ?TimedVelocity2D ? ? ? ? ?{ ? ? ? ? ? ? ? ? ?Time ?tm; ? ? ? ? ? ? ? ? ?Velocity2D ?data; ? ? ? ? ?}; ? ? ? ?/*! ? ? ? ? ? ?* ?@struct ?Velocity2D ? ? ? ? ? ?* ?@brief ?Velocities ?in ?2D ?cartesian ?space. ? ? ? ? ? ?*/ ? ? ? ? ?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; ? ? ? ? ?};
  • 33. SUGAR SWEET ROBOTICS CO., LTD. 実行 ? ネームサービスの起動確認 ? RTCの実行 – MyControllerCompを右クリック – 「デバッグ→インスタンス作成」で実行 ? MobileRobotSim.batを実行するとシミュレー タのみ起動 ? RT System Editorでの接続,ACTIVE化 33
  • 34. SUGAR SWEET ROBOTICS CO., LTD. 実習2.台車の動きを調整 ? コンフィグレーション機能を試す – コンフィグレーションとは,実行中 のRTCを調整するための機能 ? 例:制御ゲインの調整 ? コンフィグレーション機能を加え て実行中にMyControllerの機能を 調整する 進行方向 X θ Y 34
  • 35. SUGAR SWEET ROBOTICS CO., LTD. RTC Builder ? Eclipseのパースペクティブを RTC Builderに再変更 ? パッケージエクスプローラの RTC.xmlファイルをダブルク リックする – 先ほど作成した情報が記録され ている 35
  • 36. SUGAR SWEET ROBOTICS CO., LTD. RTC Builder ? コンフィグレーションタブ – velocity_x というコンフィグレーションを追加 36
  • 37. SUGAR SWEET ROBOTICS CO., LTD. 追加したコンフィグレーション ? velocity_x : double型 – 変数名: velocity_x – デフォルト値: 0.05 ? velocity_theta : double型 – 変数名: velocity_theta – デフォルト値: 1.0 37
  • 38. SUGAR SWEET ROBOTICS CO., LTD. RTC Builder ? 比較ダイアログ – ここでは「Generated」を選択 – 基本的に「Merge」を選択 ? 新しいコードの変更点のみ反映 – Generatedは新しいコード側で上書きされるので,自分の記入したコードが消える ? バックアップファイルがある (ファイル名末尾に日付が入る) ので心配要りま せん 38
  • 39. SUGAR SWEET ROBOTICS CO., LTD. 実習2.台車の動きを調整 ? コンフィグレーション機能を試す – コンフィグレーション機能を加えて実行中に MyControllerの機能を調整する RTC::ReturnCode_t ?MyController::onExecute(RTC::UniqueId ?ec_id) ? { ? ? std::cout ?<< ?"Vx=" ?<< ?m_velocity_x ? ?<< ?std::endl; ? ? std::cout ?<< ?"Vtheta=" ?<< ?m_velocity_theta ?<< ?std::endl; ? ? m_velocity.data.vx ?= ?m_velocity_x; ? ? m_velocity.data.vy ?= ?0; ? ? m_velocity.data.va ?= ?m_velocity_theta; ? ? m_velocityOut.write(); ? ? ?return ?RTC::RTC_OK; ? } 進行方向 X θ Y 39
  • 40. SUGAR SWEET ROBOTICS CO., LTD. 実行 ? ネームサービスの起動確認 ? RTCの実行 – MobileRobotSim.batを実行するとシミュレータのみ起動 ? RT System Editorでの接続,ACTIVE化 ? RT System Editor下部にConfiguration Viewに選択中のRTCの コンフィグが表示されるので変更して「適用」を選択する(適 用しないと反映されない) 40
  • 41. SUGAR SWEET ROBOTICS CO., LTD. 実習3.位置の取得 ? 現在位置をデータポートから受け取ってコンソールに表示する 目標速度 ?「vel」 ? TimedVelocity2D型 現在位置 ?「pos」 ? TimedPose2D型 接触センサ ?「bumper」 ? TimedBooleanSeq型 ? TimedPose2D型の入力ポートをMyControllerに追加する
  • 42. SUGAR SWEET ROBOTICS CO., LTD. RTC Builder ? 再度,RTCBuilderを開く ? MyController / RTC.xmlを開く (たぶん,開きっぱなし?) ? データポートタブに移動 → TimedPose2D型の入力ポート「pose」を追加 42
  • 43. SUGAR SWEET ROBOTICS CO., LTD. 2次元位置のデータ型 ? TimedPose2D???2次元平面での位置および姿勢 ? tm : Time型???タイムスタンプ ? sec : unsigned long型???秒 ? nsec : unsigned long型???ナノ秒 ? data : Pose2D型???2次元平面での位置および姿勢 ? position : Point2D型???2次元平面内での位置 – x : double型???X軸方向変異 (単位m) – y : double型???Y軸方向変異 (単位m) ? heading : double型???姿勢 (単位rad) ? 従って,C++でTimedPose2D型の変数「pose」の各メンバにアクセスする 際は??? – pose.data.position.x???X軸方向変位 – pose.data.position.y???Y軸方向変位 – pose.data.heading???Z軸方向回転 進行方向 X θ Y 43
  • 44. SUGAR SWEET ROBOTICS CO., LTD. Visual Studio ? 再度,onExecute関数を編集 – 入力ポートはデータが来ているか確認する処理が入る RTC::ReturnCode_t ?MyController::onExecute(RTC::UniqueId ?ec_id) ? { ? ? m_velocity.data.vx ?= ?m_velocity_x; ? ? m_velocity.data.vy ?= ?0; ? ? m_velocity.data.va ?= ?m_velocity_theta; ? ? m_velocityOut.write(); ? ? if(m_poseIn.isNew()) ?{ ? ? // ?入力ポートに入力があるか確認 ? ? ? m_poseIn.read(); ? ? // ?入力があるならば読み込む ? ? ? std::cout ?<< ?"X ?= ?" ?<< ?m_pose.data.position.x ?<< ?std::endl; ? ? ? std::cout ?<< ?"Y ?= ?" ?<< ?m_pose.data.position.y ?<< ?std::endl; ? ? ? std::cout ?<< ?"Z ?= ?" ?<< ?m_pose.data.heading ?<< ?std::endl; ? ? } ? ? ? return ?RTC::RTC_OK; ? } 44
  • 45. SUGAR SWEET ROBOTICS CO., LTD. 実行 ? ネームサービスの起動確認 ? RTCの実行 – MobileRobotSim.batを実行するとシミュレータのみ起 動 ? RT System Editorでの接続,ACTIVE化 ? 実行時の周期が速すぎる? 45
  • 46. SUGAR SWEET ROBOTICS CO., LTD. rtc.conf ? RTCの実行時の設定ファイル – ネームサーバのIPアドレス,ポート番号 – 実行周期,実行コンテキストの種類 – RTCの名前付け規則 – ログの有無,ログレベル – etc… ? rtc.confで実行周期を変更(単位Hz) – 右クリック→アプリケーション→テキストエディタ – rtc.confを実行ファイルと同じ場所に置いて,実行ファイルを実行 – Visual C++でデバッグする場合は,プロジェクトファイルと同じディレクトリに置く (デフォルトでそこがカレントディレクトリになる) exec_cxt.periodic.rate: ?1.0 46
  • 47. SUGAR SWEET ROBOTICS CO., LTD. ROBOTECH2012 ?RTミドルウエア講習会 データポート関連変数の命名法則 ? 出力ポートの場合 –「変数名」=「example」 ?m_example –データポートのデータ を入れるバッファ ?m_exampleOut –データポート本体 ? 利用方法 ? 1. m_example?にデータを入 力 ? 2. m_exampleOut.write() 2012/7/11 47 ? 入力ポートの場合 –「変数名」=「example」 ?m_example –データポートのデータを入 れるバッファ ?m_exampleIn –データポート本体 ? 利用方法 ? 1. m_exampleIn.isNew()で受信確認 ? 2. m_exampleIn.read()でデータ取 得 ? 2. m_exampleのデータを読み取る
  • 48. SUGAR SWEET ROBOTICS CO., LTD. 実習4.台車の接触スイッチ ? TimedBooleanSeq?真偽型 (True/False)の 配列 目標速度 ?「vel」 ? TimedVelocity2D型 現在位置 ?「pos」 ? TimedPose2D型 接触センサ ?「bumper」 ? TimedBooleanSeq型 配列の0番目要素=右側スイッチ ? 配列の1番目要素=左側スイッチ 48
  • 49. SUGAR SWEET ROBOTICS CO., LTD. RTC Builderによるポートの追加 ? InPort : TimedBooleanSeq型 – ポート名: bumper – 変数名: bumper 49
  • 50. SUGAR SWEET ROBOTICS CO., LTD. Visual Studio ? **Seq型はdataメンバを配列のように使える RTC::ReturnCode_t ?MyController::onExecute(RTC::UniqueId ?ec_id) ? { ? ? ???省略??? ? ? if(m_bumperIn.isNew()) ?{ ? ? ? m_bumperIn.read(); ? ? ? if(m_bumper.data[0] ?== ?true) ?{ ? ? ? ? std::cout ?<< ?"Right ?Bumper ?Hit!!" ?<< ?std::endl; ? ? ? } ? ? ? if(m_bumper.data[1] ? ?== ?true) ?{ ? ? ? ? std::cout ?<< ?"Left ? ?Bumper ?Hit!!" ?<< ?std::endl; ? ? ? } ? ? } ? ? return ?RTC::RTC_OK; ? } 50
  • 51. SUGAR SWEET ROBOTICS CO., LTD. みなさんへの課題 ? 接触スイッチの反応でロボットの動作を変える – 左右どちらかに旋回する? ? 位置の値を使って図形を描く – 正方形,星型などなど ? 仮想ジョイスティックを使った操作 ? お使いのロボット関連製品をRTC化する – onExecute以外の使えるイベントハンドラ例(RTC Builderで使えるように設定) ? onActivated???Activate時に一回呼ばれる(初期化用) ? onDeactivated???Deactivate時もしくはエラー状態遷移時に呼ばれる(終了処理) スティック入力「out」 ? TimedDoubleSeq型 各ボタンの出力値はGUIに記載されている ? ??例: ?Up(0,1) ?→ ?0番目要素が0,1番目要素が1 ? 最初はコンソールにどんなデータが来るか表示して試してみよう 51
  • 52. SUGAR SWEET ROBOTICS CO., LTD. まとめ ? ツールの使い方 – RT System Editor (RTCの接続,Activate/Deactivate) – RTC Builder (RTCのスケルトンコード生成) – CMake (Visual C++用プロジェクト生成) ? コーディング方法 – データポート入出力 ? TimedVelocity2D, TimedPose2D, TimedBooleanSeq – コンフィグレーション – rtc.confの設定 52
  • 53. SUGAR SWEET ROBOTICS CO., LTD. さらなる発展 ? RTCを探してみよう ? http://openrtm.org >プロジェクト > RTコンポーネント ? 独自のデータ型を使ってみよう ? データポートに独自のデータ型を使うことができる ? サービスポートを使ってみよう ? RTCに関数型のインターフェースを追加でき,より柔軟なシステム設計ができ る ? rtshellを使ってみよう ? コマンドラインから使えるツール.スクリプトを書くことで開発を効率化で きる ? RTCを接続?コンフィグ?アクティブ化するプログラムを作ってみよう ? システム構築を自動化できる ? 参考ページ: http://ysuga.net 53
  • 54. SUGAR SWEET ROBOTICS CO., LTD. ご清聴ありがとうございました 株式会社SUGAR SWEET ROBOTICS 菅?佑樹 @ysuga (RTMのこととかも呟きます) ysuga@sugarsweetrobotics.com http://sugarsweetrobotics.com http://ysuga.net 54