RTミドルウェア SUMMER CAMP 2016
SysML講習会
日時:2016年8月1日(月) 15:20~
場所:産業技術総合研究所 つくばセンター中央第二
本部・情報棟1階 ネットワーク会議室
株式会社 グローバルアシスト
坂本 武志
2016.8.1 Copyright (C) GLOBAL ASSIST Co., Ltd., All Rights Reserved. 2
SysMLモデリング
 モデリング≒設計
 設計を行うのであれば,その場限りの独自記法で検討を行うのでは
なく,標準となっている記法で検討を行って欲しい
 開発したRTコンポーネントを公開する際に,設計情報も併せて
公開して欲しい
 後からRTコンポーネントを利用する人のため
 サマーキャンプでモデリングを行っている理由
 チーム内での意思統一,進捗管理
 何を開発するのか?どう実装するのか?など
 どこまで開発できているのか?
 開発内容の説明
 どのようなシステムを開発するのか?何が特徴なのか?など
2016.8.1 3
要求図
 性能なども含めたシステムが満たすべき項目を表現
req [model] 移動ロボット [移動ロボット(自律移動)]
<<requirement>>
自律移動
id =
text = "ユーザが指定した
目的地まで,安全に移動で
きること"
<<requirement>>
障害物回避
id =
text = "ロボット周辺の障害
物を回避できること"
<<requirement>>
経路生成
id =
text = "目的地までの移動
経路を自動で生成できるこ
と"
<<requirement>>
移動
id =
text = "移動指令に従って
移動すること"
<<requirement>>
自己位置推定
id =
text = "ロボット自身の現在
位置を推定できること"
<<requirement>>
環境地図
id =
text = "周辺環境の地図を
持つこと"
<<requirement>>
環境地図マ ッチング
id =
text = "周辺環境の地図と
外界計測センサの計測結
果からマッチングを行うこと"
<<requirement>>
デッドレ コニング
id =
text = "内界センサの計測
値を基に,自分の位置を推
定できること"
<<requirement>>
内界センサ
id =
text = "ロボットの相対的な
移動量を計測できること"
<<requirement>>
周辺環境情報の計測
id =
text = "ロボット周辺の環境情
報を計測できること"
<<requirement>>
移動時間
id =
text = "なるべく短い時間で
目的地まで到達できること"
<<requirement>>
連続移動可能距離
id =
text = "なるべく長距離を移
動可能であること"
<<requirement>>
低消費電力化
id =
text = "消費電力をなるべ
く下げること"
<<requirement>>
環境地図自動生成
id =
text = "周辺環境の地図を自
動的に生成できること"
<<requirement>>
ユーザビリティの向上
id =
text = "使用時のユーザの負
担をなるべく軽減すること"
<<requirement>>
地図精度の向上
id =
text = "なるべく高精度な地
図を生成できること"
<<requirement>>
パターン移動
id =
text = "指定されたパターン
に従って移動できること"
<<requirement>>
効率的な 自律移動
id =
text = "ユーザが指定した目的地ま
で,なるべく短時間で安全に移動で
きるとともに,ユーザの手間をなるべく
軽減しつつ,長距離を移動可能であ
ること"
<<deriveReqt>>
<<deriveReqt>>
<<deriveReqt>>
<<deriveReqt>>
<<deriveReqt>>
<<deriveReqt>>
<<deriveReqt>>
<<deriveReqt>>
<<deriveReqt>> <<deriveReqt>>
<<deriveReqt>>
<<deriveReqt>>
<<deriveReqt>>
<<deriveReqt>>
<<deriveReqt>>
<<deriveReqt>>
<<deriveReqt>>
開発対象システムの説明
何を行うシステムを開発するのか?
各機能は何のために必要なのか?
システムを開発中に,
本来は何をするのか?を確認
何を目的としている機能なのか?
別機能で代替できないのか?
2016.8.1 4
ユースケース図
 対象範囲(システム)が提供する機能の明確化
 開発対象の範囲(システム化範囲)を明確にする。
 機能とそのユーザの関係を明確にする。
 対象範囲(システム)が必要とする外部要素を明確にする。
uc [model] 移動ロボット [移動ロボット]
移動ロボットシステム
ユーザ
指定された目的地まで自律
的に移動する
拡張点
移動方向を決定する
周辺環境を 計測する
障害物を回避する
条件:{移動経路上に障害物が存在}
拡張点:移動方向を決定する
環境地図を自動的に
生成する
現在位置を 推定する
移動する
経路を生成する
<<include>>
<<include>>
<<include>>
<<include>>
<<include>>
<<extend>>
<<include>>
<<include>>
提供機能のカタログ化
どのような機能を開発するのか?
開発工数の見積もり
各機能を開発するのに必要な
工数はどの程度か?
優先順位の決定
どの機能から開発を行うのか?
作業分担の検討
誰がどの機能を開発するのか?
必須機能の判断
最低限どの機能が必要なのか?
2016.8.1 5
ブロック定義図
 システムの静的な構造を表現
bdd [Package] 移動ロボット [移動ロボット]
<<block>>
移動ロボットシステム
<<block>>
移動ロボット
<<block>>
測域センサ
<<block>>
距離画像センサ
{XOR}
<<block>>
バッテリ
<<block>>
駆動輪
<<block>>
制御装置
<<block>>
車輪
<<block>>
モータ
<<block>>
エンコーダ
<<block>>
地図生成
- 測域センサ計測値: レンジデータ [0..1]
- 距離画像センサ計測値: 深度画像 [0..1]
- 現在位置: 位置
- 移動指令: 速度
<<block>>
周辺環境計測
<<block>>
自己位置推定
- 測域センサ計測値: レンジデータ [0..1]
- 距離画像センサ計測値: 深度画像 [0..1]
- 現在位置: 位置
- 移動量: 移動量
+ 自己位置を推定する(レンジデータ): 位置
+ 移動量を伝達する(移動量)
+ 現在位置を推定する(レンジデータ, 移動量): 位置
<<block>>
移動制御
- 移動指令: 速度
- 移動量: 移動量
+ 停止する()
+ 移動する(速度)
<<block>>
経路生成
- 現在位置: 位置
- 目標位置: 位置
- 目的地: 位置
+ 目的地を設定する(位置)
- 移動経路を生成する(位置, 位置): 位置
- 地図情報を更新する(レンジデータ, 位置)
<<block>>
障害物回避
- 測域センサ計測値: レンジデータ [0..1]
- 距離画像センサ計測値: 深度画像 [0..1]
- 目標位置: 位置
- 移動指令: 速度
+ 目標軌道を生成する(レンジデータ, 位置)
<<block>>
測域センサ制御
- 計測値: レンジデータ
<<block>>
距離画像センサ制御
- 計測値: 深度画像
{XOR}
<<valueType>>
レンジデータ
- 距離リスト: List<double>
<<valueType>>
深度画像
- ピクセル値: List<octet>
<<valueType>>
位置
- X: double
- Y: double
- θ: double
<<valueType>>
速度
- X方向速度: double
- Y方向速度: double
- Z軸周り回転速度: double
<<valueType>>
移動量
- X方向移動量: double
- Y方向移動量: double
- Z軸周り移動角度: double
0..1
0..1
2
0..1
0..1
1..*
1..*
必要なハードウェアの確認
どの機材を利用するのか?
不足している機材は何なのか?
RTCのカタログ化
どのようなRTCで構成するか?
どのRTCを開発し,どのRTCを再利用するのか?
優先順位の決定
どのRTCから開発を行うのか?
作業分担の検討
誰がどのRTCを開発するのか?
2016.8.1 6
内部ブロック図
 システム構成要素間の接続関係を明確にする
 構成要素間でやりとりする内容を明確にする
 システムを構成する要素間でやり取りする内容を表現
