Featured image of post ROS4HRIの仕組み

ROS4HRIの仕組み

目次

背景

  • ROS上でHRI(Human-Robot Interaction、人間とロボットのインタラクション)を扱うための標準規格・OSSツール群であるROS4HRIについて、仕組みを整理する

ROS4HRIとは

  • ROS REP-155として仕様化された、ROS 1・ROS 2の両方に対応する、人間の認識・表現のための標準的なメッセージ型・規約
  • 「ロボットが共有空間の中で人間を意味のある形で認識・解釈・応答できるようにする」ことを目的とした、オープンソースのリソース群
  • EUの資金援助を受けて開発されており、Apache 2.0ライセンスで公開されている
  • REP-155自体は、骨格追跡・顔認識・音声処理といった分野で、ROSエコシステムの他の分野ほど広く受け入れられた共通インターフェースがなかったという問題意識から作られている

REP-155の仕様

4種類のID

  • REP-155は、人物を4種類のIDで表現する
ID永続性割り当て元
Person ID永続的なUUID。セッションを超えて同一人物を表す顔認識・声認識など、人物識別が可能なノード
Face ID非永続的。顔がフレームから外れると無効になる顔検出ノード
Body ID非永続的。骨格が追跡されている間だけ有効骨格追跡ノード
Voice ID非永続的音声分離ノード

トピックの名前空間

  • 全てのHRI関連トピックは/humans/以下に置かれ、faces・bodies・voices・persons・interactionsという5つのサブ名前空間に分かれる
  • 例えば/humans/faces/<faceID>/croppedのように、個々の実体(顔など)ごとの名前空間を持つことで、下流のノードが情報を追加していける

なぜ単一のFaceメッセージではなく分割するのか

  • 仮に全ての顔情報をまとめた汎用的な1つのFaceメッセージを発行する設計にすると、1つのノードが顔に関する全ての情報を先に統合しなければならなくなり、モジュール性が損なわれる
  • そのため、切り出し・表情認識・ランドマーク検出といった個々の情報を、別々のノードがそれぞれのサブトピックに発行する設計になっている

座標フレーム

  • REP-120の慣習に従い、以下のような座標フレームが定義されている
フレーム原点軸の向き
face_<faceID>セリオン(両目の中間点)x軸が前方、z軸が頭頂方向
body_<bodyID>腰の中間点x軸が前方、z軸が頭方向
gaze_<faceID>face_<faceID>と同じ位置z軸が視線方向
person_<personID>追跡中はface/bodyフレームと同じ位置、そうでなければ最後に確認された位置-
  • person_<personID>フレームの位置は、location_confidence(位置の確信度)によって扱いが変わる。追跡中は1.0、最近見えていた場合は1.0未満、既知だが一度も観測されていない場合は0になる
  • 人体のキネマティックモデルは、頭・胴体・肩・肘・手首・腰・膝・足首など15個の主要なリンクで構成され、URDFが/human_description_<bodyID>としてパラメータサーバーに動的に読み込まれる

視線の非対称性

  • 「AがBを見ている」という関係は、必ずしも「BもAを見ている」ことを意味しない。視線(Gaze)は送り手(sender)と受け手(receiver)の非対称な関係として表現される

Kinematic Model of the Human

The main 15 links defined on the human body are presented in the above diagram. Frames orientations and naming are based on REP-103 and REP-120. Right: render of the reference URDF model of the human body in rviz.

全体像: ROS4HRIエコシステムの構成

  • 公式サイト(ros4hri.github.io)で確認すると、ROS4HRIは単なるメッセージ規約ではなく、「知覚→人物統合→インタラクションのスキル→UI・可視化」という一連の流れを、パッケージ群として提供するエコシステムになっている
  • 大まかな処理の流れは以下の通り
