SlideShare a Scribd company logo
1
まねっこロボット開発 進捗報告
早稲田大学チーム
林 弘昭 (LDR)
延 剛
澤田 万尋
2
開発概要
目標: 人の動作を模倣するロボットを作りたい!
使用機材: G-ROBOTS GR-001 (HPI製)
CMS-V43BK-3 (SANWA supply製)
動作イメージ:
1. カメラで人を検出し, ロボットが人の方向に
向く。
2. 人の動作パターンを認識する。
3. ロボットが対応する動作を模倣する。
3
要求図
<<deriveReqt>>
<<requirement>>
パターン認識
text=姿勢パターンを
区別できること
<<requirement>>
骨格検知
text=人の骨格の座標
を検知できること
<<deriveReqt>>
<<deriveReqt>>
<<requirement>>
初期姿勢に戻す
text=動作の前に初期
姿勢(直立)に戻れるこ
と
<<deriveReqt>>
<<requirement>>
動作生成
text=特定の動作を取
れること
<<requirement>>
角度計算
text=人の位置とロ
ボットのなす角がわか
ること
<<requirement>>
人の動作を模倣するロボット
text=人の場所を検知してその方向を向き, 動
作を認識して, 同じ動作を再現できるロボット
e.g. 手を上げる etc.
<<requirement>>
方向転換
text=人の場所を検知してその方向を向くこと
ができること.
<<requirement>>
動作模倣
text=人の動作を認識して, 同じ動作を再現で
きるロボット e.g. 手を上げる etc.
<<requirement>>
回転
text=特定の角度に回
転できること
<<requirement>>
人検知
text=人を検知できる
こと
<<deriveReqt>>
<<deriveReqt>> <<deriveReqt>>
<<deriveReqt>>
<<deriveReqt>>
4
設計
:カメラ制御
:~rgb画像 (Img::ImageData)
:骨格座標取得
:~骨格座標 (RTC::TimedDoubleSeq)
:rgb画像 (Img::ImageData)
:骨格座標
(RTC::TimedDoubleSeq)
:パターン認識
:~姿勢パターン
(RTC::TimedString)
:骨格座標
(RTC::TimedDoubleSeq)
:距離計算
:~相対水平距離
(RTC::TimedDouble)
:姿勢パターン (RTC::TimedString) :相対水平距離 (RTC::TimedDouble)
:動作決定
:~動作パターン (RTC::TimedString)
:g-robot
:動作パターン (RTC::TimedString)
ウェブカメラ
Laptop PC
Ubuntu
G-Robot
USB USB
LAN
Laptop PC
Windows
 内部ブロック図  ハードウェア構築
5
作業工数
:カメラ制御
:~rgb画像 (Img::ImageData)
:骨格座標取得
:~骨格座標 (RTC::TimedDoubleSeq)
:rgb画像 (Img::ImageData)
:骨格座標
(RTC::TimedDoubleSeq)
:パターン認識
:~姿勢パターン
(RTC::TimedString)
:骨格座標
(RTC::TimedDoubleSeq)
:距離計算
:~相対水平距離
(RTC::TimedDouble)
:姿勢パターン (RTC::TimedString) :相対水平距離 (RTC::TimedDouble)
:動作決定
:~動作パターン (RTC::TimedString)
:g-robot
:動作パターン (RTC::TimedString)
林: 5時間
林: 6時間
林: 2時間
林: 3時間
澤田・延: 15時間
澤田・延: 15時間
PC間通信
澤田: 1時間
コンポーネント間通信
林・澤田: 4時間
6
RTC説明
:カメラ制御
:~rgb画像 (Img::ImageData)
:骨格座標取得
:~骨格座標 (RTC::TimedDoubleSeq)
:rgb画像 (Img::ImageData)
:骨格座標
(RTC::TimedDoubleSeq)
:パターン認識
:~姿勢パターン
(RTC::TimedString)
:骨格座標
(RTC::TimedDoubleSeq)
:距離計算
:~相対水平距離
(RTC::TimedDouble)
:姿勢パターン (RTC::TimedString) :相対水平距離 (RTC::TimedDouble)
:動作決定
:~動作パターン (RTC::TimedString)
:g-robot
:動作パターン (RTC::TimedString)
 入力:カメラ
 出力:rgb画像(Img::ImageData)
 中身:
・OpenCVによりカメラと接続する。
・Numpy型の画像を読み取る。
・画像データをbyte型に変換する。
・データをImageDataクラスに代入する。
・データを送信する。
 カメラ制御