ibd [Package] 移動ロボット [移動ロボットシステム(SW)]
: ~レンジデータ : ~深度画像
: 周辺環境計測
: ~レンジデータ : ~深度画像
: ~レンジデータ
: 測域センサ制御[0..1]
: ~レンジデータ : ~深度画像
: 距離画像センサ制御[0..1]
: ~深度画像
: レンジデータ : 深度画像
目標位置: 位置 移動指令: ~速度
: 障害物回避
: レンジデータ : 深度画像
目標位置: 位置 移動指令: ~速度
: レンジデータ : 深度画像
現在位置: 位置 移動指令: ~速度
: 地図生成
: レンジデータ : 深度画像
現在位置: 位置 移動指令: ~速度
: レンジデータ : 深度画像
現在位置: ~位置
: 移動量
: 自己位置推定
: レンジデータ : 深度画像
現在位置: ~位置
: 移動量
現在位置: 位置
目標位置: ~位置
: 経路生成
現在位置: 位置
目標位置: ~位置
移動指令: 速度
: ~移動量
: 移動制御
移動指令: 速度
: ~移動量
目的地を設定する
ポートの明確化
各RTCはどのようなポートを
有するのか?
データポートではどのような
データをやり取りするのか?
サービスポートではどのような
操作が必要なのか?
全体構成の確認
各RTC間はどのような接続と
なるのか?
2016.8.1 7
コンテキスト図
 システムが動作する環境を表現
ibd [Package] 移動ロボット [コンテキスト図]
<<system>>
: 移動ロボットシステム
:ユーザ
<<external>>
: 人
<<external>>
: 床面
床面はフラットと仮定
<<external>>
: 周辺環境
<<external>>
: 壁
<<external>>
: 家具
0..*
0..*
0..*
開発環境の明確化
どのような前提で(何を考慮して)設計,開発を行うのか?
誰に対して機能を提供しているのか?何を使用して機能を実現するのか?
2016.8.1 8
アクティビティ図
 処理の流れを表現
現実世界の処理流れを整理する(ビジネスプロセスも含む)
ある機能を実現するための処理の流れ(アルゴリズムを含む)を表現
act 目的地まで移動する
ビジョンセンサ移動ロボ ット OpenHRP3距離センサ
移動開始を指令する
ユーザ OpenINVENT
グリッド経路
障害物情報
自己位置推定結果
現在位置から目標位置まで
の経路を計画する
グリッド経路
障害物情報
自己位置推定結果
グリッド経路
制御点データ
制御点を抽出する
グリッド経路
制御点データ
制御点データ
目標並進/旋回速度
ロボット中心の並進/旋回速
度を算出する
制御点データ
目標並進/旋回速度
目標並進/旋回速度
指令角速度値
両輪の指令角速度値を算出
する
目標並進/旋回速度
指令角速度値
目標並進/旋回速度
トルク指令値
両輪の指令トルクを算出す
る
目標並進/旋回速度
トルク指令値
センサデータ
周辺環境を計測する
センサデータ
センサデータ障害物情報
周辺障害物を検出する
センサデータ障害物情報
指令角速度値
オドメトリ値
移動する
指令角速度値
オドメトリ値
センサデータ 周辺環境を計測するセンサデータ
自己位置推定結果
オドメトリ値
自己位置推定結果
自己位置を推定する
自己位置推定結果
オドメトリ値
自己位置推定結果
オドメトリ値
トルク指令値
移動する
オドメトリ値
トルク指令値
自己位置推定結果
ランドマークを計測する
自己位置推定結果
[実機の場合]
[シミュレーションの場合]
{ rate = per 20ms }
{ rate = per 40ms }
act 地図を生成する
OpenHRPOpenINVENTユーザ
地図生成を実行する
干渉チェック
モデル干渉チェックモデルを作
成する
干渉チェック
モデル
干渉チェック
モデル 干渉チェック
結果
干渉チェックを実行する
干渉チェック
モデル 干渉チェック
結果
干渉チェック
結果
グリッド地図
グリッド地図を作成する
干渉チェック
結果
グリッド地図
グリッド地図
グリッド地図情報を配信する
グリッド地図
処理手順の明確化
各機能をどのような手順で実現するのか?
2016.8.1 9
RTSystem開発時のSysML利用法
00.システムが動作する環境の定義
 コンテキスト図の作成
01.システムが「何を」実現すべきなのかを検討
 要求図の作成
02.システムが実現すべき機能の検討
 ユースケース図の作成
03.システムの構成要素の検討
 ブロック定義図の作成
04.構成要素間でやり取りするデータの検討
 内部ブロック図の作成
05.機能を実現するための手順の検討
 アクティビティ図の作成