順序段階内容
1知覚(Perception)カメラ・マイクから、顔・身体・声を個別に検出する
2人物統合(Person Fusion)検出された顔・身体・声を、hri_person_managerが1人の人物として統合する
3インタラクションスキル(Interaction Skills)統合された人物の情報を使って、発話・注視・ナビゲーション・動作・把持といった、標準化された「スキル」をロボットに実行させる
4UI・可視化(UI & Visualization)開発中のデバッグや、ロボットの対話用インターフェースの構築に使う

パッケージのカテゴリ一覧

  • 公式サイトでは、パッケージは大きく5つのカテゴリに分けられている
カテゴリ内容
コアライブラリ・メッセージhri_msgsなど、全体の基盤となるメッセージ定義・ライブラリ
知覚(Perception)顔・身体・音声の検出と、それらを人物に統合する機能
インタラクションスキル発話・ナビゲーション・操作など、ロボットに実行させる標準化された動作
可視化・デバッグ開発時の確認・デバッグ用のツール
UI構築対話的なユーザーインターフェースを作るための部品
  • 下の表では、「知覚」と「インタラクションスキル」をさらに細かいサブカテゴリ(知覚(顔)・知覚(身体)など)に分けて示している

カテゴリ別パッケージ一覧

カテゴリパッケージ役割
コアライブラリ・メッセージhri_msgs顔・身体・声・人物に関する標準メッセージ
コアライブラリ・メッセージhri_actions_msgsHRIのIntent(意図)に関する標準アクション
コアライブラリ・メッセージhuman_description人体の標準URDFモデル
コアライブラリ・メッセージlibhri(C++)/pyhri(Python)ROS4HRIトピックを簡単に扱うためのライブラリ
知覚(顔)hri_face_detect顔検出・ランドマーク・視線
知覚(顔)hri_emotion_recognizer表情認識
知覚(顔)hri_face_identification顔の識別・認識
知覚(身体)hri_body_detect身体に関する知覚機能
知覚(音声)asr_vosk音声特徴の抽出・発話区間検出
人物追跡・統合hri_face_body_matcher顔と身体のマッチング
人物追跡・統合hri_person_manager人物への統合(Mr. Potato algorithm)
人物追跡・統合hri_engagementエンゲージメント(関わりの度合い)の追跡
インタラクションスキルCommunication発話・対話(Say、Chat、Ask)
インタラクションスキルInteraction社会的インタラクション(LookAt、LookFor、LED、Expressions)
インタラクションスキルNavigationナビゲーション(Navigate、Waypoints、Zones)
インタラクションスキルMotions動作実行(関節・直交座標系の軌道)
インタラクションスキルManipulation操作(Grasp、Place、ハンド制御)
開発ツールrpkスキル・タスク・アプリケーションのパッケージ生成器
開発ツールarchitecture_schemas / architecture_tools / std_skillsスキル定義のJSONスキーマ・検証・標準メッセージ
可視化・デバッグhri_rvizRVizでの3Dスケルトン等の可視化プラグイン
可視化・デバッグhri_visualizationカメラ画像への顔・身体・表情のオーバーレイ表示
可視化・デバッグrqt_human_radar / rqt_chat人物のレーダー表示/対話デバッグ用チャットUI
可視化・デバッグinteraction_simHRI研究用のROS 2シミュレーション環境
UI構築ui_server / ui_msgs / ros-qml-pluginQMLを使った対話的UIの表示・ROS連携

対応ロボット

区分ロボット特徴
商用PAL TIAGo7自由度アーム+昇降トルソーを持つ、研究向けモバイルマニピュレータ
商用PAL TIAGo Pro両腕7自由度、画面・LEDなどの対話機能を強化した上位版
商用PAL TIAGo Pro Head表情豊かな頭部のみの単体版。社会的信号・視線研究向け
商用PAL ARI受付・案内・エンターテインメント向けの、表情豊かな顔とジェスチャーを持つ社会的ロボット
OSS・研究用EMOROBCAREICMAT/IIIA(CSIC)が開発する、自閉症療育向けの低コストな社会的ロボット(球状の台座+3自由度の頭部)
  • 開発元のPAL Robotics社自身が、TIAGo・ARIといった商用ロボットシリーズを展開しており、ROS4HRIはこれらのロボットの人間認識基盤としても使われている
  • EUのHorizon Europe研究助成を受けて開発されている