7
RTC説明
:カメラ制御
:~rgb画像 (Img::ImageData)
:骨格座標取得
:~骨格座標 (RTC::TimedDoubleSeq)
:rgb画像 (Img::ImageData)
:骨格座標
(RTC::TimedDoubleSeq)
:パターン認識
:~姿勢パターン
(RTC::TimedString)
:骨格座標
(RTC::TimedDoubleSeq)
:距離計算
:~相対水平距離
(RTC::TimedDouble)
:姿勢パターン (RTC::TimedString) :相対水平距離 (RTC::TimedDouble)
:動作決定
:~動作パターン (RTC::TimedString)
:g-robot
:動作パターン (RTC::TimedString)
 入力:rgb画像(Img::ImageData)
 出力:骨格座標(RTC::TimedDoubleSeq)
 中身:
・ImageDataクラスデータを受信する。
・画像データをNumpy型に変換する。
・OpenPoseのmobilenet_thinモデルにより骨
格検出する。
・骨格座標をTimeDoubleSeqクラスに代入す
る。
・データを送信する。
 カメラ制御
*OpenPose: https://github.com/ZheC/tf-pose-estimation
説明:ダウンロードしたフォルダーを自分のコンポーネントにコピーし、プログラム内
でパスを書けば使える。
8
RTC説明
:カメラ制御
:~rgb画像 (Img::ImageData)
:骨格座標取得
:~骨格座標 (RTC::TimedDoubleSeq)
:rgb画像 (Img::ImageData)
:骨格座標
(RTC::TimedDoubleSeq)
:パターン認識
:~姿勢パターン
(RTC::TimedString)
:骨格座標
(RTC::TimedDoubleSeq)
:距離計算
:~相対水平距離
(RTC::TimedDouble)
:姿勢パターン (RTC::TimedString) :相対水平距離 (RTC::TimedDouble)
:動作決定
:~動作パターン (RTC::TimedString)
:g-robot
:動作パターン (RTC::TimedString)
 入力:骨格座標(RTC::TimedDoubleSeq)
 出力:姿勢パターン(RTC::TimedString)
 中身:
・TimedDoubleSeqクラスデータを受信する。
・左右肘と左右肩の座標を抽出する。
・左右の肘と肩の角度を計算する。
・角度に応じて、姿勢を7パターンに定義する。
両手下げ、
右手上げ(M)、左手上げ(M)、左右手上げ(M)
右手上げ(H)、左手上げ(H) 、左右手上げ(H)
・25回(1秒)ごとに姿勢パターンを判定する。20回以上
同じ姿勢が検知されたら、その姿勢を選択する。
・姿勢パターンをTimedString方クラスに代入する。・デー
タを送信する。
 パターン認識
9
RTC説明
:カメラ制御
:~rgb画像 (Img::ImageData)
:骨格座標取得
:~骨格座標 (RTC::TimedDoubleSeq)
:rgb画像 (Img::ImageData)
:骨格座標
(RTC::TimedDoubleSeq)
:パターン認識
:~姿勢パターン
(RTC::TimedString)
:骨格座標
(RTC::TimedDoubleSeq)
:距離計算
:~相対水平距離
(RTC::TimedDouble)
:姿勢パターン (RTC::TimedString) :相対水平距離 (RTC::TimedDouble)
:動作決定
:~動作パターン (RTC::TimedString)
:g-robot
:動作パターン (RTC::TimedString)
 入力:骨格座標(RTC::TimedDoubleSeq)
 出力:相対水平距離(RTC::TimedDouble)
 中身:
・TimedDoubleSeqクラスデータを受信する。
・首の座標を抽出する。
・人とロボットの相対水平距離として、首と画像中心
の横pixel距離を計算する。
・25回(1秒)のデータを平均化する。
・平均したデータをTimedDouble型クラスに
代入する。
・データを送信する。
 距離計算
10
RTC説明
:カメラ制御
:~rgb画像 (Img::ImageData)
:骨格座標取得
:~骨格座標 (RTC::TimedDoubleSeq)
:rgb画像 (Img::ImageData)
:骨格座標
(RTC::TimedDoubleSeq)
:パターン認識
:~姿勢パターン
(RTC::TimedString)
:骨格座標
(RTC::TimedDoubleSeq)
:距離計算
:~相対水平距離
(RTC::TimedDouble)
:姿勢パターン (RTC::TimedString) :相対水平距離 (RTC::TimedDouble)
:動作決定
:~動作パターン (RTC::TimedString)
:g-robot
:動作パターン (RTC::TimedString)
 入力: 姿勢パターン (RTC::TimedString)
相対水平距離(RTC::TimedDouble)
 出力: 動作パターン (RTC::TimedString)
 中身:
・姿勢パターン, 相対水平距離を受信する。
・前回の送信から所定の時間の経過を確認する。
(ロボットの動作完了を時間で担保)
・相対水平距離から, 回転の必要性を判断する。
→回転必要であれば、回転方向を判断し, 動作
決定する。
→回転不要であれば、受信した姿勢パターンに
動作決定する。
・決定した動作に対応する文字列をTimedString
型クラスに代入する。
・データを送信する。
 動作決定