06.RTC,RTSystemへのマッピング
composite struct ure 全体構成
MapBuilderCons MapBuilderProv
GlobalPathCons
<<block,RTC>>
Invent GUI
MapBuilderCons MapBuilderProv
GlobalPathCons
InventGUIProv
MapMaintenanceCons
<<block,RTC>>
地図生成
InventGUIProv
MapMaintenanceCons
MapBuilderProv
ObstacleProv
<<block,RTC>>
地図管理
MapBuilderProv
ObstacleProv
MapMaintenanceCons
<<flowPort>>
位置情報 :
Position
MapBuilderProv
<<flowPort>> センサ
データ :SensorData
<<block,RTC>>
障害物検出MapMaintenanceCons
<<flowPort>>
位置情報 :
Position
MapBuilderProv
<<flowPort>> センサ
データ :SensorData
<<flowPort>> SensorData :
TimedMeasuredData
<<flowPort>> 計測結果 :
TimedDoubleSeq
<<block,RTC>>
距離センサシミ ュレ ーション
<<flowPort>> SensorData :
TimedMeasuredData
<<flowPort>> 計測結果 :
TimedDoubleSeq
<<flowPort>> 自己位置姿勢推
定結果(ToGUI) :Position
<<flowPort>> オドメトリ値 :
Position
<<block,RTC>>
自己位置姿勢推定
<<flowPort>> 自己位置姿勢推
定結果(ToGUI) :Position
<<flowPort>> オドメトリ値 :
Position
<<flowPort>> 自己位置姿
勢推定結果 :Position
<<flowPort>> オドメトリ値 :
Position
<<flowPort>> 車輪回
転角度 :車輪角度
<<block,RTC>>
オドメトリ推定
<<flowPort>> 自己位置姿
勢推定結果 :Position
<<flowPort>> オドメトリ値 :
Position
<<flowPort>> 車輪回
転角度 :車輪角度
<<flowPort>> 車輪回
転角度 :車輪角度
<<flowPort>> トルク
指令 :Torque
<<flowPort>> 目標速度 :
TimedVelocity
<<flowPort>> 現在位置・
姿勢 :SimulatedPosition
<<flowPort>> 車輪回
転角度 :車輪角度
BumpProv
<<block,RTC>>
運動制御
<<flowPort>> 車輪回
転角度 :車輪角度
<<flowPort>> トルク
指令 :Torque
<<flowPort>> 目標速度 :
TimedVelocity
<<flowPort>> 現在位置・
姿勢 :SimulatedPosition
<<flowPort>> 車輪回
転角度 :車輪角度
BumpProv
<<flowPort>> 現在位置・姿
勢 :Position
MapBuilderDrive
MapMaintenanceProv
<<flowPort>> 逸脱距離 :
Distance
LocalPathProv
<<flowPort>> 目標
並進・旋回速度 :
TimedVelocity
BumpProv
<<block,RTC>>
移動指令生成
<<flowPort>> 現在位置・姿
勢 :Position
MapBuilderDrive
MapMaintenanceProv
<<flowPort>> 逸脱距離 :
Distance
LocalPathProv
<<flowPort>> 目標
並進・旋回速度 :
TimedVelocity
BumpProv
<<flowPort>> 自
己位置姿勢推定
結果 :Position
<<flowPort>> 逸脱距離 :
Distance
DriveCons
MapMaintenanceProv
MapBuilderProv
GlobalPathProv
<<block,RTC>>
局所経路生成
<<flowPort>> 自
己位置姿勢推定
結果 :Position
<<flowPort>> 逸脱距離 :
Distance
DriveCons
MapMaintenanceProv
MapBuilderProv
GlobalPathProv
MapBuilderProv
MapMaintenanceProv
LocalPathCons
InventGUIProv
<<block,RTC>>
大域経路生成
MapBuilderProv
MapMaintenanceProv
LocalPathCons
InventGUIProv
<<flowPort>> 現在位置・姿勢 :
SimulatedPosition
<<flowPort>> トルク
指令 :Torque
<<flowPort>> 現在車
輪角度 :車輪角度
<<flowPort>> 計測結果 :
TimedDoubleSeq
<<flowPort>> 路面計測結果 :
TimedDoubleSeq
<<actor>>
BridgeRTC
<<flowPort>> 現在位置・姿勢 :
SimulatedPosition
<<flowPort>> トルク
指令 :Torque
<<flowPort>> 現在車
輪角度 :車輪角度
<<flowPort>> 計測結果 :
TimedDoubleSeq
<<flowPort>> 路面計測結果 :
TimedDoubleSeq
MotorControlCons
DriveControlCons
<<flowPort>> 現在PanTilt
角度 :PanTilt角度
<<flowPort>> 目標PanTilt
角度 :PanTilt角度
<<flowPort>> SensorData :
TimedMeasuredData
MapMaintenanceCons
<<block,RTC>>
路面凹凸検知
MotorControlCons
DriveControlCons
<<flowPort>> 現在PanTilt
角度 :PanTilt角度
<<flowPort>> 目標PanTilt
角度 :PanTilt角度
<<flowPort>> SensorData :
TimedMeasuredData
MapMaintenanceCons
<<flowPort>> 現在PanTilt
角度 :PanTilt角度
<<flowPort>> 目標PanTilt
角度 :PanTilt角度
<<block,RTC>>
PanTilt制御<<flowPort>> 現在PanTilt
角度 :PanTilt角度
<<flowPort>> 目標PanTilt
角度 :PanTilt角度
<<flowPort>> SensorData :
TimedMeasuredData
<<flowPort>> 路面計測結果 :
TimedDoubleSeq
<<block,RTC>>
距離センサシミュレ ーション
<<flowPort>> SensorData :
TimedMeasuredData
<<flowPort>> 路面計測結果 :
TimedDoubleSeq
マップ
InventGUI
InventGUI
地図更新
地図更新
地図更新
地図更新
障害物情報設定
移動指令
移動指令
移動指令
移動指令局所経路
局所経路
局所経路
広域経路
広域経路
局所経路局所経路
広域経路
広域経路
モータ
モータ
移動指令
移動指令
地図更新
地図更新
act 目的地まで移動する
ビジョンセン サ移動ロボ ット OpenHRP3距離センサ
移動開始を指令する
ユーザ OpenINVENT
グリッド経路
障害物情報
自己位置推定結果
現在位置から目標位置まで
の経路を計画する
グリッド経路
障害物情報
自己位置推定結果
グリッド経路
制御点データ
制御点を 抽出す る
グリッド経路
制御点データ
制御点データ
目標並進/旋回速度
ロボット中心の並進/旋回速
度を算出する
制御点データ
目標並進/旋回速度
目標並進/旋回速度
指令角速度値
両輪の指令角速度値を 算出
する
目標並進/旋回速度
指令角速度値
目標並進/旋回速度
トルク指令値
両輪の指令トルクを 算出す
る
目標並進/旋回速度
トルク指令値
センサデータ
周辺環境を 計測す る
センサデータ
センサデータ障害物情報
周辺障害物を 検出す る
センサデータ障害物情報
指令角速度値
オドメトリ値
移動する
指令角速度値
オドメトリ値
センサデータ 周辺環境を計測するセンサデータ
自己位置推定結果
オドメトリ値
自己位置推定結果自己位置を 推定す る
自己位置推定結果
オドメトリ値
自己位置推定結果
オドメトリ値
トルク指令値
移動する
オドメトリ値
トルク指令値
自己位置推定結果
ランドマークを 計測す る
自己位置推定結果
[実機の場合]
[シミュレーションの場合]
{ rate = per 20ms }
{ rate = per 40ms }
:ブロックR
name : BlockType
: Type
プロパティ
ポートポート
インターフェース
プロパティ
bdd [Package] 移動ロボット [移動ロボット]
<<block>>
移動ロボットシステム
<<block>>
移動ロボット
<<block>>
測域センサ
<<block>>
距離画像センサ
{XOR}
<<block>>
バッテリ
<<block>>
駆動輪
<<block>>
制御装置
<<block>>
車輪
<<block>>
モータ
<<block>>
エ ンコーダ
<<block>>
地図生成
- 測域センサ計測値: レンジデータ [0..1]
- 距離画像センサ計測値: 深度画像 [0..1]
- 現在位置: 位置
- 移動指令: 速度
<<block>>
周辺環境計測
<<block>>
自己位置推定
- 測域センサ計測値: レンジデータ [0..1]
- 距離画像センサ計測値: 深度画像 [0..1]
- 現在位置: 位置
- 移動量: 移動量
+ 自己位置を推定する(レンジデータ): 位置
+ 移動量を伝達する(移動量)
+ 現在位置を推定する(レンジデータ, 移動量): 位置
<<block>>
移動制御
- 移動指令: 速度
- 移動量: 移動量
+ 停止する()
+ 移動する(速度)
<<block>>
経路生成
- 現在位置: 位置
- 目標位置: 位置
- 目的地: 位置
+ 目的地を設定する(位置)
- 移動経路を生成する(位置, 位置): 位置
- 地図情報を更新する(レンジデータ, 位置)
<<block>>
障害物回避
- 測域センサ計測値: レンジデータ [0..1]
- 距離画像センサ計測値: 深度画像 [0..1]
- 目標位置: 位置
- 移動指令: 速度
+ 目標軌道を生成する(レンジデータ, 位置)
<<block>>
測域センサ制御
- 計測値: レンジデータ
<<block>>
距離画像センサ制御
- 計測値: 深度画像
{XOR}
<<valueType>>
レンジデータ
- 距離リスト: List<double>
<<valueType>>
深度画像
- ピクセル値: List<octet>
<<valueType>>
位置
- X: double
- Y: double
- θ: double
<<valueType>>
速度
- X方向速度: double
- Y方向速度: double
- Z軸周り回転速度: double
<<valueType>>
移動量
- X方向移動量: double
- Y方向移動量: double
- Z軸周り移動角度: double
0..1
0..1
2
0..1
0..1
1..*
1..*
req [model] 移動ロボッ ト [移動ロボット(自律移動)]
<<requirement>>
自律移動
id =
text = "ユーザが指定した
目的地まで,安全に移動で
きること"
<<requirement>>
障害物回避
id =
text = "ロボット周辺の障害
物を回避できること"
<<requirement>>
経路生成
id =
text = "目的地までの移動
経路を自動で生成できるこ
と"
<<requirement>>
移動
id =
text = "移動指令に従って
移動すること"
<<requirement>>
自己位置推定
id =
text = "ロボット自身の現在
位置を推定できること"
<<requirement>>
環境地図
id =
text = "周辺環境の地図を
持つこと"
<<requirement>>
環境地図マッ チング
id =
text = "周辺環境の地図と
外界計測センサの計測結
果からマッチングを行うこと"
<<requirement>>
デッドレコニング
id =
text = "内界センサの計測
値を基に,自分の位置を推
定できること"
<<requirement>>
内界センサ
id =
text = "ロボットの相対的な
移動量を計測できること"
<<requirement>>
周辺環境情報の計測
id =
text = "ロボット周辺の環境情
報を計測できること"
<<requirement>>
移動時間
id =
text = "なるべく短い時間で
目的地まで到達できること"
<<requirement>>
連続移動可能距離
id =
text = "なるべく長距離を移
動可能であること"
<<requirement>>
低消費電力化
id =
text = "消費電力をなるべ
く下げること"
<<requirement>>
環境地図自動生成
id =
text = "周辺環境の地図を自
動的に生成できること"
<<requirement>>
ユーザビリティの向上
id =
text = "使用時のユーザの負
担をなるべく軽減すること"
<<requirement>>
地図精度の向上
id =
text = "なるべく高精度な地
図を生成できること"
<<requirement>>
パタ ーン移動
id =
text = "指定されたパターン
に従って移動できること"
<<requirement>>
効率的な自律移動
id =
text = "ユーザが指定した目的地ま
で,なるべく短時間で安全に移動で
きるとともに,ユーザの手間をなるべく
軽減しつつ,長距離を移動可能であ
ること"
<<deriveReqt>>
<<deriveReqt>>
<<deriveReqt>>
<<deriveReqt>>
<<deriveReqt>>
<<deriveReqt>>
<<deriveReqt>>
<<deriveReqt>>
<<deriveReqt>> <<deriveReqt>>
<<deriveReqt>>
<<deriveReqt>>
<<deriveReqt>>
<<deriveReqt>>
<<deriveReqt>>
<<deriveReqt>>
<<deriveReqt>>
ibd [Package] 移動ロボット [コンテキスト図]
<<system>>
: 移動ロボットシステム
:ユーザ
<<external>>
: 人
<<external>>
: 床面
床面はフラットと仮定
<<external>>
: 周辺環境
<<external>>
: 壁
<<external>>
: 家具
0..*
0..*
0..*
uc [model] 移動ロボット [移動ロボット]
移動ロボットシステム
ユーザ
指定された目的地まで自律
的に移動する
拡張点
移動方向を決定する
周辺環境を計測する
障害物を回避する
条件:{移動経路上に障害物が存在}
拡張点:移動方向を決定する
環境地図を自動的に
生成する
現在位置を推定する
移動する
経路を生成する
<<include>>
<<include>>
<<include>>
<<include>>
<<include>>
<<extend>>
<<include>>
<<include>>