メッセージ定義: hri_msgs

  • ROS4HRIでは、人間の認識結果を表現するための専用メッセージ型が定義されている。実際にリポジトリをクローンして、msg/以下の17種類のファイルを確認した

カテゴリ一覧

  • 17種類のメッセージは、内容に応じて5つのカテゴリに分けられる
カテゴリ対象含まれるメッセージ
顔・表情顔から読み取れる情報Expression、FacialActionUnits、FacialLandmarks、Gaze
身体身体から読み取れる情報Skeleton2D、Gesture、BodyPosture
属性・音声年齢・性別や、音声から読み取れる情報SoftBiometrics、AudioFeatures、LiveSpeech
集団・ID管理・関係性複数の人物・特徴の間の関係Group、IdsList、IdsMatch、EngagementLevel
幾何的なプリミティブ型他のメッセージから使われる座標の基礎型NormalizedPointOfInterest2D、NormalizedPointOfInterest2DStamped、NormalizedRegionOfInterest2D

顔・表情に関するメッセージ

メッセージ内容
Expression表情を、カテゴリ(neutral、angry、happyなど25種類、Chambers 2020年MSc論文・Ekmanの基本6感情モデルに基づく)と、Valence/Arousalモデル(感情のpositive/negative度を表すvalence、興奮度を表すarousal、それぞれ-1.0〜+1.0)の両方で表す
FacialActionUnitsEkmanが開発したFACS(Facial Action Coding System)の命名に従い、99種類のAU(Action Unit、表情を作る顔の部位ごとの動き)それぞれの強度と確信度を配列で表す。頭の向き・視線の向き・顔の可視性なども含む
FacialLandmarksdlib・OpenPoseの規約に従った70点の顔のランドマーク(輪郭・眉・目・鼻・口など)を、正規化された2D座標の配列として表す
Gaze視線の送り手(sender)と受け手(receiver)の人物IDを表す。空文字列はロボット自身を意味する

身体に関するメッセージ

メッセージ内容
Skeleton2DOpenPoseのCOCOモデルの規約に従い、鼻・両肩・両肘・両手首・両腰・両膝・両足首・両目・両耳という18点の骨格キーポイントを、正規化された2D座標の配列として表す
Gesture手を顔に当てる・腕を組む・手を挙げる・手を振るといった、身体から検出されるジェスチャーを表す
BodyPosture立っている・座っている・しゃがんでいる・寝ているという、身体の姿勢を記号的に表す

属性・音声に関するメッセージ

メッセージ内容
SoftBiometrics推定した年齢・性別を、それぞれの確信度(confidence)付きで表す
AudioFeaturesINTERSPEECH 2009 Emotion Challengeで選定された16種類の音声特徴(ゼロ交差率、RMSフレームエネルギー、ピッチ、調波対雑音比、MFCC1〜12)を、openSMILEツールキットで抽出した値として表す
LiveSpeech音声認識の途中結果(incremental)と最終結果(final)、その確信度、ISO 639-1の言語コード+ISO 3166-1の地域コードによるlocale(例: en_GB)を表す

集団・ID管理・関係性に関するメッセージ

