Package: triorb_job_state_manager

  • Jobおよびロボットの管理を行う
  • Jobのcreate要求が来たタイミングでMutexの取得、Parallel move managerとの接続、Sync move managerとの接続を行う
  • Jobのterminate要求/Compleatのタイミングで上記Mutexの解放と接続の切断を行う

Publisher

剛体グループ(Job)のState

  • Topic: (prefix)/collab/group/state
  • Type: std_msgs/msg/String
  • Frequency: 1.0Hz
  • Usage:
    root@orin-nx-4260:/ws# ros2 topic echo /collab/group/state --full-length
    data: '{"state": "in progress (1/3)", "managed_workers": ["A4298950"], "in_progress": "{\"mode\": \"pararell_move\", \"move\": [{\"robot\": \"A4298950\", \"route\": []}]}"}'
    

    剛体グループ(Job)のResult

  • Topic: (prefix)/collab/group/result
  • Type: std_msgs/msg/String
  • Usage:

Parallel moveのリクエスト

  • Topic: (prefix)/collab/parallel/request
  • Type: std_msgs/msg/String
  • Usage:

Parallel moveの終了リクエスト

  • Topic: (prefix)/collab/parallel/terminate
  • Type: std_msgs/msg/String
  • Usage:

Sync moveのリクエスト

  • Topic: (prefix)/collab/sync/request
  • Type: std_msgs/msg/String
  • Usage:

Subscriber

剛体グループ(Job)を終了削除する

  • Topic: (prefix)/collab/group/terminate
  • Type: triorb_static_interface/srv/SetString
  • Usage:
    root@orin-nx-4260:/ws# ros2 topic pub -1 /collab/group/terminate triorb_static_interface/srv/SetString "{data:'sample_job_001'}"
    

Parallel moveのStaet

  • Topic: (prefix)/collab/parallel/state
  • Type: std_msgs/msg/String
  • Usage:

    Parallel moveのResult

  • Topic: (prefix)/collab/parallel/result
  • Type: std_msgs/msg/String
  • Usage:

Sync moveのStaet

  • Topic: (prefix)/collab/sync/state
  • Type: std_msgs/msg/String
  • Usage:

    Sync moveのResult

  • Topic: (prefix)/collab/sync/result
  • Type: std_msgs/msg/String
  • Usage:

Service

剛体グループ(Job)を新規作成する

  • Topic: (prefix)/collab/group/create
  • Type: triorb_static_interface/srv/SetString
  • JSON description:
    {
      job_name : (jobの名前),
      task_name : (taskの名前),
      workers : 
      [
          (Robot1のHash),
          (Robot2のHash)
      ],
      map : 
      {
          name : (地図ファイル名),
          ip : (地図ファイルを持っているロボットのIPアドレス)
      },
      task_info : 
      [
          {
              mode : (動きの種別 ex. pararell_move),
              move : 
              [
                  {
                      robot : (ロボット1のHash),
                      route : (ロボット1の移動経路情報)
                  },
                  {
                      robot : (ロボット2のHash),
                      route : (ロボット2の移動経路情報)
                  }
              ]
          },
          {
              mode : (動きの種別 ex. pararell_into),
              move : 
              [
                  {
                      robot : (ロボット1のHash),
                      route : (ロボット1の移動経路情報)
                  },
                  {
                      robot : (ロボット2のHash),
                      route : (ロボット2の移動経路情報)
                  }
              ]
          },
          {
              mode : (動きの種別 ex. sync_lift),
              direction : (リフターUP/Down),
              workers : [
                  (Robot1のHash),
                  (Robot2のHash)
              ]
          },
          {
              mode : (動きの種別 ex. sync_move),
              route : (荷物の移動経路情報)
              workers : [
                  (Robot1のHash),
                  (Robot2のHash)
              ]
          },
          {
              mode : (動きの種別 ex. sync_lift),
              route : (リフターUP/Down)
              workers : [
                  (Robot1のHash),
                  (Robot2のHash)
              ]
          },
          {
              mode : (動きの種別 ex. pararell_outof),
              move : 
              [
                  {
                      robot : (ロボット1のHash),
                      route : (ロボット1の移動経路情報)
                  },
                  {
                      robot : (ロボット2のHash),
                      route : (ロボット2の移動経路情報)
                  }
              ]
          }
      ]
    }
    
  • Usage: ```bash root@orin-nx-4260:/ws# ros2 service call /collab/group/create triorb_static_interface/srv/SetString
    “{request: {‘{
    “‘“job_name”’” : “‘“sample_job_001”’”,
    “‘“task_name”’” : “‘“sample_task”’”,
    “‘“workers”’” :
    [
    “‘“A4298950”’”
    ],
    “‘“map”’” :
    {
    “‘“name”’” : “‘“sample_map.sqlite3”’”,
    “‘“ip”’” : “‘“192.168.21.26”’”
    },
    “‘“task_info”’” :
    [
    {
    “‘“mode”’” : “‘“pararell_move”’”,
    “‘“move”’” :
    [
    {
    “‘“robot”’” : “‘“A4298950”’”,
    “‘“route”’” : []
    }
    ]
    },
    {
    “‘“mode”’” : “‘“pararell_into”’”,
    “‘“move”’” :
    [
    {
    “‘“robot”’” : “‘“A4298950”’”,
    “‘“route”’” : []
    }
    ]
    },
    {
    “‘“mode”’” : “‘“sync_lift”’”,
    “‘“direction”’” : “‘“up”’”
    }
    ]
    }’}}”

requester: making request: triorb_static_interface.srv.SetString_Request(request=[’{ “job_name” : “sample_job_001”, “task_name” : “sample_task”, “workers” : [ “A4298950” ], “map” : { “name” : “sample_map.sqlite3”, “ip” : “192.168.21.26” }, “task_info” : [ { “mode” : “pararell_move”, “move” : [ { “robot” : “A4298950”, “route” : [] } ] }, { “mode” : “pararell_into”, “move” : [ { “robot” : “A4298950”, “route” : [] } ] }, { “mode” : “sync_lift”, “direction” : “up” } ]}’])

response: triorb_static_interface.srv.SetString_Response(result=’success’) ```

パラメーター

  • PUBLISH_STATE_FREQ_MS : SteteをPublishする時間間隔[ms]
  • STATE_MANAGEMENT_FREQ_MS : Stateを管理する時間間隔[ms]
  • NO_STATUS_TIMEOUT : ステータスが返ってこない場合にタイムアウト判断する時間 [ms]