More Related Content

PDF
2016 summercamp RTM-ROS相互運用とJSKでの取り組み
PDF
ROBOMECH2017 インターネットを利用したロボットサービスとRSiの取り組み2017
PDF
160705-03 RTミドルウエア講習会・名城大
PDF
2016 summercamp RTコンポーネント開発のためのシステムモデリング講習会
PDF
Rtm・ros相互運用プログラミング環境
PDF
160608 01
PDF
2016 summercamp 効率よいRTシステム運用法
PDF
160705-02 RTミドルウエア講習会・名城大
2016 summercamp RTM-ROS相互運用とJSKでの取り組み
ROBOMECH2017 インターネットを利用したロボットサービスとRSiの取り組み2017
160705-03 RTミドルウエア講習会・名城大
2016 summercamp RTコンポーネント開発のためのシステムモデリング講習会
Rtm・ros相互運用プログラミング環境
160608 01
2016 summercamp 効率よいRTシステム運用法
160705-02 RTミドルウエア講習会・名城大

What's hot (20)

PDF
ROBOMECH2017 RTM講習会 第1部・その1
PDF
2013 summercamp 05
PPTX
Japan Robot Week 2016 RTM講習会 第1部
PDF
マネージャーやコンポーネントのコンポジット化
PDF
2013 summercamp 02
PDF
160705-w01 RTミドルウエア講習会・早稲田大
PDF
2017 summercamp 04
PDF
Robomec2014 rtm講習会第1部(その2)
PDF
130522 rt講習会(説明用)
PDF
2015 summercamp 08
PDF
Robomec2014 rtm講習会第1部(その1)
PDF
Robomec2014 rtm講習会第2部
PDF
Japan Robot Week 2016 RTM講習会 第3部
PDF
2015 summercamp 04
PPTX
Rtshell 2017
PDF
150629 02
PDF
Rtミドルウェア講習会@名城大 20140624 1
PDF
150629 01
PDF
OpenRTM概要
PDF
Robomec2014 rtm講習会第3部
ROBOMECH2017 RTM講習会 第1部・その1
2013 summercamp 05
Japan Robot Week 2016 RTM講習会 第1部
マネージャーやコンポーネントのコンポジット化
2013 summercamp 02
160705-w01 RTミドルウエア講習会・早稲田大
2017 summercamp 04
Robomec2014 rtm講習会第1部(その2)
130522 rt講習会(説明用)
2015 summercamp 08
Robomec2014 rtm講習会第1部(その1)
Robomec2014 rtm講習会第2部
Japan Robot Week 2016 RTM講習会 第3部
2015 summercamp 04
Rtshell 2017
150629 02
Rtミドルウェア講習会@名城大 20140624 1
150629 01
OpenRTM概要
Robomec2014 rtm講習会第3部
Ad

Viewers also liked (11)

PDF
RTミドルウェアによるロボットプログラミング技術 4.ロボットの運動学と制御の基礎
PDF
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎
PDF
2016 summercamp rtshell入門
PDF
グループ2 Gprese
PDF
RTミドルウェアによるロボットプログラミング技術 3. RTMによるプログラミング
PDF
RTミドルウェアによるロボットプログラミング技術 4.ロボットの運動学と制御の基礎(解答)
PDF
2016 summercamp 当研究室でのRTミドルウエアの取り組み
PDF
グループ5 ひとりでもだるまさんが転んだ
PDF
グループ4 ロボットで福笑い
PDF
グループ1最終プレゼン資料
PDF
RTミドルウェアによるロボットプログラミング技術 1.コース概要
RTミドルウェアによるロボットプログラミング技術 4.ロボットの運動学と制御の基礎
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎
2016 summercamp rtshell入門
グループ2 Gprese
RTミドルウェアによるロボットプログラミング技術 3. RTMによるプログラミング
RTミドルウェアによるロボットプログラミング技術 4.ロボットの運動学と制御の基礎(解答)
2016 summercamp 当研究室でのRTミドルウエアの取り組み
グループ5 ひとりでもだるまさんが転んだ
グループ4 ロボットで福笑い
グループ1最終プレゼン資料
RTミドルウェアによるロボットプログラミング技術 1.コース概要
Ad