メッセージ内容
GroupグループIDと、そのグループに属する人物IDのリストを表す
IdsList顔ID・身体ID・人物IDなど、ROS4HRIのIDのリストを表す汎用的なメッセージ。例えば/humans/faces/trackedで、現在検出されている顔のIDの一覧が配信される
IdsMatch一時的なID(顔・身体・声)と永続的なID(人物)の対応候補を、確信度付きで表す。確信度0.0は「この2つは対応しない」という意味を持つ特別な値。/humans/candidate_matchesに配信され、Mr. Potato algorithmの入力になる
EngagementLevel人間がロボットにどれだけ関わっているかを、unknown・disengaged・engaging・engaged・disengagingという5段階の離散値で表す。/humans/persons/<person_id>/engagement_statusで配信される

幾何的なプリミティブ型

  • Skeleton2DやFacialLandmarksなど、複数のメッセージから共通して使われる、座標を表すための基礎的な型も定義されている
型内容
NormalizedPointOfInterest2D正規化された(0.0〜1.0の範囲の)点の座標(x, y)と、その点の確信度(c)を表す
NormalizedPointOfInterest2DStampedNormalizedPointOfInterest2Dにタイムスタンプ付きヘッダを加えたもの
NormalizedRegionOfInterest2D正規化された矩形領域を、左上(xmin, ymin)と右下(xmax, ymax)の座標と確信度(c)で表す

hri_actions_msgs: アクション・意図の定義

  • hri_msgsが「知覚(Perception)」側のメッセージを扱うのに対し、hri_actions_msgsは「アクション(Action)」側、つまりロボットに何をさせるか・人間が何を意図しているかを表すメッセージを扱う

Intent: 意図の表現

  • Androidのintentに着想を得た、ロボットに実行させたい操作を抽象的に表すメッセージ
  • intent(どの操作か)と、data(JSON形式のパラメータ)という2つの必須フィールドを持つ
  • dataの中身は、動作主(agent)・対象(object)・目的地(goal)・受け手(recipient)という、言語学の主題役割(thematic role)に基づくキーで指定する
  • 例えば「キッチンにいるLukeに食材を持っていって」は、intent: BRING_OBJECT、data: {"object": "groceries", "goal": "kitchen_1", "recipient": "person_luke"}のように表現される
定義済みIntent意味
RAW_USER_INPUT意図の抽出に失敗した場合のフォールバック
ENGAGE_WITH相手と関わりたい
MOVE_TO指定した場所に移動する
GUIDE誰かをどこかへ案内する
GRAB_OBJECT / BRING_OBJECT / PLACE_OBJECT物を取る/持っていく/置く
GREET挨拶する
SAY指定したテキストを話す
PRESENT_CONTENT画面などで決められたコンテンツを提示する
PERFORM_MOTIONダンスや手を振るなどの動作を実行する
START_ACTIVITY / STOP_ACTIVITYスクリプト化された振る舞いの開始・停止
WAKEUP / SUSPENDシステムの再起動・休止
  • Intentには、他にもsource(ロボット自身・リモート監督者・不明な相手のどれが発した意図か。REP-155準拠の場合は人物IDも使える)、modality(発話・動作・タッチスクリーン・内部処理のどれで伝えられたか)、priority(0〜255)、confidence(0.0〜1.0)といったフィールドがある

その他のメッセージ

メッセージ内容
ActivityListSTART_ACTIVITY/STOP_ACTIVITY Intentで起動できる、アクティビティ名の一覧
ClosedCaption発話者ID・テキスト・localeを持つ、字幕(クローズドキャプション)表示用のメッセージ
LookAtWithStyle注視対象の3D座標に加え、目だけ/頭だけ/両方(デフォルト)という、視線の動かし方のスタイルを指定する

アクション定義

  • ROS 2のAction(Goal・Result・Feedbackからなる、時間のかかる処理向けの通信方式)として、以下のようなものが定義されている
アクション内容
LookAt指定した3D座標を注視する
ApplicationControl下位のアプリケーションコントローラーにJSON形式のパラメータを渡す
SelfPresentation自己紹介などの、複数のフレーズからなる発話を実行し、進行状況(現在のフレーズ数/総フレーズ数)をフィードバックする
FaceOverlay顔のディスプレイに画像・アニメーションを重ねて表示する。表示時間・レイヤー(背景/前景)・レイアウト(両目に表示/左右の目ごとなど)・スケール・位置・フェード効果を指定できる
PointTrajectory複数の3D座標点と、それぞれに到達する時刻を指定し、軌道を描かせる