11
RTC説明
:カメラ制御
:~rgb画像 (Img::ImageData)
:骨格座標取得
:~骨格座標 (RTC::TimedDoubleSeq)
:rgb画像 (Img::ImageData)
:骨格座標
(RTC::TimedDoubleSeq)
:パターン認識
:~姿勢パターン
(RTC::TimedString)
:骨格座標
(RTC::TimedDoubleSeq)
:距離計算
:~相対水平距離
(RTC::TimedDouble)
:姿勢パターン (RTC::TimedString) :相対水平距離 (RTC::TimedDouble)
:動作決定
:~動作パターン (RTC::TimedString)
:g-robot
:動作パターン (RTC::TimedString)
 入力(使用したもの): 動作パターン (RTC::TimedString)
 出力(使用したもの) :無し
 中身:
・動作パターンを受信
・動作パターンが既定の文字列と一致する場合,
既定の内容を実行 (初期化, 通電 等)
・一致しない場合, ユーザー定義された
同名のモーションファイル(*.m)を実行
 g-robot (*既存のコンポーネントを流用)
12
結果 回転動作
 右回転  左回転
足裏に滑り止め
13
結果 OpenPose
14
結果
15
最後に
・分業って素晴らしい
コンポーネント単位で明確に分かれている > 並行して開発することで時間コスト削減
ただしコンポーネント間のインターフェースはしっかり話し合っておく必要有
・インテグレーションは大変
コンポーネントのユニットテストでは問題なく見えても, 実際繋いだら問題がたくさん
e.g. 人検出からロボット動作までのラグがありえないぐらい酷い
> 動作決定コンポーネントで受けた際のisNew判定のやり方がまずかった
・ドキュメンテーション大事
既存のコンポーネントを再利用するときに, ドキュメントがないと読み解くのが大変

More Related Content

PDF
ロボット用Open Source Software
PPTX
Summercamp2020 group1
PDF
Tutorial for robot programming with LEGO mindstorms EV3
PPTX
RTサマーキャンプ2022最終発表_都立大.pptx
PPTX
「実ロボットの運動生成」
ODP
オープンキャンパススライド2017
PDF
複数の移動ロボットを用いた身体パフォーマンスの印象評価(EC2016)
PDF
画像認識 走行プレゼン
ロボット用Open Source Software
Summercamp2020 group1
Tutorial for robot programming with LEGO mindstorms EV3
RTサマーキャンプ2022最終発表_都立大.pptx
「実ロボットの運動生成」
オープンキャンパススライド2017
複数の移動ロボットを用いた身体パフォーマンスの印象評価(EC2016)
画像認識 走行プレゼン

More from openrtm (20)

PDF
ROBOMECH2023 RTミドルウェア講習会 第1部
PPTX
ピッキングシステム
PPTX
GNGを使った未知環境における経路計画
PDF
商品自動補充ロボットシステム
PDF
SysML実習20220822SC_GA.pdf
PDF
RTミドルウェアサマーキャンプ資料2022.pdf
PDF
NEDO講座 MoveIt! チュートリアル 第1部
PDF
5.総合演習(2)
PDF
4.総合演習(1)
PDF
3.RTCプログラミング演習
PDF
2.プログラミングの基礎
PDF
1.コース概要
PDF
OpenRTM概要
PDF
Slam実習
PDF
Rtshell入門
PDF
Rtコンポーネント作成入門
PDF
Rtミドルウェアサマーキャンプ2021_宮本信彦
PDF
RTミドルウェアサマーキャンプ2021_坂本武志_1
PPTX
Rtミドルウェアサマーキャンプ資料2021_坂本武志_2
PDF
Rtミドルウェアサマーキャンプ資料2021_菅佑樹
ROBOMECH2023 RTミドルウェア講習会 第1部
ピッキングシステム
GNGを使った未知環境における経路計画
商品自動補充ロボットシステム
SysML実習20220822SC_GA.pdf
RTミドルウェアサマーキャンプ資料2022.pdf
NEDO講座 MoveIt! チュートリアル 第1部
5.総合演習(2)
4.総合演習(1)
3.RTCプログラミング演習
2.プログラミングの基礎
1.コース概要
OpenRTM概要
Slam実習
Rtshell入門
Rtコンポーネント作成入門
Rtミドルウェアサマーキャンプ2021_宮本信彦
RTミドルウェアサマーキャンプ2021_坂本武志_1
Rtミドルウェアサマーキャンプ資料2021_坂本武志_2
Rtミドルウェアサマーキャンプ資料2021_菅佑樹
Ad

まねっこロボット