Similar to 2016 summercamp SysML講習会 (20)

PDF
SysML実習20220822SC_GA.pdf
PDF
2019 summercamp 01
PPTX
RTミドルウェアサマーキャンプ2018「SysML実習」
PDF
200824 SysML Tutorial
PDF
RTミドルウェアサマーキャンプ2021_坂本武志_1
PDF
Rtミドルウェアサマーキャンプ資料2021_菅佑樹
PDF
RTミドルウェアサマーキャンプ資料2022.pdf
PPT
170622 02
PDF
181106 01
PPT
Rtmsc2015 group4
PDF
ROBOMECH2021 RTMオンライン講習会 第1部
PDF
131017 cnr研究会 ando
PDF
RTコンポーネント作成入門
PDF
1.コース概要
PPTX
ISS2018 seminar
PDF
RTコンポーネント作成入門
PDF
130711 01
PDF
ROBOMECH2021 RTM講習会 第1部
PDF
20130329 rtm1
PDF
20130329 rtm01
SysML実習20220822SC_GA.pdf
2019 summercamp 01
RTミドルウェアサマーキャンプ2018「SysML実習」
200824 SysML Tutorial
RTミドルウェアサマーキャンプ2021_坂本武志_1
Rtミドルウェアサマーキャンプ資料2021_菅佑樹
RTミドルウェアサマーキャンプ資料2022.pdf
170622 02
181106 01
Rtmsc2015 group4
ROBOMECH2021 RTMオンライン講習会 第1部
131017 cnr研究会 ando
RTコンポーネント作成入門
1.コース概要
ISS2018 seminar
RTコンポーネント作成入門
130711 01
ROBOMECH2021 RTM講習会 第1部
20130329 rtm1
20130329 rtm01

More from openrtm (20)

PDF
ROBOMECH2023 RTミドルウェア講習会 第1部
PPTX
ピッキングシステム
PPTX
GNGを使った未知環境における経路計画
PPTX
まねっこロボット
PDF
商品自動補充ロボットシステム
PPTX
RTサマーキャンプ2022最終発表_都立大.pptx
PDF
NEDO講座 MoveIt! チュートリアル 第1部
PDF
5.総合演習(2)
PDF
4.総合演習(1)
PDF
3.RTCプログラミング演習
PDF
2.プログラミングの基礎
PDF
Slam実習
PDF
Rtshell入門
PDF
Rtコンポーネント作成入門
PDF
Rtミドルウェアサマーキャンプ2021_宮本信彦
PPTX
Rtミドルウェアサマーキャンプ資料2021_坂本武志_2
PDF
201111 05
PDF
201111 04
PDF
201110 03
PDF
201110 02 Polytech center 2
ROBOMECH2023 RTミドルウェア講習会 第1部
ピッキングシステム
GNGを使った未知環境における経路計画
まねっこロボット
商品自動補充ロボットシステム
RTサマーキャンプ2022最終発表_都立大.pptx
NEDO講座 MoveIt! チュートリアル 第1部
5.総合演習(2)
4.総合演習(1)
3.RTCプログラミング演習
2.プログラミングの基礎
Slam実習
Rtshell入門
Rtコンポーネント作成入門
Rtミドルウェアサマーキャンプ2021_宮本信彦
Rtミドルウェアサマーキャンプ資料2021_坂本武志_2
201111 05
201111 04
201110 03
201110 02 Polytech center 2

Recently uploaded (8)

PPTX
Vibe Codingを触って感じた現実について.pptx .
PDF
R-SCoRe: Revisiting Scene Coordinate Regression for Robust Large-Scale Visual...
PDF
Yamaha DT200WR Real Enduro ENGINE CYLINDER TRANSMISSION
PDF
20250823_IoTLT_vol126_kitazaki_v1___.pdf
PDF
20250826_Devinで切り拓く沖縄ITの未来_AI駆動開発勉強会 沖縄支部 第2回
PPTX
Cosense - 整えずして完全勝利!Cosenseが他のwikiツールと違う理由
PDF
ココロ分解帳|感情をやさしく分解し自分と他者を理解するためのモバイルノートアプリ
PDF
Geminiの出力崩壊 本レポートは、Googleの大規模言語モデル「Gemini 2.5」が、特定の画像と短文入力に対して、誤った地名を推定し、最終的に...
Vibe Codingを触って感じた現実について.pptx .
R-SCoRe: Revisiting Scene Coordinate Regression for Robust Large-Scale Visual...
Yamaha DT200WR Real Enduro ENGINE CYLINDER TRANSMISSION
20250823_IoTLT_vol126_kitazaki_v1___.pdf
20250826_Devinで切り拓く沖縄ITの未来_AI駆動開発勉強会 沖縄支部 第2回
Cosense - 整えずして完全勝利!Cosenseが他のwikiツールと違う理由
ココロ分解帳|感情をやさしく分解し自分と他者を理解するためのモバイルノートアプリ
Geminiの出力崩壊 本レポートは、Googleの大規模言語モデル「Gemini 2.5」が、特定の画像と短文入力に対して、誤った地名を推定し、最終的に...