hri_person_manager: 顔・身体・声を1人の人物に統合する

  • カメラ・マイクなど複数のセンサーから得られる顔・身体・声の検出結果は、それぞれ別々に検出されるが、それらが同じ1人の人物のものだと紐付けなければ、ロボットは人間を1人の人物として認識できない
  • hri_person_managerは、検出された顔・身体・声を集約し、一貫した「人物(person)」として扱い、それぞれの検出結果への紐付けを外部に公開するノード

Mr. Potato algorithm

  • 他のノード(顔認識ノードなど)が/humans/candidate_matchesに投稿する、IdsMatchメッセージ(特徴同士・特徴と人物の対応候補、確信度付き)を受け取り、確率的なグラフ(person features graph)を構築する
  • アルゴリズムは、クローンしたリポジトリのdoc/ALGORITHM.mdに、以下のような形式的な定義がある
    • 特徴(feature): 顔・身体・声のいずれか
    • 許容されるパス(permissible path): 同じ種類のノードを2つ以上含まない経路。尤度はパス上の尤度の積
    • 関連(association): 閾値(デフォルト0.5)を超える尤度の許容パスで結ばれた、ノードの連結集合
    • 要件として、(1) 全ての関連の尤度の合計を最大化する、(2) 全ての特徴は必ず1人の人物(匿名も含む)に紐付く、(3) 人物に紐付かない特徴は匿名の人物に紐付ける、(4) 間接的なパスが切れた場合も、尤度が閾値を超えていれば直接的な関連として安定的に維持する、という4点が定義されている
  • この手法は、“Probabilistic fusion of persons’ body features: the Mr. Potato algorithm"という論文として発表されている(DOI: 10.1145/3610977.3637479)

パラメータ

パラメータデフォルト値意味
match_threshold0.5顔・身体・声を同じ人物とみなす最小尤度
reference_framemap人物のTFフレームを配信する基準フレーム。固定された基準フレームを使うことで、人物が一度カメラの視界から外れても、最後に見えた位置に留まり続ける
personal_distance1.2m近接学(proxemics)に基づく、個人距離圏の上限
social_distance3.6m社会距離圏の上限
public_distance20m公共距離圏の上限

主なトピック

トピック内容
/humans/candidate_matches他ノードから受け取る、特徴同士・特徴と人物の対応候補
/humans/persons/known・/humans/persons/tracked人物の一覧
/humans/persons/in_{personal|social|public}_space各近接圏にいる人物の一覧
/humans/persons/<person_id>/proxemic_space個々の人物の近接圏
/humans/graph特徴同士の対応関係をDOT形式で可視化したもの

libhri: 人間の認識結果への簡単なアクセス

  • ROS4HRIの各トピックを生のまま扱う代わりに、HRIListenerというクラスを通じて、検出された人間・顔・身体をオブジェクトとして扱える、簡易的なAPIを提供する
  • C++実装のhriパッケージと、それをPybind11でラップしたPython版のpyhriパッケージがある

チュートリアル

  • ROS4HRIには、公式サイトの新しいチュートリアルと、IROS22で行われた(ROS 1 Noetic時代の)より古いチュートリアルの、2種類がある

新しいチュートリアル: LLM対応インタラクティブアプリの構築

  • 公式サイトには「ROS4HRIの知覚・スキルを使って、LLM対応のインタラクティブアプリを構築する」という、実践的なチュートリアルが用意されている
  • 使われているツール・ノードは以下の通り
層ツール・ノード役割
知覚gscamWebカメラの映像を配信
知覚hri_face_detect顔検出(確信度の閾値付き)
知覚hri_emotion_recognizer検出した顔からの表情分類
知識・推論knowledge_coreOWL/RDFベースの記号的な知識ベース(Webビューア付き)
知識・推論hri_person_manager顔・身体・声を1人の人物に統合
対話dialogue_manager発話の入出力管理
対話ollamaローカルLLM推論(カスタムのチャットボットが利用)
対話rqt_chatテキストでの対話確認用プラグイン
可視化rqt_human_radar検出した人物・空間的な関係のレーダー表示
制御・表出interaction_sim2Dのソーシャルインタラクション・シミュレーター
  • このチュートリアルで出てくるGUIは、ロボット・人間のアバターをSVGで描いた2Dの見下ろし型シミュレーター(interaction_sim)と、procedural(手続き的)に生成された目だけの表情豊かなロボットの顔の2種類がある。アニメ風に見えたのは、おそらくこのどちらか
  • 手順は、Part 0(Docker環境構築)→Part 1(顔検出の動作確認)→Part 2(シミュレーターと知識ベースの導入)→Part 3(rpkでミッションコントローラーを生成し、/skill/sayでの発話や、検出した表情をロボットの表情にそのまま反映する「感情ミラーリング」を実装)→Part 4(ollamaでのLLM統合、意図抽出のプロンプト設計、知識ベースを使ったコンテキスト付与)という流れで進む

古いチュートリアル: IROS22のROS4HRI完全ウォークスルー

  • ROS 1 Noetic時代に、IROS22で実施された、1日がかりの完全なチュートリアル
  • 題材として「OfficeBots」という、HRI研究用のマルチプレイヤーゲーム型シミュレーターを使っている。キャラクターを選んでプレイする、ゲームらしい見た目のGUIを持つ
  • 3部構成になっている
パート内容
Part 1OfficeBotsを使い、ROS4HRIのAPIに触れながら、視線の合致度(mutual gaze)を使ったエンゲージメント推定器を自作する
Part 2Webカメラの実データを使い、顔検出(hri_face_detect)・骨格検出(hri_fullbody)・ジェスチャー認識(waving検出)を実装する
Part 3Rasaで作ったチャットボットと、音声認識結果(LiveSpeech)を統合した、マルチモーダルなチャットボットを完成させる
  • Part 1のエンゲージメント推定は、ロボットと人物が互いを見ている度合いを表す相互視線の指標$M_{RP}$(ロボットの視野内での人物の位置と、人物の視野内でのロボットの位置、それぞれの光軸からの距離の積)と、それを距離で正規化した社会的エンゲージメントの指標$S_{RP}=\min(1, M_{RP}/\text{dist}(R,P))$を使う
  • Part 2のhri_face_detect・hri_fullbody(2D/3D骨格検出)はどちらもGoogleのMediaPipeを使っている。骨格検出の結果はrobot_state_publisherとhuman_descriptionパッケージのURDFを使って、3Dの関節状態・TFツリーとして公開される
  • waving(手を振る)ジェスチャーの検出は、肩・肘・手首の間の距離(肩肘間・肘手首間・肩手首間)が、それぞれ特定の範囲(0.1〜0.25、0.1〜0.25、0.15〜0.25)に収まるかどうかで判定する、シンプルな閾値ベースの手法
  • Part 3では、音声認識結果を/humans/voices/<id>/speechからRasaのチャットボットサーバーに送り、その応答を/sayトピック(ROS4HRI標準ではない、OfficeBots独自のトピック)でロボットに発話させる
  • 顔と人物の対応付けも、rostopic pub /humans/candidate_matches hri_msgs/IdsMatchのように、手動でIdsMatchメッセージを配信することで体験できる