2016 summercamp SysML講習会

  • 1. RTミドルウェア SUMMER CAMP 2016 SysML講習会 日時:2016年8月1日(月) 15:20~ 場所:産業技術総合研究所 つくばセンター中央第二 本部・情報棟1階 ネットワーク会議室 株式会社 グローバルアシスト 坂本 武志
  • 2. 2016.8.1 Copyright (C) GLOBAL ASSIST Co., Ltd., All Rights Reserved. 2 SysMLモデリング  モデリング≒設計  設計を行うのであれば,その場限りの独自記法で検討を行うのでは なく,標準となっている記法で検討を行って欲しい  開発したRTコンポーネントを公開する際に,設計情報も併せて 公開して欲しい  後からRTコンポーネントを利用する人のため  サマーキャンプでモデリングを行っている理由  チーム内での意思統一,進捗管理  何を開発するのか?どう実装するのか?など  どこまで開発できているのか?  開発内容の説明  どのようなシステムを開発するのか?何が特徴なのか?など
  • 3. 2016.8.1 3 要求図  性能なども含めたシステムが満たすべき項目を表現 req [model] 移動ロボット [移動ロボット(自律移動)] <<requirement>> 自律移動 id = text = "ユーザが指定した 目的地まで,安全に移動で きること" <<requirement>> 障害物回避 id = text = "ロボット周辺の障害 物を回避できること" <<requirement>> 経路生成 id = text = "目的地までの移動 経路を自動で生成できるこ と" <<requirement>> 移動 id = text = "移動指令に従って 移動すること" <<requirement>> 自己位置推定 id = text = "ロボット自身の現在 位置を推定できること" <<requirement>> 環境地図 id = text = "周辺環境の地図を 持つこと" <<requirement>> 環境地図マ ッチング id = text = "周辺環境の地図と 外界計測センサの計測結 果からマッチングを行うこと" <<requirement>> デッドレ コニング id = text = "内界センサの計測 値を基に,自分の位置を推 定できること" <<requirement>> 内界センサ id = text = "ロボットの相対的な 移動量を計測できること" <<requirement>> 周辺環境情報の計測 id = text = "ロボット周辺の環境情 報を計測できること" <<requirement>> 移動時間 id = text = "なるべく短い時間で 目的地まで到達できること" <<requirement>> 連続移動可能距離 id = text = "なるべく長距離を移 動可能であること" <<requirement>> 低消費電力化 id = text = "消費電力をなるべ く下げること" <<requirement>> 環境地図自動生成 id = text = "周辺環境の地図を自 動的に生成できること" <<requirement>> ユーザビリティの向上 id = text = "使用時のユーザの負 担をなるべく軽減すること" <<requirement>> 地図精度の向上 id = text = "なるべく高精度な地 図を生成できること" <<requirement>> パターン移動 id = text = "指定されたパターン に従って移動できること" <<requirement>> 効率的な 自律移動 id = text = "ユーザが指定した目的地ま で,なるべく短時間で安全に移動で きるとともに,ユーザの手間をなるべく 軽減しつつ,長距離を移動可能であ ること" <<deriveReqt>> <<deriveReqt>> <<deriveReqt>> <<deriveReqt>> <<deriveReqt>> <<deriveReqt>> <<deriveReqt>> <<deriveReqt>> <<deriveReqt>> <<deriveReqt>> <<deriveReqt>> <<deriveReqt>> <<deriveReqt>> <<deriveReqt>> <<deriveReqt>> <<deriveReqt>> <<deriveReqt>> 開発対象システムの説明 何を行うシステムを開発するのか? 各機能は何のために必要なのか? システムを開発中に, 本来は何をするのか?を確認 何を目的としている機能なのか? 別機能で代替できないのか?
  • 4. 2016.8.1 4 ユースケース図  対象範囲(システム)が提供する機能の明確化  開発対象の範囲(システム化範囲)を明確にする。  機能とそのユーザの関係を明確にする。  対象範囲(システム)が必要とする外部要素を明確にする。 uc [model] 移動ロボット [移動ロボット] 移動ロボットシステム ユーザ 指定された目的地まで自律 的に移動する 拡張点 移動方向を決定する 周辺環境を 計測する 障害物を回避する 条件:{移動経路上に障害物が存在} 拡張点:移動方向を決定する 環境地図を自動的に 生成する 現在位置を 推定する 移動する 経路を生成する <<include>> <<include>> <<include>> <<include>> <<include>> <<extend>> <<include>> <<include>> 提供機能のカタログ化 どのような機能を開発するのか? 開発工数の見積もり 各機能を開発するのに必要な 工数はどの程度か? 優先順位の決定 どの機能から開発を行うのか? 作業分担の検討 誰がどの機能を開発するのか? 必須機能の判断 最低限どの機能が必要なのか?
  • 5. 2016.8.1 5 ブロック定義図  システムの静的な構造を表現 bdd [Package] 移動ロボット [移動ロボット] <<block>> 移動ロボットシステム <<block>> 移動ロボット <<block>> 測域センサ <<block>> 距離画像センサ {XOR} <<block>> バッテリ <<block>> 駆動輪 <<block>> 制御装置 <<block>> 車輪 <<block>> モータ <<block>> エンコーダ <<block>> 地図生成 - 測域センサ計測値: レンジデータ [0..1] - 距離画像センサ計測値: 深度画像 [0..1] - 現在位置: 位置 - 移動指令: 速度 <<block>> 周辺環境計測 <<block>> 自己位置推定 - 測域センサ計測値: レンジデータ [0..1] - 距離画像センサ計測値: 深度画像 [0..1] - 現在位置: 位置 - 移動量: 移動量 + 自己位置を推定する(レンジデータ): 位置 + 移動量を伝達する(移動量) + 現在位置を推定する(レンジデータ, 移動量): 位置 <<block>> 移動制御 - 移動指令: 速度 - 移動量: 移動量 + 停止する() + 移動する(速度) <<block>> 経路生成 - 現在位置: 位置 - 目標位置: 位置 - 目的地: 位置 + 目的地を設定する(位置) - 移動経路を生成する(位置, 位置): 位置 - 地図情報を更新する(レンジデータ, 位置) <<block>> 障害物回避 - 測域センサ計測値: レンジデータ [0..1] - 距離画像センサ計測値: 深度画像 [0..1] - 目標位置: 位置 - 移動指令: 速度 + 目標軌道を生成する(レンジデータ, 位置) <<block>> 測域センサ制御 - 計測値: レンジデータ <<block>> 距離画像センサ制御 - 計測値: 深度画像 {XOR} <<valueType>> レンジデータ - 距離リスト: List<double> <<valueType>> 深度画像 - ピクセル値: List<octet> <<valueType>> 位置 - X: double - Y: double - θ: double <<valueType>> 速度 - X方向速度: double - Y方向速度: double - Z軸周り回転速度: double <<valueType>> 移動量 - X方向移動量: double - Y方向移動量: double - Z軸周り移動角度: double 0..1 0..1 2 0..1 0..1 1..* 1..* 必要なハードウェアの確認 どの機材を利用するのか? 不足している機材は何なのか? RTCのカタログ化 どのようなRTCで構成するか? どのRTCを開発し,どのRTCを再利用するのか? 優先順位の決定 どのRTCから開発を行うのか? 作業分担の検討 誰がどのRTCを開発するのか?
  • 6. 2016.8.1 6 内部ブロック図  システム構成要素間の接続関係を明確にする  構成要素間でやりとりする内容を明確にする  システムを構成する要素間でやり取りする内容を表現 ibd [Package] 移動ロボット [移動ロボットシステム(SW)] : ~レンジデータ : ~深度画像 : 周辺環境計測 : ~レンジデータ : ~深度画像 : ~レンジデータ : 測域センサ制御[0..1] : ~レンジデータ : ~深度画像 : 距離画像センサ制御[0..1] : ~深度画像 : レンジデータ : 深度画像 目標位置: 位置 移動指令: ~速度 : 障害物回避 : レンジデータ : 深度画像 目標位置: 位置 移動指令: ~速度 : レンジデータ : 深度画像 現在位置: 位置 移動指令: ~速度 : 地図生成 : レンジデータ : 深度画像 現在位置: 位置 移動指令: ~速度 : レンジデータ : 深度画像 現在位置: ~位置 : 移動量 : 自己位置推定 : レンジデータ : 深度画像 現在位置: ~位置 : 移動量 現在位置: 位置 目標位置: ~位置 : 経路生成 現在位置: 位置 目標位置: ~位置 移動指令: 速度 : ~移動量 : 移動制御 移動指令: 速度 : ~移動量 目的地を設定する ポートの明確化 各RTCはどのようなポートを 有するのか? データポートではどのような データをやり取りするのか? サービスポートではどのような 操作が必要なのか? 全体構成の確認 各RTC間はどのような接続と なるのか?
  • 7. 2016.8.1 7 コンテキスト図  システムが動作する環境を表現 ibd [Package] 移動ロボット [コンテキスト図] <<system>> : 移動ロボットシステム :ユーザ <<external>> : 人 <<external>> : 床面 床面はフラットと仮定 <<external>> : 周辺環境 <<external>> : 壁 <<external>> : 家具 0..* 0..* 0..* 開発環境の明確化 どのような前提で(何を考慮して)設計,開発を行うのか? 誰に対して機能を提供しているのか?何を使用して機能を実現するのか?
  • 8. 2016.8.1 8 アクティビティ図  処理の流れを表現 現実世界の処理流れを整理する(ビジネスプロセスも含む) ある機能を実現するための処理の流れ(アルゴリズムを含む)を表現 act 目的地まで移動する ビジョンセンサ移動ロボ ット OpenHRP3距離センサ 移動開始を指令する ユーザ OpenINVENT グリッド経路 障害物情報 自己位置推定結果 現在位置から目標位置まで の経路を計画する グリッド経路 障害物情報 自己位置推定結果 グリッド経路 制御点データ 制御点を抽出する グリッド経路 制御点データ 制御点データ 目標並進/旋回速度 ロボット中心の並進/旋回速 度を算出する 制御点データ 目標並進/旋回速度 目標並進/旋回速度 指令角速度値 両輪の指令角速度値を算出 する 目標並進/旋回速度 指令角速度値 目標並進/旋回速度 トルク指令値 両輪の指令トルクを算出す る 目標並進/旋回速度 トルク指令値 センサデータ 周辺環境を計測する センサデータ センサデータ障害物情報 周辺障害物を検出する センサデータ障害物情報 指令角速度値 オドメトリ値 移動する 指令角速度値 オドメトリ値 センサデータ 周辺環境を計測するセンサデータ 自己位置推定結果 オドメトリ値 自己位置推定結果 自己位置を推定する 自己位置推定結果 オドメトリ値 自己位置推定結果 オドメトリ値 トルク指令値 移動する オドメトリ値 トルク指令値 自己位置推定結果 ランドマークを計測する 自己位置推定結果 [実機の場合] [シミュレーションの場合] { rate = per 20ms } { rate = per 40ms } act 地図を生成する OpenHRPOpenINVENTユーザ 地図生成を実行する 干渉チェック モデル干渉チェックモデルを作 成する 干渉チェック モデル 干渉チェック モデル 干渉チェック 結果 干渉チェックを実行する 干渉チェック モデル 干渉チェック 結果 干渉チェック 結果 グリッド地図 グリッド地図を作成する 干渉チェック 結果 グリッド地図 グリッド地図 グリッド地図情報を配信する グリッド地図 処理手順の明確化 各機能をどのような手順で実現するのか?
  • 9. 2016.8.1 9 RTSystem開発時のSysML利用法 00.システムが動作する環境の定義  コンテキスト図の作成 01.システムが「何を」実現すべきなのかを検討  要求図の作成 02.システムが実現すべき機能の検討  ユースケース図の作成 03.システムの構成要素の検討  ブロック定義図の作成 04.構成要素間でやり取りするデータの検討  内部ブロック図の作成 05.機能を実現するための手順の検討  アクティビティ図の作成 06.RTC,RTSystemへのマッピング composite struct ure 全体構成 MapBuilderCons MapBuilderProv GlobalPathCons <<block,RTC>> Invent GUI MapBuilderCons MapBuilderProv GlobalPathCons InventGUIProv MapMaintenanceCons <<block,RTC>> 地図生成 InventGUIProv MapMaintenanceCons MapBuilderProv ObstacleProv <<block,RTC>> 地図管理 MapBuilderProv ObstacleProv MapMaintenanceCons <<flowPort>> 位置情報 : Position MapBuilderProv <<flowPort>> センサ データ :SensorData <<block,RTC>> 障害物検出MapMaintenanceCons <<flowPort>> 位置情報 : Position MapBuilderProv <<flowPort>> センサ データ :SensorData <<flowPort>> SensorData : TimedMeasuredData <<flowPort>> 計測結果 : TimedDoubleSeq <<block,RTC>> 距離センサシミ ュレ ーション <<flowPort>> SensorData : TimedMeasuredData <<flowPort>> 計測結果 : TimedDoubleSeq <<flowPort>> 自己位置姿勢推 定結果(ToGUI) :Position <<flowPort>> オドメトリ値 : Position <<block,RTC>> 自己位置姿勢推定 <<flowPort>> 自己位置姿勢推 定結果(ToGUI) :Position <<flowPort>> オドメトリ値 : Position <<flowPort>> 自己位置姿 勢推定結果 :Position <<flowPort>> オドメトリ値 : Position <<flowPort>> 車輪回 転角度 :車輪角度 <<block,RTC>> オドメトリ推定 <<flowPort>> 自己位置姿 勢推定結果 :Position <<flowPort>> オドメトリ値 : Position <<flowPort>> 車輪回 転角度 :車輪角度 <<flowPort>> 車輪回 転角度 :車輪角度 <<flowPort>> トルク 指令 :Torque <<flowPort>> 目標速度 : TimedVelocity <<flowPort>> 現在位置・ 姿勢 :SimulatedPosition <<flowPort>> 車輪回 転角度 :車輪角度 BumpProv <<block,RTC>> 運動制御 <<flowPort>> 車輪回 転角度 :車輪角度 <<flowPort>> トルク 指令 :Torque <<flowPort>> 目標速度 : TimedVelocity <<flowPort>> 現在位置・ 姿勢 :SimulatedPosition <<flowPort>> 車輪回 転角度 :車輪角度 BumpProv <<flowPort>> 現在位置・姿 勢 :Position MapBuilderDrive MapMaintenanceProv <<flowPort>> 逸脱距離 : Distance LocalPathProv <<flowPort>> 目標 並進・旋回速度 : TimedVelocity BumpProv <<block,RTC>> 移動指令生成 <<flowPort>> 現在位置・姿 勢 :Position MapBuilderDrive MapMaintenanceProv <<flowPort>> 逸脱距離 : Distance LocalPathProv <<flowPort>> 目標 並進・旋回速度 : TimedVelocity BumpProv <<flowPort>> 自 己位置姿勢推定 結果 :Position <<flowPort>> 逸脱距離 : Distance DriveCons MapMaintenanceProv MapBuilderProv GlobalPathProv <<block,RTC>> 局所経路生成 <<flowPort>> 自 己位置姿勢推定 結果 :Position <<flowPort>> 逸脱距離 : Distance DriveCons MapMaintenanceProv MapBuilderProv GlobalPathProv MapBuilderProv MapMaintenanceProv LocalPathCons InventGUIProv <<block,RTC>> 大域経路生成 MapBuilderProv MapMaintenanceProv LocalPathCons InventGUIProv <<flowPort>> 現在位置・姿勢 : SimulatedPosition <<flowPort>> トルク 指令 :Torque <<flowPort>> 現在車 輪角度 :車輪角度 <<flowPort>> 計測結果 : TimedDoubleSeq <<flowPort>> 路面計測結果 : TimedDoubleSeq <<actor>> BridgeRTC <<flowPort>> 現在位置・姿勢 : SimulatedPosition <<flowPort>> トルク 指令 :Torque <<flowPort>> 現在車 輪角度 :車輪角度 <<flowPort>> 計測結果 : TimedDoubleSeq <<flowPort>> 路面計測結果 : TimedDoubleSeq MotorControlCons DriveControlCons <<flowPort>> 現在PanTilt 角度 :PanTilt角度 <<flowPort>> 目標PanTilt 角度 :PanTilt角度 <<flowPort>> SensorData : TimedMeasuredData MapMaintenanceCons <<block,RTC>> 路面凹凸検知 MotorControlCons DriveControlCons <<flowPort>> 現在PanTilt 角度 :PanTilt角度 <<flowPort>> 目標PanTilt 角度 :PanTilt角度 <<flowPort>> SensorData : TimedMeasuredData MapMaintenanceCons <<flowPort>> 現在PanTilt 角度 :PanTilt角度 <<flowPort>> 目標PanTilt 角度 :PanTilt角度 <<block,RTC>> PanTilt制御<<flowPort>> 現在PanTilt 角度 :PanTilt角度 <<flowPort>> 目標PanTilt 角度 :PanTilt角度 <<flowPort>> SensorData : TimedMeasuredData <<flowPort>> 路面計測結果 : TimedDoubleSeq <<block,RTC>> 距離センサシミュレ ーション <<flowPort>> SensorData : TimedMeasuredData <<flowPort>> 路面計測結果 : TimedDoubleSeq マップ InventGUI InventGUI 地図更新 地図更新 地図更新 地図更新 障害物情報設定 移動指令 移動指令 移動指令 移動指令局所経路 局所経路 局所経路 広域経路 広域経路 局所経路局所経路 広域経路 広域経路 モータ モータ 移動指令 移動指令 地図更新 地図更新 act 目的地まで移動する ビジョンセン サ移動ロボ ット OpenHRP3距離センサ 移動開始を指令する ユーザ OpenINVENT グリッド経路 障害物情報 自己位置推定結果 現在位置から目標位置まで の経路を計画する グリッド経路 障害物情報 自己位置推定結果 グリッド経路 制御点データ 制御点を 抽出す る グリッド経路 制御点データ 制御点データ 目標並進/旋回速度 ロボット中心の並進/旋回速 度を算出する 制御点データ 目標並進/旋回速度 目標並進/旋回速度 指令角速度値 両輪の指令角速度値を 算出 する 目標並進/旋回速度 指令角速度値 目標並進/旋回速度 トルク指令値 両輪の指令トルクを 算出す る 目標並進/旋回速度 トルク指令値 センサデータ 周辺環境を 計測す る センサデータ センサデータ障害物情報 周辺障害物を 検出す る センサデータ障害物情報 指令角速度値 オドメトリ値 移動する 指令角速度値 オドメトリ値 センサデータ 周辺環境を計測するセンサデータ 自己位置推定結果 オドメトリ値 自己位置推定結果自己位置を 推定す る 自己位置推定結果 オドメトリ値 自己位置推定結果 オドメトリ値 トルク指令値 移動する オドメトリ値 トルク指令値 自己位置推定結果 ランドマークを 計測す る 自己位置推定結果 [実機の場合] [シミュレーションの場合] { rate = per 20ms } { rate = per 40ms } :ブロックR name : BlockType : Type プロパティ ポートポート インターフェース プロパティ bdd [Package] 移動ロボット [移動ロボット] <<block>> 移動ロボットシステム <<block>> 移動ロボット <<block>> 測域センサ <<block>> 距離画像センサ {XOR} <<block>> バッテリ <<block>> 駆動輪 <<block>> 制御装置 <<block>> 車輪 <<block>> モータ <<block>> エ ンコーダ <<block>> 地図生成 - 測域センサ計測値: レンジデータ [0..1] - 距離画像センサ計測値: 深度画像 [0..1] - 現在位置: 位置 - 移動指令: 速度 <<block>> 周辺環境計測 <<block>> 自己位置推定 - 測域センサ計測値: レンジデータ [0..1] - 距離画像センサ計測値: 深度画像 [0..1] - 現在位置: 位置 - 移動量: 移動量 + 自己位置を推定する(レンジデータ): 位置 + 移動量を伝達する(移動量) + 現在位置を推定する(レンジデータ, 移動量): 位置 <<block>> 移動制御 - 移動指令: 速度 - 移動量: 移動量 + 停止する() + 移動する(速度) <<block>> 経路生成 - 現在位置: 位置 - 目標位置: 位置 - 目的地: 位置 + 目的地を設定する(位置) - 移動経路を生成する(位置, 位置): 位置 - 地図情報を更新する(レンジデータ, 位置) <<block>> 障害物回避 - 測域センサ計測値: レンジデータ [0..1] - 距離画像センサ計測値: 深度画像 [0..1] - 目標位置: 位置 - 移動指令: 速度 + 目標軌道を生成する(レンジデータ, 位置) <<block>> 測域センサ制御 - 計測値: レンジデータ <<block>> 距離画像センサ制御 - 計測値: 深度画像 {XOR} <<valueType>> レンジデータ - 距離リスト: List<double> <<valueType>> 深度画像 - ピクセル値: List<octet> <<valueType>> 位置 - X: double - Y: double - θ: double <<valueType>> 速度 - X方向速度: double - Y方向速度: double - Z軸周り回転速度: double <<valueType>> 移動量 - X方向移動量: double - Y方向移動量: double - Z軸周り移動角度: double 0..1 0..1 2 0..1 0..1 1..* 1..* req [model] 移動ロボッ ト [移動ロボット(自律移動)] <<requirement>> 自律移動 id = text = "ユーザが指定した 目的地まで,安全に移動で きること" <<requirement>> 障害物回避 id = text = "ロボット周辺の障害 物を回避できること" <<requirement>> 経路生成 id = text = "目的地までの移動 経路を自動で生成できるこ と" <<requirement>> 移動 id = text = "移動指令に従って 移動すること" <<requirement>> 自己位置推定 id = text = "ロボット自身の現在 位置を推定できること" <<requirement>> 環境地図 id = text = "周辺環境の地図を 持つこと" <<requirement>> 環境地図マッ チング id = text = "周辺環境の地図と 外界計測センサの計測結 果からマッチングを行うこと" <<requirement>> デッドレコニング id = text = "内界センサの計測 値を基に,自分の位置を推 定できること" <<requirement>> 内界センサ id = text = "ロボットの相対的な 移動量を計測できること" <<requirement>> 周辺環境情報の計測 id = text = "ロボット周辺の環境情 報を計測できること" <<requirement>> 移動時間 id = text = "なるべく短い時間で 目的地まで到達できること" <<requirement>> 連続移動可能距離 id = text = "なるべく長距離を移 動可能であること" <<requirement>> 低消費電力化 id = text = "消費電力をなるべ く下げること" <<requirement>> 環境地図自動生成 id = text = "周辺環境の地図を自 動的に生成できること" <<requirement>> ユーザビリティの向上 id = text = "使用時のユーザの負 担をなるべく軽減すること" <<requirement>> 地図精度の向上 id = text = "なるべく高精度な地 図を生成できること" <<requirement>> パタ ーン移動 id = text = "指定されたパターン に従って移動できること" <<requirement>> 効率的な自律移動 id = text = "ユーザが指定した目的地ま で,なるべく短時間で安全に移動で きるとともに,ユーザの手間をなるべく 軽減しつつ,長距離を移動可能であ ること" <<deriveReqt>> <<deriveReqt>> <<deriveReqt>> <<deriveReqt>> <<deriveReqt>> <<deriveReqt>> <<deriveReqt>> <<deriveReqt>> <<deriveReqt>> <<deriveReqt>> <<deriveReqt>> <<deriveReqt>> <<deriveReqt>> <<deriveReqt>> <<deriveReqt>> <<deriveReqt>> <<deriveReqt>> ibd [Package] 移動ロボット [コンテキスト図] <<system>> : 移動ロボットシステム :ユーザ <<external>> : 人 <<external>> : 床面 床面はフラットと仮定 <<external>> : 周辺環境 <<external>> : 壁 <<external>> : 家具 0..* 0..* 0..* uc [model] 移動ロボット [移動ロボット] 移動ロボットシステム ユーザ 指定された目的地まで自律 的に移動する 拡張点 移動方向を決定する 周辺環境を計測する 障害物を回避する 条件:{移動経路上に障害物が存在} 拡張点:移動方向を決定する 環境地図を自動的に 生成する 現在位置を推定する 移動する 経路を生成する <<include>> <<include>> <<include>> <<include>> <<include>> <<extend>> <<include>> <<include>>