今後の展望: 生理指標への拡張(Sense4HRI)

  • Scheibl, Leichert, Görmez, Wrede (2026, Bielefeld University) “Sense4HRI: A ROS 2 HRI Framework for Physiological Sensor Integration and Synchronized Logging”(arXiv:2603.19914)は、ROS4HRIを生理指標(EEG・ECG・PPGなど)の統合に拡張する論文
  • 生理信号はHRIにおけるユーザーの心理状態の推定に重要性が増しているが、ROS 2ベースのHRIフレームワークには、こうしたデータストリームを標準化された形で統合する再利用可能な仕組みがまだ無いという問題意識から提案されている
  • センサードライバと解釈ロジックを分離し、PhysioRaw.msgという汎用的なメッセージ形式、ROS4HRIの命名規則に準拠した階層的なトピック名、複数センサーを同期させるためのデバイス側タイムスタンプなどを導入している
  • Polar社のECG・PPGセンサーと表情認識を統合したプロトタイプで、複数モダリティを組み合わせた感情状態の推定を実証している
  • ROS4HRI自体はこれまで顔・身体・声・表情といった外部から観測できる情報を中心にしていたが、Sense4HRIのような拡張によって、生理指標という内部状態の推定も同じ命名規則・名前空間の中に統合していく方向性が今後見込まれる

まとめ

  • ROS4HRI(REP-155)は、ROS上で人間を認識・表現するための標準的なメッセージ型・規約を定めた、OSSのフレームワーク
  • REP-155は、Person ID(永続)・Face/Body/Voice ID(非永続)という4種類のIDと、/humans/以下の名前空間、face_<faceID>などの座標フレームを定義している。汎用的な単一メッセージではなく、サブトピックに分割することでモジュール性を確保している
  • 全体としては、知覚(顔・身体・声の検出)→人物統合(Mr. Potato algorithm)→インタラクションスキル(発話・注視・ナビゲーション・操作)→UI・可視化という流れを、一貫したパッケージ群として提供するエコシステムになっている
  • 開発元のPAL Robotics社のTIAGo・ARIといった商用ロボットや、CSICのEMOROBCAREのような研究用ロボットで実際に使われている
  • hri_msgsが、表情(カテゴリ+Valence/Arousal)・FACS準拠のAU・顔のランドマーク・視線・骨格・ジェスチャー・姿勢・年齢性別・音声特徴・音声認識結果・グループ・ID対応候補(IdsMatch)・エンゲージメント・座標のプリミティブ型を含む、全17種類のメッセージ型を定義している
  • hri_actions_msgsが、知覚の反対側にあたる「アクション」側として、Androidのintentに着想を得たIntent(主題役割に基づくdata、14種類の定義済みIntent)や、LookAt・FaceOverlay・SelfPresentationといったROS 2 Actionを定義している
  • hri_person_managerが、別々に検出される顔・身体・声を、確率的グラフマッチング(Mr. Potato algorithm、尤度の積で計算される許容パスと、要件を満たす最大尤度の分割)によって1人の人物として統合する
  • 近接学に基づく3つの距離圏(personal/social/public)と、固定された基準フレームによる位置の記憶も、hri_person_managerの機能の一部
  • libhriが、これらの情報にオブジェクト指向的にアクセスできる簡易APIを提供する
  • 公式サイトのLLM対応チュートリアルでは、知覚(顔検出・表情認識)・知識ベース(knowledge_core)・対話(ollamaによるローカルLLM)・シミュレーター(interaction_sim)までを一通り組み合わせた、実践的な構築手順が示されている
  • IROS22の古いチュートリアルでは、OfficeBotsというゲーム型シミュレーターを使い、相互視線に基づくエンゲージメント推定・骨格検出によるジェスチャー認識・Rasaチャットボットの統合を、実際にコードを書きながら体験できる
  • Sense4HRIのように、ROS4HRIの命名規則・名前空間を踏襲しつつ、生理指標のような新しいモダリティを統合する拡張も登場している

参考文献

Built with Hugo
テーマ Stack は Jimmy によって設計されています。